|
Abruzzi
|
 |
« : Mayıs 14, 2008, 11:32:07 ÖÖ » |
|
ISLETIM SISTEMININ YUKLENMESI, MULTIUSER ORTAMIN BASLATILMASI: 1. Sistem power on yap[ldiginda sistem diskinin 0. Blogundaki boot program[ okunur. Bu program "bootstrap loader" olarak bilinir. (Diskin 0. Blogu ozel bir yerdir. Bu bloga isletim sistemi komutlar[ ile ulas[lamaz.)
2. Bu program daha sonra disk uzerindeki boot program[n[ bellege yukler. Ve boot program[ cal[smaya baslar.
3. Boot program[ "UNIX kernel" [ bellege yukler. Boylece Process Id'si (=PID) 0 olan process,yani UNIX kernel cal[smaya baslar.
4. Kernel daha sonra PID=1 olan "init" process'ini yarat[r. Bundan sonraki islemlerin tumunu init process'i gerceklestirir.
5. Init process'i herbit terminal say[s[ kadar "getty" processlerini yarat[r. Bu process'in cal[smas[yla birlikte terminallere "login" mesaj[ gelir. (Process yaratma islemi "fork system call" [ [ ile gerceklestirilir.)
6. Ekranlara gelen "login" mesaj[n[n karsisina gecerli bir kullanici ismi yaz[ld[g[nda getty process'i "exec system call" [ ile "login" program[na donusur. ("exec system call" ile yeni bir process yara- tilmaz.) 7. Login program[ kullan[c[ ismini al[r ve gerekli kontrollar[ yap- t[ktan sonra yine exec system call'[ ile "shell"i execute eder. Boylece ekranlara "shell prompt"u gelir.
NOT: CTRL-D ile logout olundugunda, getty process'i sonlanmis olur. Bu durumda "father process" olan init process'i ayn[ terminal icin yeni bir getty process'i yarat[r.
........... : BOOT : :.........: : : ....V...... /etc/inittab :PID=0 : .................. : UNIX : : Initialization : :.........: .: Table : : . :................: : . ......V........ . /etc/rc :PID=1 : . ................. : :. : Shell : .......: INIT :...............: Script : : :.............: :...............: : . . : . . : . . /etc/gettydefs : ......... ......... ................. : : : : : : Terminal : : : GETTY : : GETTY :.............: Settings : : :.......: :.......: :...............: : : : : : : : : : /etc/passwd : ....V.... V ................. : : : : Password : : : LOGIN :.........................: File : : :.......: :...............: : : : : /etc/profile : : ................. : ....V.... : Shell : : : :.........................: Script : : : SHELL :. . :...............: : :.......: . $HOME/.profile : : . ................. : : . : Shell : : : . : Script : :......: :...............:
SHUTDOWN ISLEMI : -----------------
Shutdown program[ sistemi kapatmak icin kullan[l[r.Program sistem konsolundan "root" kullan[c[s[ olarak baslat[l[r. Islemi baslatmadan once "/"directory'de olunup olunmadigi kontrol edilmelidir.
Shutdown islemi asag[daki uc komuttan birisi verilerek baslat[l[r :
1. shutdown ==> Interactive (soru cevap biciminde) olarak shutdown islemini gerceklesti- rilir.Komut verildikten 60 saniye ic- inde kullan[c[lar[n logout olmalar[ gerekir.
2. shutdown -gN ==> Burada N, 0 ile 9 aras[nda bir say[ olmal[d[r."-g"opsiyonu ile,N'in 10 kat[ kadar bir sure icinde (saniye) olarak) shutdown isleminin baslat[la- cag[ belirtilir.Bu da bir onceki is- lem gibi interactive olarak gercekles- tirilir.
3. shutdown -y ==> Bu komut kullan[larak yap[lan islem interactive degildir. Ayr[ca kullan[- c[lara hicbir uyar[ mesaj[ gonderilmez.
Shutdown islemi baslad[g[nda tum terminallere asag[daki uyar[lar gelir:
Broadcast Message from root (console) Date ... PLEASE LOGIN OFF NOW { { { All processes will be killed in ... seconds
Bu durumda terminallerde cal[sanlar[n CTRL-D tusunu kullanarak log off olmalar[ gerekir.
Sistem konsoluna ise asag[daki mesajlar gelir :
SHUTDOWN PROGRAM (gunun tarihi) Broadcast Message from root (console) Date ... SYSTEM BEING BROUGHT DOWN NOW { { { Busy out (push down) the appropriate phone lines for this system.
Eger islem interactive ise asag[daki sorular sorulur :
- Do you want to continue ? (y or n) :
Isleme devam etmek isteniyorsa "y" ; istenmiyorsa "n" girilir.
- Do you want to go in SINGLE USER mode ? (y or n) : Eger single user mode'da calisilmak isteniyorsa ekrana asag[daki mesajlar ve shell prompt'u gelir :
All currently running processes will be killed Wait for 'INIT : SINGLE USER MODE' before halting
Single user mode'da calisma sona erince sistemi kapatmak icin asag[daki uc komut s[ras[yla verilir.
sync (RETURN) sync (RETURN) sync (RETURN)
Eger islem interactive degilse ya da single user mode'a gecilmemis ise asag[daki mesajlar ile sistemin kapanmas[ islemi surdurulur :
INIT : New run level : 0 System services are now being stopped. All currently running processes will now be killed. System is down.
Bu mesajlardan sonra sistemin "DC ON" lambas[ soner, yaln[zca "AC PRESENT" lambas[ yan[k kal[r. Bu durumda art[k sistem arkadan power off yap[labilir.
INIT PROCESS : --------------
Init process'in as[l gorevi, sistem diskindeki /etc/inittab file '[ndaki tan[mlar[ kullanarak ilgili process'leri yaratmakt[r.
Init process'i cesitli run-level'larda (isleyis duzeyi) calisabilir. (0-6,s,S,q,Q gibi)
Init, kernel taraf[ndan baslat[ld[g[nda ilk olarak /etc/inittab file'[na bakar.Eger bu file yok ise, default olarak "S" ya da "s" mode'da (SINGLE USER mode) calisir. Eger file var ise. bu durumda file'da "initdefault" tan[m[n[ arar. Eger bu tan[m yok ise bu durumda sistem konsolundan run-level degerinin girilmesini bekler. Eger "s" girilirse, bu durumda SINGLE USER mode'de cal[s[r ve /etc/ inittab ile iliskisi kalmaz. Eger initdefault tan[m[ var ise, o zaman buradaki run-level degerini al[r ve bu level'da cal[smaya baslar. Daha sonra ise, ilgili run-level'da calismas[ gereken diger process' leri de baslat[r.
\rnegin, /etc/inittab 'de asagidaki tan[mlar var ise; is:2:initdefault . . co:1234:respawn:/etc/getty console console ....1 01:2:respawn:/etc/getty tty01 9600 ....2 02:2:respawn:/etc/getty tty02 9600 ....3 . . Bu durumda run-level 2'dir. Ve 1,2,3 'uncu sat[rlar isleme al[n[r. Yani getty process'i console, tty02 ;de cal[st[r[l[r.(Multiuserenv.)
Herbir getty process'i init taraf[ndan yarat[l[r (child process). Getty process'leri yarat[ld[ktan sonra init beklemeye baslar (wait state). Eger getty process'lerinden bnirisinin sonlad[g[na iliskin bir sinyal al[rsa, bu durumda /etc/utmp ve /etc/wtmp file'lar[n[ gunler (Bu file'larda yarat[lan process'lere iliskin bilgiler vard[r).
Getty process'lerinden birisinin sonlanmas[, asag[daki islemlerden herhangi birisinin gerceklesmesi demektir :
- powerfail sinyali - init'e, init taraf[ndan run-level'[ degistiren bir sin- yalin gelmesi
Bu durumda init process'i /etc/inittab file'[n[ yeniden gozden geci- rir (Init file'[n[n tekrar gozden gecirilmesi islemi "init q" kom- utu verilerek de yap[labilir.) :
- Eger powerfail sinyali (SIGPWR) alm[s ise, bu durumda /etc/inittab file'[nda yaln[zca powerfail ile ilgili sa- t[rlar isleme sokulur.
- Eger run-level 'i degistiren bir sinyal alm[s ise bu durumda yeni run-level 'da tan[ms[z tum process'lere once uyar[ sinyali (SIGTERM); daha sonra ise kill sinyali (SIGKILL) gonderir. Boylece processler sonland[r[lm[s olur. Daha sonra ise yeni run-level 'da tan[ml[ olan processler cal[st[r[l[r.
/etc/inittab file'inin yapisi: ------------------------------ /etc/inittab file'inin herbir satiri asagidaki bicimdedir:
id:rstate:action:process
Satirlar new-line karekteri ile sonlandirilir.Eger new-line karak- terinden once "bacslash"karakteri yazilirsa, bu bir sonraki sa- tira devam edecegini bildirir.
id : 1 vaeya 2 karakter uzunlukta olabilir. Ilgili tanimi belir- ler.
rstate : Tanimlanan process'in hangi run-level'lar icin gecerli ol- dugunu belirler. (ornegin run-level "1" ise, rstate kisminda "1" yazan processler calistirilir.) Rstate 0-6 arasinda bir tamsayi olabilir. Bu sayilarin kombinasyolarida gecerlidir. Rstate a,b,c gibi degerlerde olabilir. Bunlar gercek run-level degerleri degildir. Yanlizca ozel olarak calis- dirilamazlar.Bu tur process'lerin sonlandirilabilmeleri icin init'in SINGLE USER mode'a girmesi gerekir. Eger rsteta belirtilmemis ise, bu durumda process 0-6 ara- sindaki herhangibir run level'da calisabilir.
action : Bu bilgi alani, init'e ilgili process'in nasil calistiri- lacagina iliskin bilgi verir. Asagidaki degerlerden herhan- gibirisi olabilir :
- respawn : Eger ilgili process calisir durumda degise process'i baslatir ve kendisi /etc/inittab'i taramaya devam eder. Eger ilgili process calisir durumda ise /etc/inittab'i tarama isini sur- durur. -wait : Process'i baslatir ve bitene kadar bekler.
- once : Process'i baslatir ve bitmesini bek- lemez. Process yalnizca bir kez bas- latilir. Bitince tekrarbaslatilmaz. - boot : Init process'inin bellege boot edil- mesi sirasinda baslatilir. Bitmesi beklenmez. Bittiginde yeniden basla- tilmaz. - bootwait : Init process'inin bellege boot edilme- si sirasinda baslatilir. Bitmesi bek- lenir. Bittiginde yeniden baslatilmaz. - powerfail : Init'e powerfail sinyali (SIGPWR) geldiginde baslatilir ve bitmesi beklenir. - off : Ilgili process eger calisir durumda ise once uyari sinyali (SIGTERM) gon- derilir. Ve 20 sn. bekledikten sonra kill sinyali (SIGKILL) gonderilir. il- gili process calisir durumda degilse bu process tanimi goz onune alinmaz. - ondemand : Fonksiyon olarak respawn'in aynisidir. Yanlizca run-level'lardan ayirmak icin rstate alanina a,b,c, gibi degerler yazilir. - initdefault : Init'in hangi run-level ile calisaca gi borada tanimli olan rstate'de be- lirlenir. Eger rstate 'de herhangibir- sey belirtilmemisse o zaman sistem konsolundan init'in hangi run-level'da calisacagi sorulur. - sysinit : Bu alan yalnizca init'in kullanicagi konsolun initialize islemini yapar. (run-level'in sorulacagi konsol)
process : Gecerli bir shell komutu olmalidir. Burada yazili olan komut; fork system call'i ile yaratilan shell'e bildirilir ve basina "exec"konarak asagi- daki bicimde calistirilir: sh-c 'exec komut' (-c ; komutun string'den okunacagini belirtir.)
Asagida ornek bir /etc/inittab file'i gorulmektedir :
is:2:initdefault: bl::bootwait:/etc/bcheckrc </dev/console >/dev/console 2&1 &bootlog bc::bootwait:/etc/brc 1>/dev/console 2>&1 `bootrun command sl::wait :(rm -f /dev/syscon;ln /dev/systty /dev/syscon;) 1>/dev/console 2>&1 rc::wait:/etc/rc 1>/dev/console 2>&1 `run com pf::powerfail:/etc/powerfail -t3 1>/dev/console 2>&1 sy:a:once:/etc/shutdown -g1 -y 1>/dev/console 2>&1 `stand-by routine c1:0:wait:/etc/shutsys 0 1> /dev/console 2>&1 of:0:wait:/etc/off co:1234:respawn:/etc/getty console console 01:2:respawn:/etc/getty tty01 9600 02:2:respawn:/etc/getty tty02 9600 03:2:respawn:/etc/getty tty03 9600 04:2:respawn:/etc/getty tty04 9600 05:2:respawn:/etc/getty tty05 9600 06:2:respawn:/etc/getty tty06 9600 p7:2:off:/etc/stl tty07 tty seriale 10:2:off:/etc/getty tty10 9600 11:2:off:/etc/getty tty11 9600 12:2:off:/etc/getty tty12 9600 13:2:off:/etc/getty tty13 9600 14:2:off:/etc/getty tty14 9600 15:2:off:/etc/getty tty15 9600
GETTY PROCESS: --------------
Bu process /etc/inittab, /etc/gettydefs, /etc/ttytype gibi file'lar- dan aldigi bilgilere gore terminallere login promptunu getirir.
ornek olarak asagidaki /etc/inittab file'ini alalim:
is:2:initdefault . . . co:1234:respawn:/etc/getty console console 01:2:respawn:/etc/getty tty01 9600 02:2:respawn:/etc/getty tty02 9600 . .
Burada co,01,02 ile belirtilmis satirlarda getty process'i baslatilir. Process'in hangi hatlarda (line) calisacagi console, tty01, tty02 ile belirtilmistir. Bunlardan herbirisi /dev altinda bir device'a karsi ge- lir (special devices). Yine ayni satirdaki console, 9600 tanimlari ise /etc/gettydefs file'inda bir label'a karsi gelir. Getty process'i bu label'lardaki tanimlari kullanir. /etc/gettydefs file'inda hattin ile- tisim hizi, login mesajinin ne olacagi, terminal ozellikleri belirti- lir.
Asagida ornek bir /etc/gettydefs tanimi verilmistir:
console# B9600 HUPCL PARENB CS7 OPOST ONLCR # B9600 IXON ICRNL ISTRIP IGNPAR BRKINT OPOST ONLCR PARENB CS7 CREAD ISIG ICANON ECHOK ECHO TAB3 #Console login: #console
1200# B1200 HUPCL PARENB CS7 # B1200 IXON ICRNL ISTRIP IGNPAR BRKINT OPOST ONLCR PARENB CS7 CREAD ISIG ICANON ECHOK ECHO TAB3 #login: #1200
300# B300 HUPCL PARENB CS7 # B300 IXON ICRNL ISTRIP IGNPAR BRKINT OPOST ONLCR PARENB CS7 CREAD ISIG ICANON ECHOK ECHO TAB3 #login: #300
9600# B9600 HUPCL PARENB CS7 # B9600 IXON ICRNL ISTRIP IGNPAR BRKINT OPOST ONLCR PARENB CS7 CREAD ISIG ICANON ECHOK ECHO TAB3 #login: #9600
2400# B2400 HUPCL PARENB CS7 # B2400 IXON ICRNL ISTRIP IGNPAR BRKINT OPOST ONLCR PARENB CS7 CREAD ISIG ICANON ECHOK ECHO TAB3 #login: #2400
4800# B4800 HUPCL PARENB CS7 # B4800 IXON ICRNL ISTRIP IGNPAR BRKINT OPOST ONLCR PARENB CS7 CREAD ISIG ICANON ECHOK ECHO TAB3 #login: #4800
19200# B19200 HUPCL PARENB CS7 # B19200 IXON ICRNL ISTRIP IGNPAR BRKINT OPOST ONLCR PARENB CS7 CREAD ISIG ICANON ECHOK ECHO TAB3 #login: #19200
38400# B38400 HUPCL PARENB CS7 # B38400 IXON ICRNL ISTRIP IGNPAR BRKINT OPOST ONLCR PARENB CS7 CREAD ISIG ICANON ECHOK ECHO TAB3 #login: #38400
c8-9600# B9600 HUPCL CS8 # B9600 IXON ICRNL ISTRIP IGNPAR BRKINT OPOST ONLCR CS8 CREAD ISIG ICANON ECHOK ECHO TAB3 # login: #c8-9600
Yukaridaki herbir tanim, bos bir satirla birbirinden ayrilmistir. Ta- nimlar asagidaki kaliba uygun bicimde hazirlanir:
label initial-flags login-prompt next-label label :Buraya yazilan label, /etc/inittab file'inda getty process'i icin tanimlanmis olan bir degerdir. Cunki, getty process'i, /etc/gettydefs'deki hangi tanimi kul- lanarak terminali set edecegini buradan anlar. Genel- likle kullanilan deger hattin iletisim hizidir (Baud rate).
initial-flags :Eger terminal tipi getty komutunda verilmemisse, bu du- rumda buradaki degerler ile terminal set edilir. Bu de- gerler login islemine kadar gecerlidir.
final-flags :Login basladigi anda kullanilan degerlerdir.
login-prompt :Terminallere gelen login satirini belirtir.
next-label :Terminalden "break" karakteri gelirse, bir sonraki ta- nimin ne olacagini belirtir. Next-label'da yazili olan deger, /etc/gettydefs icinde aranir ve buradaki tanim lar uygulanir. Getty programi, hatlarda hangi tip terminallerin bulundugunu /etc/ttytype adli file'a bakarak anlar. Asagida /etc/ttytype file'ina ornek bir liste verilmistir:
console|hw72 tty01|hw72 tty02|hw72 tty03|hw72 tty04|hw72 tty05|hw72 tty06|hw72 tty07|hw72
Bu ornekte " " isaretinin sol tarafindakiler terminal hattini; sol ta- rafindakiler ise terminal tiplerini gosterir. Sag tarafdaki terminal tiplerinin tanimlari /etc/terminfo'da verilir.
LOGIN PROGRAMI : ----------------
Getty process'i calistiktan sonra terminallere "login" prompt'u gelir. Bu durumda gecerli bir kullanici ismi yazildiginda, getty login pro- cess'ini exec system call ile calistirir. Boylece login, getty pro- cess'inin yerine gecmis olur.
Login process'i calismaya basladiktan sonra ilk olarak /etc/passwd file'ina bakar. Bu file, kullanici tanimlarinin oldugu yerdir.
/etc/passwd file yapisi asagidaki bicimdedir: ----------- name:password:uid:gid:comment:homedir:shell
Alanlar birbirlerinden ":" ile ayrilirlar. Herbir alanin anlami asagi- daki gibidir:
name :Kullanici adinin verildigi yer. Uzunlugu en fazla 8 karak- terdir.
password :Kullanici sifre alani. Bu kisimdaki karakterler de sifrelen- mis bicimde saklandigi icin hicbir kullanici tarafindan go- rulemez.
uid :Kullanici numarasi. Her kullanici sisitemi tek bir numara ile bilinir. Bu numaraya, "User ID" denir. Birden fazla kisi ayni ID numarasini alamaz. Uzunlugu 2 karekterdir.
gid :Kullanicinin ait oldugu grubun numarasidir. Bu numaraya "Gr- oup" denir. Her kullanici sistemde en az bir grubun elemani dir.
comment :Aciklama kismidir.
homedir :Kullanicinin sisteme login oldugunda calisacagi direcory'nin absolute pathname'midir.
shell :Kullanici sisteme login oldugunda calisacak olan shell prog raminin adidir. Eger bu alana herhangi bir bilgi yazilmassa default olarak "sh" (Bourne Shell) programi calisir.
Yukarida sozu edilen "gid", /etc directory'si altindaki "group" isimli file icinde tanimli olmalidir.
/etc/group file'inin yapisi asagidaki bicimdedir: ----------
group-name:password:gid:users
Alanlar birbirlerinden ":" karakteri ile ayrilirlar. Herbir alanin a- ciklamasi asagida verilmistir:
group-name : Gruba verilen isimdir.
passwd : Grubun sifresidir. (Kullanilmaz.)
gid : Grubu tek olarak belirleyen numaradir.
users : Gruba dahil olan kullanicilarin isimleridir. Herbir kul- lanici ismi birbirinden "," karakteri ile ayrilirlar.
A}a`[da bir /etc/passwd file |rnegi verilmi}tir :
root:7XkEJeV6eCkr.:0:3:0000-Admin(0000):/: rootcsh::0:0::/:/bin/csh daemon::1:12:0000-Admin(0000):/: bin::2:2:0000-Admin(0000):/bin: sys::3:3:0000-Admin(0000):usr/src: adm::4:4:0000-Admin)0000):/usr/adm: uucp::5:1:0000-uucp(0000):/usr/lib/uucp: nuucp::6:1:0000-uucp(0000):/usr/spool/uucppublic:/usr/lib/uucp/uucico sync::20:1:0000-Admin(0000):/:/bin/sync rje::68:8:0000-rje(0000):/usr/rje: shqer::69:8:0000-rje(0000):/usr/rje: lp::71:2:0000-lp(0000):/usr/spool/lp: lorenzo::7:37::/usr/lorenzo:/bin/csh ayla::12:37:altun:/usr/ayla:/bin/csh bulent::9:37:dinar:/usr/bulent:/bin/csh osman::10:37:yalcinkaya:/usr/osman:/bin/csh
A}a`[da bir /etc/group file |rne`i verilmi}tir :
root::0:root other::1: bin::2:root,bin,daemon sys::3:root,bin.sys,adm adm::4:root,adm,daemon mail::6:root rje::8:rje,shqer daemon::12:root,daemon easyusr::37:
SISTEMDE MESAJ ILETIMI ----------------------
/etc/motd : -----------
Bu file kullanilarak, kullanicilara login olduklarinda gorebilecekleri mesajlar iletilebilir. Gonderilmek istenen mesaj /etc/motd file'ina girilir. Kullanicilar login olduklarinda bu file'in icerigi otomatik olarak ekranlarina gelir.
/usr/news/filename: -------------------
/usr/news directorysi altindaki herhangibir file'a bazi mesajlar yazi- labilir. Bu mesajlari kullanicilar "news" komutunu kullanarak gorebi- lirler. "news" komutu birkez kullanildiktan sonra home directory'de "news time" isimli bir file yaratilir. Bu file okunan mesajin tarihi ve saati ile iliskilidir. Eger en son verilen "news" komutundan sonra /usr/news directory'si altinda yeni bir mesaj file'i yaratilmamissa bundan sonra verilen "news" komutu (seceneksiz olarak kullanildiginda) ile daha once goruntulenmis olan mesajlar goruntulenemez.
news : ------
Bu komut ile /usr/news directory'si alt[ndaki mesajlar[ g|rmek m~m- k~nd~r.Komutun genel yaz[l[}[ a}a`[daki bi_imdedir :
news (-a) (-n) (-s) (mesaj)
Komutun se_enekleri :
-a : /etc/news alt[ndaki t~m mesajlar[ tarih ve saat kont- rolu yapmadan g|r~nt~lenir.
-n : Yeni mesajlar[n yaln[zca isimlerini listeler.
-s : Yeni mesajlar[n say[s[n[ g|r~nt~ler.
wall : ------
Bu komut ile sistemde _al[}makta olan kullan[c[lara mesaj g|nderilir. Komut sadece root kullan[c[s[ taraf[ndan verilebilir.
Mesaj g|ndermek ;
$ wall <CR> $ Sistem 5 dakika sonra kapat[lacakt[r. <CR> $ L~tfen sistemden _[k[n[z... <CR> $ <CTRL-D>
write : ------- Bu komut ile kullan[c[ ad[na ve/veya terminale mesaj g|nderilir.
Genel yaz[l[}[ a}a`[daki bi_imdedir : write kullan[c[-ad[ terminal ad[
E`er bir kullan[c[ birden fazla terminalde login olmu} ise, o zaman terminal-ad[ da kullan[larak istenen terminal belirtilir.Kullan[l[}[ wall komutu gibidir.
|rnek;
$ write user1 /dev/tty03 <CR> $ Mesaj[n 1.sat[r[ <CR> $ Mesaj[n 2.sat[r[ <CR> $ <CTRL-D>
E`er kullan[c[
$ mesg n
komutu ile kendisine mesaj gelmemesini sa`lam[} ise, o zaman write komutu o terminale mesaj g|nderemez.
Tekrar mesaj gelmesini sa`lamak i_in
$ mesg y
komutu verilir.
KULLANICILARIN TANIMLANMASI ve ILGILI KOMUTLAR ----------------------------------------------
id (identification) : ---------------------------- Bu komut ile o anda cal[smakta oldu`umuz kullan[c[ ve grup ile ilgili bilgi al[n[r.
|rnek ;
$ id <CR> uid=10(ayse) gid=50(bordro)
Bu |rnekte kullan[c[n[n "ay}e" ve ait oldu`u grubun "bordro" oldu`u g|r~lmektedir. 10 say[s[, "ayse" kullan[c[s[n[n Id'sini; 50 say[s[ ise Group Id'sini g|stermektedir.
chown (change owner) : ------------------------- Bu komut herhangibir file ya da directory'nin sahibini (owner) de`is- tirmek i_in kullan[l[r.Komutu kullanabilmek i_in ya root kullan[c[s[ olmak, ya da de`i}tirilmek istenen file ya da directory'nin sahibi olmak gereklidir.
Genel yaz[l[}[ :
chown uid file/directory ...
bi_imindedir.
|rnek ;
$ chown 35 file1 (file1 isimli file'in sahibi User Id = 35 olan kullan[c[ olur.
$ chown user1 directory1
(directory1 isimli directory'nin sahibi user1 isimli kullan[c[ olur.) chgrp (change group) : ------------------------
Bu komut herhangi bir file ya da directory'nin grubunu (group) de- `i}tirmek i_in kullan[l[r.Komutu kullanabilmek i_in ya root kulla- n[c[s[ olmak, ya da de`i}tirilmek istenen file ya da directory'nin sahibi olmak gereklidir.
Genel yaz[l[}[ :
chown gid file/directory ...
bi_imindedir.
|rnek ;
$ chgrp 35 file1 (file1 isimli file Grou[ Id = 35 no'lu gruba ait olur.)
$ chown group1 directory1 (directory1 isimli directory group1 isimli gruba ait olur.)
su (switch user) : -------------------
Bu komut ile o anda calismakta olan kullanici icin yeni bir shell pro- cess'i yaratilir ve sistem artik o kullaniciyi yeni isim ile tanir. Bu komut ile yeni kullanicinin tum yetkilerine sahip olunur.
Boylece sistemden logout olmadan baska bir kullanici olarak sistemde calismaya devam edilebilir.
CTRL-D tusu kullanilarak yeni yaratilan shell sonlandirilip "su" komu- tunun verilmesinden onceki kullaniciya donulebilir.
Genel yazilisi:
su [-] [user [arg...]]
Burada "user" degistirilmek istenen kullanicinin adidir. Eger yazilmaz- sa "root" kullanicisina gecilmek istendigi anlasilir. Bu komut veril- dikten sonra eger yeni kullanicinin sifresi varsa "passwd" sorusu soru- lur.
Eger "-" ile kullanilirsa yeni kullanici sistemde login olmus gibi is- lem gorur. Eger "-" ile kullanilmazsa yalnizca kullanicinin adinda yeni bir process yaratilir. (ornegin working directory degismez.) Ayn[ zamanda bu komut ile ba}ka bir kullan[c[ym[} gibi komut cal[}t[r- mak da m~mk~nd~r. O zaman "arg" k[sm[na
-c "command args"
yaz[l[r.|rne`in
su - ay}e -c "cp file1 file2"
komutu ile "cp" komutu ayse kulan[c[s[ olarak _al[}t[r[lm[} olur.
|rnek ; $ id <CR> (O andaki kullan[c[ soruldu`unda) uid=10(ay}e) gid=50(bordro)
$ id <CR> (Yeniden kullan[c[ soruldu`unda) uid=11(mehmet) gid=55(bordro)
|rnekte g|r~ld~g~ gibi art[k sistem, kullan[c[y[ "mehmet" olarak g|rmektedir.Bu |rnekte "-" se_imi kullan[lmad[`[ i_in working di- rectory de`i}memi}tir.
newgrp (new group) : ------------------------
Bu komut ile kullan[c[ o anda _al[}makta oldu`u grubu de`i}tirebilir. De`i}tirebilmek istenen grubun /etc/group file'[nda o kullan[c[ i_in tan[ml[ olmas[ gerekir.
Genel yaz[l[}[ :
newgrp (-),(group)
bi_imindedir.
Burada "group" yeni grubun ad[d[r.
|zel olarak; e`er "-" ile kullan[l[rsa, kullan[c[ normal login oldu `undaki _al[}ma ortam[na geri d|ner.
|rnek ; /etc/group file'[nda a}a`[daki sat[rlar tan[ml[ olsun :
. . stok::55:ay}e,mehmet bordro::60: . .
ay}e kullan[c[s[n[n /etc/passwd file'[nda tan[ml[ oldu`u sat[r ise a}a`[daki bi_imdedir :
. . ay}e::15:60:** kullan[c[ **:/usr/ay}e:/bin/sh . .
ay}e kullan[c[s[ sisteme login oldu`unda "id" komutunu verirse, uid=15(ay}e) gid=60(bordro)
oldu`unu g|r~r.Eger
$ newgrp stok
komutu verilirse kullan[c[n[n yeni grubu stok olur.Bu "id" komutu tekrar verilip g|r~lebilir :
uid=15(ay}e) gid=55(stok)
pwck (passwd check) : -----------------------
Bu komut ile /etc/passwd file'[ndaki tanimlarin do`ruluk kontrolu yap[l[r.Komutu "root" kullan[c[s[ a}a`[daki bi_imde kullan[l[r :
$ pwck <CR>
E`er komut bir kullan[c[ taraf[ndan _al[}t[r[lmak isteniyorsa, $ /etc/pwck <CR>
}eklinde verilir.
grpck (group check) : -----------------------
Bu komut ile /etc/group file'[ndaki tan[mlar[n do`ruluk kontrolu yap[l[r.Komutu "root" kullan[c[s[ a}a`[daki bi_imde kullan[l[r :
$ grpck <CR>
E`er komut bir kullan[c[ taraf[ndan _al[}t[r[lmak isteniyorsa, $ /etc/grpck <CR>
}eklinde verilir.
passwd (password) : ----------------------
Bu komut ile kullan[c[lara password verilir ya da daha |nceki pass- word de`i}tirilir."Root" kullan[c[s[ bir kullan[c[ya password vermek i_in bu komutu kullanabilir ve kullan[c[n[n (e`er eski passwor'~n~ biliyorsa) password'~n~ de`i}tirebilir.Fakat di`er kullan[c[lar yal- n[zca kendi password'lerini de`i}tirebilirler, ba}kalar[n[nki de`i}- tiremezler.
Genel yaz[l[}[ :
passwd (user-name)
}eklindedir.
|rnek;
$ passwd ay}e <CR>
Bu komut ile "ay}e" isimli kullan[c[ya password verilmek istendi`i, ya da password'~n~n de`i}tirilmek istendi`i belirtilmi}tir.
E`er user-name kullan[lmazsa, "root" kullan[c[s[n[n password'~n~n de- `i}tirilmek istendi`i anla}[l[r.
Komut, kar}[l[kl[ soru-cevap bi_iminde _al[}[l[r.
YENI BIR KULLANICI TANIMLAMAK : -------------------------------
- Sisteme ya "root" kullan[c[s[ olarak login olunur; ya da "su" ko- mutu "root" kullan[c[s[na ge_ilir.
- Yeni kullan[c[ ile ilgili sat[r /etc/passwd file'ina yaz[l[r.
- /etc/group file'[nda gerekiyorsa ilgili de`i}iklikler yap[l[r.
- Yeni kullan[c[n[n home directory'si yarat[l[r.
- Yeni kullan[c[n[n home directory'si i_in "chown" ve "chgrp" komut lar[ kullan[larak directory'nin sahibi yeni kullan[c[; grubu ise yeni kullan[c[n[n grubu yap[l[r.
- Gerekiyorsa kullan[c[n[n home directory'sinde .profile (/bin/sh kullan[l[yor ise) ya da .login (bin/csh kullan[l[yor ise) file'la- r[ yarat[l[p kullan[c[n[n _al[}ma ortam[na ili}kin baz[ bilgiler tan[mlanabilir.
STANDART SHELL DEGISKENLERI --------------------------- (STANDARD SHELL VARIABLES) --------------------------
Shell'de kullan[lan baz[ standart de`i}kenler vard[r.Bunlar a}a`[da a_[klanm[}t[r :
HOME : Home directory'nin pathname'ini i_erir.
|rnek : $ echo $HOME /usr/ay}e
LOGNAME : Kullan[c[ ismini i_erir.
|rnek : $ echo $LOGNAME ay}e
MAIL : Kullan[c[ya gelen mail'lerin sakland[`[ directory'nin pathname'ini i_erir.
|rnek : $ echo $MAIL /usr/mail/ay}e
PATH : Shell'in verilen komutlar[ _al[}t[rabilmek i_in s[ra- s[yla bakaca`[ directory'lerin pathname'lerini i_erir.
|rnek : $ echo $PATH /bin:/usr/bin:/usr/lbin
SHELL : Kullan[c[n[n kullanmakta oldu`u shell'in hangisi oldu- guna ili}kin bilgiyi i_erir.
|rnek : $ echo $SHELL /bin/shell
TERM : Cal[}[lmakta olan terminalin ad[n[ i_erir.
|rnek : $ echo $TERM hw72
TERMINFO : Terminalinizin |zelliklerinin tan[mland[`[ file'in pathname'ini i_erir.
|rnek : $ echo $TERMINFO /usr/lib/terminfo
IFS : (InterField Separators) Kelimeleri birbirinden ay[ran karekterlerin neler oldu`una ili}kin bilgiyi i_erir.Bun- lara "white space" karakterleri denir. Bunlar "space", "tab" ve "newline" karekterleridir.
PS1 : (Prompt String 1) Shell'in prompt'unun ne oldu`unu belir- tir."sh" i_in $, csh i_in % dir.
|rnek : $ echo $PS1 $
PS2 : (Prompt String 2) Shell'in kinci prompt'unun ne oldu`unu be- lirtirler.Bu prompt bir komutun ayn[ sat[ra s[gmamas[ halin- de g|r~l~r.
|rnek : $ echo $PS2 >
Shell'de kullan[lan de`i}kenler iki t~rl~d~r.Bunlar :
. local (yerel)
. environment (_evre)
de`i}kenleridir.
"set" ve "env" komutlar[ bu de`i}kenlerle ili}kili olarak kullan[l[r. Local de`i}kenler yaln[zca tan[mland[klar[ shell i_inde ge_erlili`i ni korur.Environment de`i}kenler ise t~m program ve subshell'lerde ge_erlidir.
set : -----
Set komutu arg~mans[z olarak kullan[ld[`[nda local de`i}kenlerin de- `erlerini ekrana listeler.
|rnek ;
$ set <CR> HOME=/usr/ay}e IFS=
LOGNAME=ay}e MAIL=/usr/mail/ay}e MAILCHECK=600 PATH=:bin:/usr/bin:/usr/lbin: PS1=$ PS2=> SHELL=bin/sh TERM=hw72 TERMINFO=/usr/lib/terminfo
env : -----
Bu komut ile environment de`i}kenlerin de`erlerinin neler oldu`u ekra- na listelenir.
|rnek ;
$ env <CR>
HOME=usr/ay}e LOGNAME=ay}e MAIL=/usr/mail/ay}e PATH=:/bin:/usr/bin:/usr/lbin SHELL=/bin/sh TERM=hw72 TERMINFO=/usr/lib/terminfo
export : --------
Bu komut ile local olan bir de`i}ken export edilerek environment de- `i}ken olarak kullan[l[r.
|rnek ; $ variable=de`er (variable isimli local de`i}kene "de- ger" atand[.) $ echo $varible (varible isimli de`i}kenin de`eri ek- rana geldi.)
$ set (local de`i}kenler listelendi) . . variable=deger
$ env (env.de`i}kenler listelendi.Burada va- . riable isimli de`i}kenin olmad[`[n[ . g|zleyiniz.) . $ export variable (variable isimli de`i}ken export edile- rek env. de`i}kenler listesine al[nd[.
$ env (Yeniden env. de`i}kenler listelenirse . veriable isimli de`i}kenin burada yer . ald[`[ g|zlenebilir.) variable=de`er
NOT: Bir shell kullan[c[s[ i_in bu de`i}kenler default olarak /etc/ profile isimli file kullan[larak set edilir.
SHELL'DE KOMUTLARIN I]LETILMESI ------------------------------ (COMMANDS EXECUTED IN SHEL) ---------------------------
Shell'in bir komutu isletmesi islemi once "fork system call" (yeni bir shell yaratmak,child process), daha sonra ise "exec system call" (yeni yaratilan shell'in exec komutu ile isletilmesi istenen komutu calistirmasi) ile mumkun olur.
Fakat bazi komutlar vardir ki, bu tur komutlar icin shell yeni bir shell process'i yaratmaz. Komut shell tarafindan system call'i ile dogrudan isletilir.
Ornek olarak; "cd" komutu, eger yeni bir shell process'i yaratilarak child process'de isletilseydi working directory'nin degismesi parent process'i hic etkilemeyecekti. Yani, yalnizca child process'in working directory'si degisecekti. Halbuki burada degismesi gereken directory parent process'in working directory'sidir. Bu yuzden bu tur komutlar dogrudan dogruya system call'u ile isletilir. Baska ornekler vermek gerekirse; newgrp,shell degiskenlerine deger atamak, v.b.
Simdi asagidaki iki komut arasindaki farka bakiniz :
$ cd /etc ; grep ayse passwd ==> Bu ornekte komut bitti- ginde working directory /etc'dir.
$ (cd /etc ; grep ayse passwd) ==> Bu ornekte komutlarin parantezler icine yazil- masi sonucunda ilgili ko- mutlarin isletilmesi icin yeni bir shell process'i yaratilir ve komut bu shell tarafindan isleti- lir. Komut bittiginde parent process'in working directory'si degismemis olur.
Ayni mantik shell programlarinin (shell script) isletilmesi icin de gecerlidir. Bilindigi gibi bir shell programini isletmek icin
$ sh shell-program-adi
ya da
$ shell-program-adi denir.
Buradaki islemin gerceklesmesi icin yeni bir shell process'i yarati- lir ve programi bu process isletir.Eger isletilmesi istenen shell programinin icinde yukaridaki ornekte oldugu gibi "cd" turunde komut- lar varsa, shell programinin isletilme mantigi dogrultusunda bu tur komutlar parent process'i etkilemez.
Eger aksinin olmasi istenirse, yani shell programinin icindeki komut- larin parent process'i etkilemesi istenirse, bu durumda ayni islemin fork system call'u olmadan, yani yeni bir shell process'i yaratilma- dan gerceklestirilmesi gereklidir.
Bu islem Bourne Shell'de (sh)
$ . shell-program-adi
yazilarak; C Shell'de (csh) ise
$ source shell-program-adi
yazilarak gerceklestirilir.
Ornek;
Home directory'deki ".profile" isimli file'in icinde prompt'u degis- tiren.
PS1="hazir" export PS1
satirlari olsun. Eger
$ .profile
komutu verilirse, yeni bir shell process'i yaratilir ve bu shell'deki prompt degistirilir. Yani komut bittiginde parent process'in prompt'u degismez. Eger prompt'un kalici olarak degismesi istenirse
$ . .profile
komutu verilmelidir.
FILE SISTEMININ YAPISI ----------------------
Unix isletim sisteminde, disk uzerinde kurulmus olan yapiya file sistemi denir. Bir disk uzerinde birden fazla file sistemi olusturu- labilir. Herbir file sistemi, fiziksel olarak diskin formatlanmasi sirasinda disk uzerinde olusturulan bir bolume (=partition, slice) karsi gelir.
file sisteminde herbir blok 1024 Byte'dir. Yapisi asagidaki sekilde- dir :
<----I-LIST-----> <---FREE-LIST--------> 1024B : 1024B :64B : : : : : : -------:----------:-:------:------:--:------:--------:--:-------- : : : : : : : : : : : FREE :SUPERBLOCK: : : :..: : :..: : : ::: : : : : : : -------:----------:::------:------:--:------:--------:--:--------- 0 : 1 :: 2 : 3 : : : : : : V I-NODE
Boot block: ----------
Diskin 0. blogu boot blog olarak adlandirilir. Burada "bootstrap" programi bulunur.
superblock : ------------
File sistemin 1. blogu superblock olarak adlandirilir. Superblogun /u
|