1 linux sistem yönetimi ii - web.itu.edu.trmscelebi/est566/notlar/lecture1.pdf · 1 linux sistem...

17
1 Linux Sistem Yönetimi II 1.1 Init Deamon Init deamon genellikle Linux çekirdeğinin boot edilmesi aşamasındaki son adımı oluşturur. Linux deamon’ları içinde en önemlilerinden birisidir, bunun sebebi de sistemin yeniden yüklenmesi için süreçleri başlatmasıdır. Linux kapatılana kadar görevine devam eder. Linux sistemini daha iyi anlayabilmek ve yönetebilmek için init’in ne yaptığını ve işletim sistemini nasıl kontrol ettiğini iyi bilmek gerekir. Hem init hemde telinit, görevlerini yapabilmeleri için birkaç konfigürasyon dosyasını kullanırlar. Bu kısımda bu dosyaları inceleyeceğiz. Bu dosyalar terminallerin ve konsol oturumlarının açılıp kapanması esnasında devreye girerler. init programı genellikle /bin klasöründe tutulur (bazı versiyonlarda /sbin’de) konfigürasyon dosyaları ise daima /etc klasöründe tutulur. init deamon çalıştırıldığında /etc/inittab dosyasından bir takım talimatlar okur (bu talimatlar genellikle linux tarafından kullanılan terminaller ve diğer süreçler için getty sürecini başlatmak için kullanılır). Bir çalışma düzeyi (run level); Sistem yönetimi için gerekli olan asgari bir seviyeden tüm konfigüre edilmiş araçları destekleyen azami bir işletim sistemi seviyesine kadar değişen özel bir süreç kümesidir. Çalışma düzeyleri 0’dan 6’ya kadar numaralandırılmıştır, ilave bir “super user” seviyesi s olarak tanımlanmıştır. Init deamon’u hangi sürecin hangi çalışma düzeyi ile ilgili olduğunu /etc/inittab dosyasındaki bilgilerle bilir. s çalışma düzeyinde (tek kullanıcılık) /etc/inittab yerine /bin/su devreye girer. (/dev/console tarafından tanımlanan sistem konsolu için). En yaygın çalışma düzeyleri aşağıda verilmiştir: Run level 0: Sistemi durdurmak veya kapatmak için kullanılır. Run level 1: Sistemi tek kullanıcılı mod`a indirger. Run level 2: Çok kullanıcılı mod. Run level 3: Ağ destekli, çok kullanıcılı mod. Run level 6: Sistemi reboot etmek için kullanılır. Çalışma düzeyleri 0, 1 ve 6 rezerve edilmiştir. Sistemin çalışma seviyesi, bu seviyeyi etkileyen komutlara erişebilen kullanıcı tarafından değiştirilebilir. Bu erişim sistem yöneticisi tarafından genellikle engellenmiştir ve “telinit utility” kullanılarak çalışma düzeyi değiştirilebilir : $ telinit –t5 3 Çalışma düzeyini 5 saniye sonra 3 düzeyine değiştirir. Eğer zaman verilmezse 20 sn kullanılır. Çalışma düzeyi değiştirildiğinde, init SIGTERM uyarısı sinyalini yeni çalışma seviyesi ile çalışmayan tüm süreçlere yollar. Sinyal yollandıktan sonra tanımlanan süre kadar beklenir (default 20 sn) daha sonra süreçler cebren yok edilir.

Upload: others

Post on 09-Sep-2019

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 1 Linux Sistem Yönetimi II - web.itu.edu.trmscelebi/est566/notlar/Lecture1.pdf · 1 Linux Sistem Yönetimi II 1.1 Init Deamon Init deamon genellikle Linux çekirdeğinin boot edilmesi

1 Linux Sistem Yönetimi II 1.1 Init Deamon Init deamon genellikle Linux çekirdeğinin boot edilmesi aşamasındaki son adımı oluşturur. Linux deamon’ları içinde en önemlilerinden birisidir, bunun sebebi de sistemin yeniden yüklenmesi için süreçleri başlatmasıdır. Linux kapatılana kadar görevine devam eder. Linux sistemini daha iyi anlayabilmek ve yönetebilmek için init’in ne yaptığını ve işletim sistemini nasıl kontrol ettiğini iyi bilmek gerekir. Hem init hemde telinit, görevlerini yapabilmeleri için birkaç konfigürasyon dosyasını kullanırlar. Bu kısımda bu dosyaları inceleyeceğiz. Bu dosyalar terminallerin ve konsol oturumlarının açılıp kapanması esnasında devreye girerler. init programı genellikle /bin klasöründe tutulur (bazı versiyonlarda /sbin’de) konfigürasyon dosyaları ise daima /etc klasöründe tutulur. init deamon çalıştırıldığında /etc/inittab dosyasından bir takım talimatlar okur (bu talimatlar genellikle linux tarafından kullanılan terminaller ve diğer süreçler için getty sürecini başlatmak için kullanılır). Bir çalışma düzeyi (run level); Sistem yönetimi için gerekli olan asgari bir seviyeden tüm konfigüre edilmiş araçları destekleyen azami bir işletim sistemi seviyesine kadar değişen özel bir süreç kümesidir. Çalışma düzeyleri 0’dan 6’ya kadar numaralandırılmıştır, ilave bir “super user” seviyesi s olarak tanımlanmıştır. Init deamon’u hangi sürecin hangi çalışma düzeyi ile ilgili olduğunu /etc/inittab dosyasındaki bilgilerle bilir. s çalışma düzeyinde (tek kullanıcılık) → /etc/inittab yerine /bin/su devreye girer. (/dev/console tarafından tanımlanan sistem konsolu için). En yaygın çalışma düzeyleri aşağıda verilmiştir: ● Run level 0: Sistemi durdurmak veya kapatmak için kullanılır. ● Run level 1: Sistemi tek kullanıcılı mod`a indirger. ● Run level 2: Çok kullanıcılı mod. ● Run level 3: Ağ destekli, çok kullanıcılı mod. ● Run level 6: Sistemi reboot etmek için kullanılır. Çalışma düzeyleri 0, 1 ve 6 rezerve edilmiştir. Sistemin çalışma seviyesi, bu seviyeyi etkileyen komutlara erişebilen kullanıcı tarafından değiştirilebilir. Bu erişim sistem yöneticisi tarafından genellikle engellenmiştir ve “telinit utility” kullanılarak çalışma düzeyi değiştirilebilir : $ telinit –t5 3 Çalışma düzeyini 5 saniye sonra 3 düzeyine değiştirir. Eğer zaman verilmezse 20 sn kullanılır. Çalışma düzeyi değiştirildiğinde, init SIGTERM uyarısı sinyalini yeni çalışma seviyesi ile çalışmayan tüm süreçlere yollar. Sinyal yollandıktan sonra tanımlanan süre kadar beklenir (default 20 sn) daha sonra süreçler cebren yok edilir.

Page 2: 1 Linux Sistem Yönetimi II - web.itu.edu.trmscelebi/est566/notlar/Lecture1.pdf · 1 Linux Sistem Yönetimi II 1.1 Init Deamon Init deamon genellikle Linux çekirdeğinin boot edilmesi

/etc/inittab Dosyası /etc/inittab dosyası init deamon ile yakın ilişki içindedir. Sisteminizdeki /etc/inittab dosyasına bakarak, Linux’un açılması esnasında hangi çalışma seviyelerinin devreye girdiğini ve hangi süreçlerin başladığını görünüz. /etc/inittab dosyasındaki her satır spesifik bir formatı takip eder. ID:runlevel:action:process ID bir veya iki karakter string’e sahip ve girişi tek olarak tanımlayan bir kimlik karakter setidir. Çoğu durumlarda, bu string tty1 için bir, tty2 için 2 ve benzeri gibi cihaz adına karşılık gelir çalışma seviyesi, bu satırların hangi çalışma seviyelerinin uygulanabileceğine karar verir. Örnek : /etc/inittab dosyasında ilk kısım kimlik ve benimsenmiş çalışma düzeyini verir, bu örnekte seviye 5 dir. id:5:initdefault: Sonraki kısım sistemdeki başlatma sürecini, /etc/rc.d klasöründeki dosyalar aracılığıyla devreye sokar: su:s:sysinit:/etc/rc.d/rc.S Sonraki kısım /etc/rc.d/rc.K dosyasına yönlendirir (Bu dosya sisteme tek kullanıcı çalışma seviyesinde girildiğinde kullanılır) su:s:wait:/etc/rc.d/rc.K Sonraki satır /etc/rc.d/rc.M dosyasına yönlendirir çok kullanıcılı seviyede sistem başladığında devreye girer. rc:123456:wait:/etc/rc.d/rc.M En yaygın çalışma seviyesi 5 olup Linux’un çok kullanılıcı modundaki normal operasyon seviyesidir. Bu nedenle kulanım için çalışma düzeyi beş ve superuser için s seviyesi kullanılır. Linux, PC makinelerde çalıştığından dolayı, “three-fingered-salute” veya Ctrl+Alt+Delete dizisini destekler. Bu dizi genellikle UNIX sistemlerinde desteklenmez bu nedenle özel bir talimat /etc/inittab dosyasındaki diziye kopyalanır. ca::ctrlaltdel:/sbin/shutdown –t3 –rf now böylelikle Ctrl+Alt+Del dizisi uygulandığında sistem aşağıdaki satırların sonuna kadarki komutlarla kapatılmaya başlanır. /etc/inittab dosyası, bu durumda sistemdeki sanal terminal ve her terminal için getty sürecini başlatmak için bir talimat tutar. Aşağıdaki /etc/inittab dosyası 6 sanal terminal (tty1’den tty6’ya kadar) ve iki veri hattı (ttys0 ve ttys1) başlatır. c1:12345:respawn:/sbin/agetty 38400 tty1 c2:12345:respawn:/sbin/agetty 38400 tty2 c3: 45:respawn:/sbin/agetty 38400 tty3 c4: 45:respawn:/sbin/agetty 38400 tty4 c5: 45:respawn:/sbin/agetty 38400 tty5 c6: 456:respawn:/sbin/agetty 38400 tty6

Page 3: 1 Linux Sistem Yönetimi II - web.itu.edu.trmscelebi/est566/notlar/Lecture1.pdf · 1 Linux Sistem Yönetimi II 1.1 Init Deamon Init deamon genellikle Linux çekirdeğinin boot edilmesi

s1: 45:respawn:/sbin/agetty 19200 ttys0 s2: 45:respawn:/sbin/agetty 19200 ttys1 Eğer init bir güç kaybı durumu sezinlerse (örneğin; UPS {Uninterruptable Power Supply} tarafından sinyal gönderilen PC’nin güç kaybı gibi) ve sistem çok kullanılıcı mode’da ise bazı özel güç kullanımı şartları makinenin yeniden açılması durumunda çalıştırılır. Bu şartlar genellikle sistemi geri getirmeden önce dosya sistemlerindeki olası problemlerin kontrolleri şeklindedir. /etc/inittab dosyası bu tür şartlar için talimatları barındırır. Örneğin :

• Güç kesilmesi durumunda ne yapılacak (tek kullanılıcı duruma geç) pf::powerfail:/sbin/shutdown –f +5 “THE POWER IS FAILING”

• Kapanıştan önce güç geri gelirse kapanış sürecini durdur pg:0123456:powerokwait:/sbin/shutdown -c “THE POWER İS BACK”

• Tek kullanıcı mod’da güç geri geldi, çok kullanıcıya geçiş yap ps:s:powerokwait:/sbin/init 5 ASCII editörü kullanarak inittab dosyası değiştirilebilir fakat değişikliklerin aktif olabilmesi için sistemin reboot edilmesi veya yeniden okuma şartlarında birisi oluşması gerekir; diğer bir alternatif’de, init’i kullanarak /etc/inittab dosyasını değerlendirmeye almaktır. Bunun için; $ init q komutunu kullanmalıyız. init süreci, bir sürecin kaç kere yeniden başlatılması (respawn) gerektiğini kontrol eder. 1.2 Kullanıcı Hesaplarının Açılması (El ile açılması)

/etc/passwd dosyası kullanıcı hesapları hakkında tüm bilgiyi içerdiğini daha önce belirtmiştik. Bu dosyanın izinlerini sadece root tarafından yazılabilme iznine bağlanmalı ve diğer hesapların sadece okuma izni olmalı. /etc/passwd dosyasındaki satırlar belirli bir formata bölünmüştür.

username:password:user_ID:group_ID:comment:home directory:login_command

Bu format yapısını anlayabilmek için örnek bir /etc/passwd dosyasına bakalım.

root::0:0:root:/root:/bin/bash bin:*:1:1:bin:/bin: deamon:*:2:2:deamon:/sbin: adm:*:3:4:adm:/var/adm: lp:*:4:7:lp:/var/spool/lpd: sync:*:5:0:sync:/sbin:/bin/sync/ shutdown:*:6:0:shutdown:/sbin:/sbin/shutdown halt:*:7:0:halt:/sbin:/sbin/halt mail:*:8:12:mail:/var/spool/mail: news:*:9:13:news:/usr/lib/news: uucp:*:10:14:uucp:/var/spool/uucppublic:

Page 4: 1 Linux Sistem Yönetimi II - web.itu.edu.trmscelebi/est566/notlar/Lecture1.pdf · 1 Linux Sistem Yönetimi II 1.1 Init Deamon Init deamon genellikle Linux çekirdeğinin boot edilmesi

operator:*:11:0:operator:/root:/bin/bash games:*:12:100:games:/usr/games: man:*:13:15:man:/usr/man: postmaster:*:14:12:postmaster:/var/spool/mail:/bin/bash nobody:*:-1:100:nobody:/devnull: ftp:*:404:1::/home/ftp:/bin/bash

/etc/passwd’deki her satır iki nokta işareti ile ayrılan 7 alandan oluşur, eğer 0 olan için bir şey girilmemiş ise iki nokta arası boş bırakılır. Bu 7 alan şöyle özetlenir.

• The user name is a unique identifier for the user • The password is the user’s password (encrypted) • The user ID (UID) is a unique number that identifies the user to the operating system • The group ID (GID) is a unique number that identifies the user’s group (for file

permissions) • The comment is usually the user’s real name, but sometimes it is a phone number,

department or other information • The home directory is the directory in which the user is placed when he or she logs in • The login command is the command executed when the user logs in; normally, this

commands starts a shell program

User Names (Kullanıcı İsimleri): Kullanıcı isimleri genellikle 8 veya daha az karakterle her kullanıcıyı tek olarak tanımlayan tek bir kelime grubudur. Tipik bir kullanıcı ismi, kullanıcının ilk ismi ve soyadının bir kombinasyonu olabilir. Genel kabul, kullanıcı isimlerinin küçük harf olmasıdır. Passwords (Şifreler): Sistem, kullanıcının şifrelenmiş şifresini şifre alanında depolar. Bu olan değişikliklere çok duyarlı olup, herhangi bir düzeltme durumunda, sistem yöneticisinin şifre değiştirme işlemi yapana kadar kullanıcı adını geçersiz kılar. Sadece sistem yöneticisi veya kullanıcı passwd komutu kullanarak şifresini değiştirebilir. Bu olan sisteme girişleri sınırlandırmak için kullanılabilir. Lp veya Sync türünden bir sistem Login’i gibi erişim için kullanılan bir Login’i önlemek istiyorsak, şifre alanı için iki kolon arasına asteriks(*) yerleştirilir. Asteriks tüm erişimi sınırlar, bu alan aynı zamanda boş bırakılarak sınırsız erişimede izin verilebilir. Eğer şifre kullanılmazsa kullanıcı ismi olan herkese şifre talep edilmeksizin derhal erişim izni verilir. Şifre alanına bir editör kullanarak doğrudan şifre yapmaya teşebbüs etmeyiniz. Şifreleme metodunu yeniden oluşturamazsınız, ve kullanıcı hesabını kilitleyebilirsiniz. Bu durumda sistem yöneticisi şifreyi değiştirecek ve erişime izin verecektir. User ID (Kullanıcı Kimlik Numarası): Her kullanıcı ismi ona bağlı tek bir kullanıcı kimlik numarasına sahiptir (UID), UID kullanıcı ismine kıyasla tercih edilebilir çünkü rakamla uğraşmak daha kolaydır. Linux, bir kullanıcı tarafından başlatılan tüm süreçleri takip eder (bunu UID aracılığı ile yapar). Bazı programlar UID’dan yola çıkarak kullanıcı ismini görüntüler fakat genellikle bu iş için /etc/passwd dosyasını kullanırlar. root, 0 UID’ye sahiptir ve diğer sistem tarafında oluşturulan login’ler daha büyük sayılara sahiptir. Login Nobody, NFS tarafından kullanılan özel bir login’dir ve -1 UID’ye sahiptir, ve geçersiz bir sayıdır. Kullanıcı kimlik no’larını verirken onları belirli bir sırayla verebilirsiniz örneğin ilk kullanıcı için 100, ikinci için 101 ve benzeri gibi. Group ID (Grup Kimlik Numarası): GID, kullanıcının başlangıç gurubunu takip etmek için (diğer bir deyişle kullanıcı sisteme girdiğinde içinde olacağı grubun kimlik numarasıdır).

Page 5: 1 Linux Sistem Yönetimi II - web.itu.edu.trmscelebi/est566/notlar/Lecture1.pdf · 1 Linux Sistem Yönetimi II 1.1 Init Deamon Init deamon genellikle Linux çekirdeğinin boot edilmesi

Grup, dosya izinlerini oluşturulmak için organizasyonel amaçlarla kullanılır. GID sıfırdan yukarıya doğru numaralandırılır çoğu UNIX sistemi ve sistem grupları için 0 – 49 aralığında GID kullanırken, kullanıcı grupları 50’den yukarıya gruplandırılır. Benimsenmiş (default) grup, “group” olarak adlandırılır ve 50 sayısı atanır. Comments (Yorumlar): Sistem yöneticileri, yorum alanını giriş bilgilerinin daha anlaşılır kılabilmek için gerekli bilgiyle donatır. Bu alana duyarlı bilgi koymak sakıncalı olabilir zira e-posta sistemleri bu alana erişerek kimin posta gönderdiğini göstermek için erişebilir. Home Directory (Ev Klasörü): Ev klasörü alanı kullanıcının sisteme girmesi durumunda nereye yerleştireceğini belirten bir alandır. Bu alan genellikle kullanıcının ev dizinidir. Kullanıcıların “start-up” dosyalarında çevresel değişken HOME bu değere irtibatlandırılır. Linux, /home klasörü kullanma eğilimindedir, bu nedenle ev dizinizi /home/mscelebi gibi görebileceksiniz, diğer olasılıklar /usr, /user ve /u olabilir. Login command (Giriş Komutu): Login komutu, login sona erdirildiğinde çalıştırılacak olan komuttur. Çoğu durumda, bu komut kullanıcıya kabuk ortamı sağlayan C veya Bourne kabuğu gibi bir programı başlatır. Örneğin; uucp login (e-posta ve diğer basit serim (networking) görevleri için kullanılır) sadece uucp komutunu çalıştırır. Eğer bu alan boş bırakılırsa, işletim sistemi genellikle bourne kabuğunu benimser. Benimsenmiş Sistem Kullanıcı İsimlerinin Anlaşılması etc/passwd dosyasından yapılan alıntıda bir düzineden fazla sistem-bağımlı kullanıcı isimleri listelenmiştir. Bu isimler Linux sisteminde özel amaçlara hizmet ederler. root login: Süperuser hesabıdır (UID 0) ve sınırsız erişime sahiptir, pek çok sistem dosyalarına sahiptir. deamon login: Sistem süreçleri için kullanılır. Bu logini sadece süreçlere sahip olmak için izinlerini düzgün bir şekilde kurmak amacıyla kullanılır. bin login: Çalıştırılabilir dosyalara sahiptir. sys login: Çalıştırılabilir dosyalara sahiptir. adm login: Accounting ve log dosyalarına sahiptir. uucp login: uucp iletişim erişimi ve dosyalar için kullanılır. Diğer sistem login’leri özel amaçlar için kullanılır (örneğin postmaster mail için gibi.) 1.3 Kullanıcıların İlave Edilmesi etc/passwd dosyası elle düzenlenerek sisteminize kullanıcıları ilave edebilirsiniz veya bu işi otomatik olarak yapan betiklede bu iş gerçekleştirilebilir. UYARI: Bu dosyada değişiklik yapmadan önce kopyasını çıkartmanın faydası vardır. Eğer /etc/passwd dosyası çökerse ve sizde bir kopyası yoksa root olarak dahi sisteme giremezsiniz. Bu dosyanın bir kopyasını acil floppy diskinizde tutunuz veya boot disketinizde saklayınız. ASCII formatında saklayan herhangi bir editör kullanarak /etc/passwd dosyasına yeni giriş yapabilirsiniz. Yeni kullanıcıları dosyanın sonuna ilave ediniz ve her kullanıcı için tek ve kimsede olmayan kullanıcı ismi ve UID kullanınız. Örneğin; bill isimli yeni kullanıcıyı 103 UID ile ve 50 GID ile sisteme ilave etmek için;

bill::103:50:bill smallwood:/home/bill:/bin/sh

Page 6: 1 Linux Sistem Yönetimi II - web.itu.edu.trmscelebi/est566/notlar/Lecture1.pdf · 1 Linux Sistem Yönetimi II 1.1 Init Deamon Init deamon genellikle Linux çekirdeğinin boot edilmesi

Şifre alanının boş olmasına dikkat ediniz, çünkü şifrelenmiş olarak buraya yazamazsınız. Bu değişikliği kaydettikten sonra şifreyi kurmak için aşağıdaki komutu kullanın. $ passwd bill Burada bill’in kullanabileceği bir şifre giriniz ve bunu ilk fırsatta değiştirmesi gerektiğini hatırlatınız. Bu işlemde bittikten sonra, kullanıcının ev klasörünü oluşturma işlemine geçmeniz gerekiyor. Bu oluşturulduktan sonra, bu kullanıcının sahip olduğu klasörün sahipliğini kurmanız gerekiyor, şöyleki:

$ mkdir /home/bill $ chown bill /home/bill

tüm kullanıcılar bir gruba ait olmalılar. Eğer sisteminizde sadece bir grup tanımlanmışsa kullanıcının kullanıcı ismi grubu temsil eden /etc/group’daki satıra ilave edilmesi gerekmektedir. Eğer yeni kullanıcı birden fazla gruba ait ise, /etc/group dosyasındaki her gruba kullanıcı ismini ilave ediniz. Son olarak, kullanıcının kabukları için konfigürasyon dosyalarını kullanıcının ev dizinine kopyalayın ve kullanıcının kendi alanını düzenleyebilmesi için sistem iznini düzenleyiniz. Örneğin; Eğer serdar isimli diğer kullanıcıdan Bourne kabuğunun .profile dosyasını kopyalasaydınız aşağıdaki komutu kullanacaktınız.

$ cp /home/serdar/.profile /home/bill/.profile $ chown bill /home/bill/.profile

Ayrıca konfigürasyon dosyasını elle kontrol ederek, çevresel değişkenlerin kullanıcı sisteme girdiğinde yanlış bir şekilde kurulmadığına emin olun. Bourne kabuğu → .profile C kabuğu → .login ve .cshrc Korn kabuğu → .profile ve ENV ile tanımlanan herhangi bir dosya Bunlar kullanıcının ev dizininde bulunurlar. Özetleyecek olursak elle yapılacak olan yeni kullanıcı ayarı aşağıdaki adımları içerir. 1. /etc/passwd dosyasına yeni bir satır ilave et. 2. Kullanıcının ev dizinini oluştur ve sahipliğini ayarla. 3. Kabuk start-up dosyalarını kopyala ve kurulumlarını (settings) ve sahipliğini yeniden

ayarla. Bu işlemleri otomatik olarak linux içinde yapan betikleri (useradd veya adduser) daha önce görmüştük. 1.4 Kullanıcıların Silinmesi Yeni kullanıcıları ilave etmemizde olduğu gibi, mevcut kullanıcılarıda elle veya otomatik betik ile silebiliriz. Otomatik betikler deluser veya userdel, hangi kullanıcıyı sileceğinizi sorar ve daha sonra bu kullanıcının kaydını /etc/passwd dosyasından kaldırır bazı betikler, eğer isterseniz ev dizini dosyalarını ve spool’uda temizlerler. Fakat bunu yapmak için root olarak login olmak gerekir. Elle kullanıcıyı silmek için, kullanıcı kaydını /etc/passwd dosyasından kaldırmak gerekir daha sonra disk alnını temizlemek için kullanıcının klasörlerinide kaldırmak gerekir. Kullanıcı dosyaları ve ev dizini aşağıdaki komutla tamamen silebilirsiniz.

Page 7: 1 Linux Sistem Yönetimi II - web.itu.edu.trmscelebi/est566/notlar/Lecture1.pdf · 1 Linux Sistem Yönetimi II 1.1 Init Deamon Init deamon genellikle Linux çekirdeğinin boot edilmesi

$ rm -r /home/userdir

daha sonra kullanıcının mail spool dosyasını (ki /usr/spool/mail/username adresinde tutulur) kaldırmanız gerekir. Örneğin kullanıcı serdar’ın mail dosyasını kalıdırmak için $ rm /usr/spool/mail/serdar spool dosyası tek bir dosya olup bu komutla kayıtlar silinir. Posta temizliğini bitirmek için bu kullanıcının posta takma adlar dosyasında herhangi bir kaydının bulunup bulunmadığını kontrol etmelisiniz (bu dosya genellikle /usr/lib/aliases’dadır.) veya bu kullanıcı için gelen bütün postayı diğer login’e takma adlar dosyasında yapılacak bir ilave ile yönlendirebilirsiniz. Son olarak, kullanıcının cron ve at dosyalarında herhangi bir kayıt kalmadığına emin olmalısınız. Kullanıcının crontab dosyasını crontab komutu ile görebilirsiniz. Bir kullanıcıyı elle silmek için süreç aşağıdaki gibidir: 1. Kullanıcı kaydının /etc/passwd ve /etc/group dosyalarından kaldırınız. 2. Kullanıcının posta (mail) dosyasını ve herhangi bir posta takma adını (aliases) kaldırın. 3. Herhangi cron veya at görevlerini kaldırınız. 4. Kullanıcının ev klasörünü kaldırınız. Arasırada kullanıcının hesabını geçici olarak kullanım dışı bırakmak isteyebilirsiniz (bu durumlar özellikle kullanıcının uzun süreli ayrılmalarında olabilir). Bu durumda passwd dosyasında şifrelenmiş şifresinin başına ilk karakter olarak “*” işareti koyunuz, ve mevcut şifreyi sakın değiştirmeyiniz. Hesabı tekrar aktive etmek istediğinizde koyduğunuz “*” ‘ı kaldırınız ve dosyayı yeni haliyle saklayınız. 1.5 Grupların Kullanımı Sistemdeki her kullanıcı bir gruba aittir. Bir grup belirli bir nedenle bir arada bulunan bireylerin toplamıdır. Bir kullanıcı bir seferde sadece bir grubun üyesi olabilir. Grupların izinleri o gruba ait olmayan diğer kullanıcılardan tüm makinalara, dosya sistemlerine, dosyalara ve araçlara erişimi sınırladırıp kendi erişimlerine ise izin verilmesi gerekir. Küçük linux sistemlerinde sadece bir grup vardır. Bu durumlarda her kullanıcının araçlara ve dosyalara erişimi araç veya dosya erişim izinleriyle kontrol edilir grup izinleri ile değil. Örneğin grupları kullanarak arkadaşlarınızın veya çocuklarınızın evinizdeki linux sisteminizde erişimlerini kontrol edebilirsiniz. Grup bilgisi /etc/group dosyasında korunur, bu dosya /etc/passwd dosyasına benzerdir. Yeni yüklenmiş bir linux sisteminde benimsenmiş /etc/group dosyası aşağıdakine benzerdir.

root::0:root bin::1:root,bin,deamon deamon::2:root,bin,deamon sys::3:root,bin,adm adm::4:root,adm,deamon tty::5: disk::6:root,adm lp::7:lp mem::8: kmem::9: wheel::10:root floppy::11:root mail::12:mail news::13:news

Page 8: 1 Linux Sistem Yönetimi II - web.itu.edu.trmscelebi/est566/notlar/Lecture1.pdf · 1 Linux Sistem Yönetimi II 1.1 Init Deamon Init deamon genellikle Linux çekirdeğinin boot edilmesi

uucp::14:uucp man::15:man users::16:games nogroup::-1:

Her satır kolonlarla ayrılan 4 alana sahiptir, iki kolon yanyana olduğunda bu alana değer girilmediği anlaşılmalıdır. Her satır aşağıdaki formata sahiptir:

Group_Name:Group_Password:Group_ID:Users Her grubun dosyada bir satırı vardır, /etc/group dosyasındaki alanlar aşağıdaki gibidir: Group name (grup adı): Genellikle 8 veya daha az karakterden oluşan tek bir addır. Password (şifre): Genellikle “*” veya boş bırakılır, fakat eğer bir kullanıcı bu gruba girecekse ve buda şifre ile olacaksa o zaman bu alana şifre girilir. Group ID (GID, Grup Kimlik Numarası): Her grup için tek bir sayıdır. User field (Kullanıcı Alanı): Bu gruba ait olan tüm kullanıcıların kullanıcı kimlik numaralarının listesini içerir. Her linux sistemi işletim sistemine ait olan benimsenmiş belirli sayıda gruba sahiptir. Bu gruplar genellikle bin, mail, uucp, sys vb. gibi gruplardır. Sisteme bağlı grupları benimsenmiş /etc/group dosyasında görebilirsiniz. Bu dosyada son iki satır dışındakiler sistem gruplarıdır. Sadece sistem login’i bu işletim sistemi gruplarına erişmelidir. Benimsenmiş (Default) Sistem Gruplarının Anlaşılması Bildiğimiz gibi /etc/group dosyasında bir çok grup tanımlanmıştı. Bu gruplar pek çok sistem programları için erişim haklarına ve dosya izinlerinin verilmesinde kullanılırlar. Bu gruplardan en önemlilerinden bazılarına bakmakta fayda vardır. root /wheel/system group → Genellikle bir kullanıcının root erişimini elde etmek için su komutunu kullanmasında kullanılır. deamon group → Spooling klasörlerinin sahiplenilmesinde (mail, printer v.b) kullanılır. kmem group → Doğrudan çekirdek hafızasına erişmek ihtiyacında olan programlar için kullanılır. sys group → Bazı sistem dosyalarını sahiplenir. tty group → Terminallerle ilgili tüm özel dosyaları sahiplenir. Bir Grubun İlave Edilmesi Bir grup ilave etmek için, /etc/group dosyasındaki bilgiyi herhangi bir ASCII text editörü kullanarak veya addgroup veya groupadd gibi kabuk programı kullanarak elle düzenlemek mümkündür. /etc/group dosyasını elle düzenleyerek bir grup ilave etmek için, ilk olarak dosyanın bir yedek kopyasını çıkartmalısınız daha sonra herhangi bir ASCII editörü kullanarak oluşturmak istediğiniz her grup için bir yeni satır ilave etmelisiniz. Aşağıdaki örneklerde iki yeni grup oluşturulmuştur:

accounts::51:serdar scanner::52:mehmet

İki grubunda 51 ve 52 nolu GID’ları vardır. Gruptaki kullanıcılar ilave edilmişlerdir, her grupta sadece bir kullanıcı vardır.

Page 9: 1 Linux Sistem Yönetimi II - web.itu.edu.trmscelebi/est566/notlar/Lecture1.pdf · 1 Linux Sistem Yönetimi II 1.1 Init Deamon Init deamon genellikle Linux çekirdeğinin boot edilmesi

Yeni Gruplara Bir Kullanıcı İlave Etmek Kullanıcılar pek çok gruba ait olabilirler. Her kullanıcı adı /etc/group dosyasındaki satırda virgül ile ayrılmıştır.

accounts::52:bill,serdar,mehmet,tim,ahmet,root prgming:53:bill,serdar,walter,john,root cad:54:john,walter,root

linux her satırdaki kullanıcı adlarına bakarak aradığı isimleri bulacaktır. Bir kullanıcı bir defada sadece bir grubun üyesi olabilir, bu nedenle kullanıcılar newgrp komutunu kullanarak üyesi olduğu gruplar arasında değiştirme yapabilirler. Kullanıcının sisteme girdiğinde ait olduğu grubun ismi /etc/passwd dosyasında GID alanında verilmiştir. 1.6 Kullanıcı ve Grup İşlemlerini Komut Satırından Girilen Komutlarla Gerçekleştirmek Sisteme bir kullanıcı ekleme, mevcut kullanıcıyı silme, mevcut bir kullanıcının bilgilerinde değişiklik yapma, sisteme yeni bir grup ekleme, sistemdeki bir grubu silme ve sistemdeki bir grubun bilgilerinde değişiklik yapma gibi işlemler, komut satırından girilecek 6 farklı komutlada gerçekleştirilebilir. Bu komutlardan bazıları daha önceki kısımlarda verilmişlerdi aşağıdaki tabloda topluca verilmişlerdir: Kullanıcı ve grup işlemleri için komutlar KOMUT İŞLEVİ useradd: Linux sistemine tek bir kullanıcı ekler. userdel: Sistemde mevcut kullanıcıları sistemden uzaklaştırır, siler. usermod: Sistemde mevcut olan bir kullanıcının özelliklerini değiştirir. groupadd: Bu komut, /etc/group dosyasına yeni gruplar ilave eder. groupdel: /etc/group dosyasındaki grupları bu dosyadan dolayısı ile sistemden siler. groupmod: /etc/group dosyası içindeki grup bilgileri üzerinde değişiklikler yapar. useradd useradd [parametreler] login Burada parametrenin kullanımı isteğe bağlıdır. Option (benimsenmiş düzenleme modu ile –D) Amaç -g group Define default primary group -b path Define default initial path for home directories -e date Set a default account expiration date (Default--no expiration) -f number Set a default for the number of days the account can be inactive before it is disabled (Default--no limit) örnek : host# useradd –D –g users –b /home #useradd serdar #passwd serdar serdar adlı kullanıcı sisteme eklenmiştir. Ayrıca şifresini belirtmelisiniz. man komutu ile useradd komutuna ait parametreleri inceleyebilirsiniz. Çoğu kez bu parametreleri kullanmanız gerekmez. Bir kullanıcının kimliği hakkında bilgi almak için, id komutunu kullanabilirsiniz: #id serdar Bu durumda kullanıcı belirleyicisi ve grup bilgisi listelenecektir.

Page 10: 1 Linux Sistem Yönetimi II - web.itu.edu.trmscelebi/est566/notlar/Lecture1.pdf · 1 Linux Sistem Yönetimi II 1.1 Init Deamon Init deamon genellikle Linux çekirdeğinin boot edilmesi

Option Meaning -u UID Specify a UID. If not specified, the next available UID is chosen. -g group The primary group for the user. If not specified, the default is taken. -G groups A comma separated list of secondary groups. This information is used to update /etc/group, which we will discuss later in this lesson. -d home directory Path name for home directory. If a default base base has been set with the –b option for the defaults, this may be omitted, and the home directory will be base/username. -m Create the home directory, in addition to defining the user. -s shell Specify the login shell. Default is /bin/sh, the Bourne shell. -k dir The skeleton directory where initialization scripts are located. Defaults to /etc/skel. (Used with –m option.) -c Full Name Put the user's full name in the password database. -e date Account expiration date. -f number Number of days the account may be unused before it is disabled. Örnek: host# useradd –m –s /bin/bash –c 'Serdar Celebi' serdar kullanıcı ismi serdar tam ismi serdar celebi ile bir hesap açılacak. Login kabuğu /bin/bash ve ev dizini /home/serdar. /etc/skel dizininden dosyalar doğru sahiplik ve izinler ile kopyalaanmış olacak. userdel userdel [-r] KullanıcıAdı userdel komutu ile, belirtilen kullanıcı ile ilişkili olarak /etc/passwd dosyası /etc/shadow dosyası ve /etc/group dosyasındaki tüm bilgiler silinir. Kullanımı isteğe bağlı olan -r parametresi kullanılmışsa, bu durumda da silinen kullanıcının sahibi olduğu tüm dosyalarda silinecektir. örnek: # userdel -r serdar bu komut ile serdar adlı kullanıcı ve onun sahip olduğu dosyalar sistemden silinmiştir. usermod usermod [parametreler] login Belirtilen kullanıcı ile ilişkili olarak o anda atanmış parametreleri değiştirmek için kullanılır. Aşağıdaki bazı parametreler verilmektedir: -d home dizini : Kullanıcının home dizinini değiştirmek için kullanılır. -l login : Kullanıcının adını değiştirmek için kullanılır. -s kabuk : Kullanıcının kullandığı kabuğu (shell) değiştirmek için kullanılır. -u kullanıcı belirticisi :Kullanıcıya ait kimlik numarasını (userid) değiştirme için kullanılır. -G grupadı : Kulanıcının grubunu değiştirmek için kullanılır. örnek: #usermod -d /home/mscelebi serdar bu komut ile serdar adlı kullanıcının home dizini /home/mscelebi olarak değiştirilmiştir. groupadd

Page 11: 1 Linux Sistem Yönetimi II - web.itu.edu.trmscelebi/est566/notlar/Lecture1.pdf · 1 Linux Sistem Yönetimi II 1.1 Init Deamon Init deamon genellikle Linux çekirdeğinin boot edilmesi

groupadd [-g gid] [-r] [-f] grupadı groupadd komutu, /etc/group dosyasına yeni bir grup ekler. Parametrelerin anlamları aşağıda verilmiştir: -g gid : Eklenecek yeni grup için grup belirleyicisini, gid değeri olarak kabul eder. -r : Default durumunda, grup kimlik numarası olarak 499’dan büyük bir sayı alınır. –r parametresi kullanılmışsa, Linux’a eklenen grubun sisteme ait olduğu ve grup kimlik numarasının da ilk 499 sayı arasında olması gerektiği anlaşılmalıdır. -f : Bu seçenek kullanılırsa, aynı isimde bir grup eklendiğinde, program sistemden çıkar ve bu çıkışta grup ayarlarında bir değişiklik yapılmaz. örnek: #groupadd -g 600 egitim bu komut ile, grup belirleyici kodu 600 olan, egitim adlı bir grup sisteme eklemiştir. groupdel groupdel GrupAdı GrupAdı adı ile belirtilen grubu sistemden(/etc/group dosyasından) siler. örnek : #groupdel egitim bu örnekte egitim adlı grup sistemden silinmiştir. groupmod groupmod -g gid -n GrupAdı Group Burada gid, grubun yeni numarası, GrupAdı ise, Group adlı gruba verilecek olan yeni addır. örnek: #groupmod -n hpcc sinif bu sistemde mevcut olan sinif adlı grubun adı hpcc olarak değiştirilmiştir. 1.7 LinuxConf Paketi Yardımı ile Kullanıcı İşlemleri LinuxConf, Linux ortamında pek çok ve çeşitli işlemler gerçekleştirmeyi sağlayan bir konfigürasyon aracıdır. LinuxConf’un gerçekleştirdiği işlemlerden biriside kullanıcı işlemleridir. Kullanıcı ve grup ekleme, kullanıcı ve grup silme, mevcut gruplar ve kullanıcı üzerinde değişiklik yapma gibi işlemler LinuxConf paketi ile de gerçekleştirilir. LinuxConf’u başlatmak için, root kullanıcı olarak sistemde olmalısınız ve X Windows ortamını başlatmalısınız. Şayet, GNOME kullanıyorsanız, LinuxConf’u sol köşedeki menünün alt kısmında bir menü seçeneği olarak göreceksiniz. Bir menü seçeneği olarak görünmediği durumlarda ise, LinuxConf’u, komut satırından: # linuxconf sözcüğünü girerek çağırabilirsiniz. LinuxConf paketi kendi help imkanına sahiptir, ilgilendiğiniz ekran için help olanağını kullanabilirsiniz.

Page 12: 1 Linux Sistem Yönetimi II - web.itu.edu.trmscelebi/est566/notlar/Lecture1.pdf · 1 Linux Sistem Yönetimi II 1.1 Init Deamon Init deamon genellikle Linux çekirdeğinin boot edilmesi

Bir Kullanıcı Hesabı Açma Önce, Config/User Accounts/Normal/User Accounts yolu ile ekrana geliniz. Accept butonunu tıklayarak User Accounts tabına geliniz. Yeni bir kullanıcı eklemek için, pencerenin altındaki Add butonunu tıklayınız. Kulanımı isteğe bağlı (optional) olan alanlar dışındaki tüm alanlar doldurulmalıdır. Accept butonuna tıklayınca giriş tamamlanır ve bir sonraki ekranda kullanıcı şifresi (password) sorulur. Bu da girildikten sonra yeni kullanıcı sisteme katılmış olur. Login name : Kullanıcının sisteme girişte kullanacağı isimdir. Full name : Kullanıcının tüm adıdır. Group (opt) : Kullanıcının ait olduğu grubun adıdır. Supplementary groups : Kullanıcının ait olduğu diğer grupların adlarıdır. Home directory(opt) : Kullanıcı dosyalarının bulunacağı dizinin yol bilgisi ile birlikte adıdır. Command interpreter(opt) : Kulanılacak Linux kabuğunun (shell) yol bilgisi ile birlikte adıdır. Örneğin, /bin/bash şeklinde bir bilgi, kullanıcının bash kabuğunu kullanacağını belirtir. User ID(opt) : Kullanıcıyı sistemde diğer kullanıcılardan ayıracak olan sayısal koddur. Kullanıcı Hesabında Değişiklik: Bilgilerinde değişiklik yapmak istediğiniz kullanıcıyı seçin. Burada istediğiniz değişiklikleri yaparak accept butonunu seçin. Bir Kullanıcıyı Sistemden Silme: Bir kullanıcıyı sistemden silmek için kullanıcılar listesinden istediğiniz kullanıcıyı seçiniz. Pencerenin altındaki Del butonuna tıklayınız. Bu butona tıklayınca silme süreci başlayacaktır. Gelen ekranda size “bir hesabı siliyorsunuz. silinen kullanıcının home dizini ve mail kutusu arşivlenebilir, silinebilir ya da yerinde kalabilir, kararınız” şeklinde bir mesaj gelir. Burada size uygun olanını işaretleyiniz. Daha sonra Accept butonunu seçiniz. Böylece silme süreci tamamlanacaktır. Şayet arşivleme seçeneğini seçmişseniz, kullanıcıya ait home dizini, gzip’lenmiş bir tar dosyası olarak /home/oldaccounts dizini içinde saklanaktır. LinuxConf ile Grup İşlemleri: LinuxConf paketini kullanarak, kulanıcılarda olduğu gibi, gruplarda da benzer işlemleri yerine getirebilirsiniz. Bir Grup Eklemek: Yeni bir grup eklemek için, LinuxConf açılış penceresinin sol tarafındaki Group Definitions tabını tıklayınız. Bu işlem sonucunda mevcut grupların bir listesi gelecektir. Add butonunu tıklarsanız eklemek istediğiniz yeni grup ile ilişkili bilgilerin doldurulması gereken bir pencere karşınıza gelecektir. Bu pencerede zorunlu olan tek alan eklemek istediğiniz grubun adıdır. Bu pencereyi doldurup Accept butonunu tıklarsınız yeni grup listeye eklenir. Bunu grup listesini çağırarak gözleyebilirsiniz. Bir Grup Üzerinde Değişiklik: Üzerinde değişiklik yapmak istediğiniz grubu seçiniz. Gerekli değişiklikleri yaptıktan sonra da Accept butonu ile son durum listesine ekleyiniz. Bir grubu silmek için önce grup listesinin bulunduğu pencereyi getiriniz. Daha sonra silmek istediğiniz grubu seçiniz. Grubu seçince Group Specification penceresi gelecektir. Burada Del butonunu tıklayınız. Gelen ekranda silmeyi onaylamak üzere Yes butonunu seçiniz. Böylece seçtiğiniz grup silinecektir. Grup listesini getirerek son durumu inceleyiniz.

Page 13: 1 Linux Sistem Yönetimi II - web.itu.edu.trmscelebi/est566/notlar/Lecture1.pdf · 1 Linux Sistem Yönetimi II 1.1 Init Deamon Init deamon genellikle Linux çekirdeğinin boot edilmesi

1.8 Önceden Planlanmış Görevler Bir işletim sisteminin sorunsuz çalışmasını temin etmenin en iyi yollarından birisi otomatik tasarlanmış görevlerdir. Cron ve at programları sistem yöneticisini rahatsız etmeksizin belirli görevlerin daha önceden belirlenmiş zamanlarda çalıştırılmasını sağlarlar. Cron Programı Cron (Chronography’nin kısaltması) programı, belirli komutları belirli zamanlarda herhangi bir kişinin doğrudan başlatmasına gerek kalmaksızın çalıştırmasını sağlamak için tasarlanmıştır. Linux, cron’u sistem açıldığında bir saat “deamon’u” olarak yükler. Cron programı, genellikle bir rc dosya girişinden çalıştırılır, bunu devre dışı bırakmak için ise ilgili satırlar comment satırı yapılır. Çalıştığında, Cron crontab dosyası olarak adlandırılan bir dosyadan belirli bir görevi çalıştırmak zorunda olduğu gün ve zamanı okur. crontab dosyasının gün ve zamanın tanımladığı girişlerinden biri ile sistemin gün ve zamanı örtüşürse cron deamonu ilgili komutu çalıştırır. Görevlerin otomatik yapılmasının anlamı, teyp yedeklemesi, veritabanı reorganizasyonu ve genel dosya temizlemesi gibi düzenli olarak yapılan görevlerin bir otomatiğe bağlanmasıdır. Çoğu sistemde, cron’a erişim sistem yöneticisi ile sınırlıdır ama bu özellik bazı kullanıcılara veya tüm kullanıcıların hizmetine konuşlandırılabilir. Sistem yöneticileri, iki farklı dosyadan biri aracığı ile kimin cron tarafından devreye sokulmuş bir süreç yollayabileceğini kontrol eder. Bu dosyalar genellikle /usr/lib/cron/cron.allow veya /usr/lib/cron/cron.deny dır. Çoğu linux sistemi bu iki dosyayı kullanır, ve her iki dosyada da her iki satırda bir kullanıcı ismi vardır. /usr/lib/cron/cron.allow (veya /etc/cron.d/cron.allow) dosyası cron programını kullanmasına izin verilen tüm kullanıcıların kullanıcı isimlerini içerir. Örneğin, dosya mscelebi bill tparker Sadece mscelebi, bill ve tparker’ın cron kullanacak herhangi bir görev teslimi yapabileceğini söylemektedir. /usr/lib/cron/cron.deny dosyası cron kullanmasına izin verilmeyen kullanıcı isimlerini barındırır. Örneğin, dosya walter mehmet celal walter, mehmet ve celal dışında herkesin cron programını kullanabileceğini belirlemektedir. Eğer ne cron.allow ne de cron.deny dosyası mevcut değilse bu

Page 14: 1 Linux Sistem Yönetimi II - web.itu.edu.trmscelebi/est566/notlar/Lecture1.pdf · 1 Linux Sistem Yönetimi II 1.1 Init Deamon Init deamon genellikle Linux çekirdeğinin boot edilmesi

durumda sadece root bu programı kullanabilir. Tüm kullanıcıların cron’u kullanabilmesi için boş bir cron.deny dosyası oluşturmak yeterlidir. Bir Cron Dosyası Oluşturmak Komutları istenen gün ve zamanlarda çalıştıran bir cron dosyası oluşturmak için, crontab adlı yardımcı programı kullanmalıyız. Cron’un ne yapmasını istediğiniz işlerin detayını içeren bir dosyayı crontab programı okur ve işleme koyar. İlave olarak crontab, sizin o anki cron görev listenizi göstermek, listeyi kaldırmak ve ilave görevleri listeye eklemek gibi diğer birkaç yönetsel görevi de ifade eder. Görevlerin yazılı olduğu dosyaya kolaylık olsun diye crontab ismi verilir ama siz her hangi bir isim de verebilirsiniz. Crontab talimat dosyasının basit bir yapısı vardır. Dosya her süreç için bu sürecin detaylarını içeren tam bir satırdan oluşur ve değişik süreçleri ve ilgili satırları içerir. Her satırın formatı aşağıdaki gibidir: minute hour day-of-month month-of-year day-of-week command Gerçek bir crontab dosyasından alınan iki satır aşağıdaki gibidir. 20 1 * * * /usr/bin/calendar- 0 0 * * * /bin/organize_data Crontab dosyasındaki her satır, bir boşlukla ayrılmış 6 sütundan oluşur. Soldan sağa bu sütunlar aşağıdaki gibidir.

- Saatin dakikası (0-59) - Günün saati (0-23) - Ayın günü (1-31) - Ay (1-12) - Haftanın günü (sun = paz = 0, mon = pazts = 1,…..sat = cmts = 6) - Belirtilen gün ve zamandaki çalıştırılacak program

Crontab dosyasındaki belirtilen gün ve zamanda işlem başlatılır. Bu aşamada komutun işletilmesi için doğru pathname vermek çok önemlidir. Crontab dosyasının çalıştırılması için çalıştırma iznine sahip olmanız gerekmektedir. Eğer bir iki sayı kullanacak isek araları “-“ işareti ile ayrılmalıdır. Örneğin 1-5 birden beşe kadar olduğunu göstermektedir. Aşağıdaki örneği detaylı inceleyelim.

20 1 * * * /usr/bin/calendar- 0 2 1 * 0 /bin/organize_dta 10,30,50 9-18 * * * /bin/setperms

Bu örnek üç farklı süreci tanımlamaktadır. İlk komut /usr/bin/calendar- dir. Bu yılın her günü ve haftanın her günü sabah saat 1’i 20 geçe çalıştırılır. Yıldızın anlamı tüm değerler demektedir. Saat 2:00 AM’de bir betik dosya olan /bin/organize_data her ayın ilk gününde (3. sütunda 1) ve her Pazar (5. sutunda 0) günü çalıştırılır. Eğer ilk gün Pazar ise sadece bir kere çalıştırılacaktır. Üçüncü satırda bir betik dosya olan /bin/setperm, haftanın her gününde 9:00 AM ile 6:00 PM arasında her saat başı 10, 30, 50 dakika geçe çalıştırılır. Crontab dosyasındaki girişler özel bir sırada olmak zorunda değildirler.

Page 15: 1 Linux Sistem Yönetimi II - web.itu.edu.trmscelebi/est566/notlar/Lecture1.pdf · 1 Linux Sistem Yönetimi II 1.1 Init Deamon Init deamon genellikle Linux çekirdeğinin boot edilmesi

Crontab dosyanızda bir hata oluştuğunuzda cron size problem ile ilgili bir posta yollar. Crontab dosyanızı ev dizininizin içinde tutmaya özen gösteriniz.

Crontab Dosyalarının Yönetimi ve Teslimatı

Crontab dosyanızı yazdıktan sonra, çalıştırmak için cron’a teslim edebilirsiniz. Bir crontab dosyası teslim ettiğinizde, dosyanın bir kopyası hazırlanır ve cron klasöründe (genellikle /var/spool/cron/crontabs da) korunur. Dosyayı teslim eden kullanıcının ismiyle saklanır. Örneğin mscelebi tarafından teslim edilen bir crontab dosyası /var/spool/cron/crontabs/mscelebi ismiyle saklanır. Superuser tarafından teslim edilen crontab dosyaları root ismine sahiptir. Cron’a crontab dosyanızı teslim etmek için cron komutları içinde olan dosyanın ismini takip ettiği crontab komutunu kullanın. Örneğin komut:

crontab crontab_dosyasi

Cron’a mevcut klasörde crontab_dosyasi isimli dosyayı teslim eder. Eğer daha önceden bir crontab dosyası teslim etmişseniz, eskisi kaldırılır yerine yeni dosya kullanılır.

-l opsiyonu kullanarak cron’a ne teslim ettiğinizi görebilirsiniz. Örneğin:

crontab –l

tüm komut cron görevlerini komutu teslim eden kullanıcıya gönderir. Crontab dosyanızı kaldırmak için –r, opsiyonu kullanabilirsiniz. Bu opsiyon /var/spool/cron/crontabs ’dan sizin dizininizde saklanan dosyayı siler.

crontab –r

Son olarak, o anki geçerli olan cron dosyanızı çağırıp bir editör -e opsiyonu ile başlatabilirsiniz. Aşağıdaki komutu kullandığınızda :

crontab –e

crontab mevcut olan crontab dosyanızı okur, ve onu default (benimsenmiş) editöre (örneğin vi) yükler. Edit edilmiş dosyayı sakladığınızda bu dosya cron’a otomatik olarak teslim edilir. Crontab dosyasındaki değişiklikler en fazla beş dakika içinde devreye girer ve cron crontab dosyasını en az her beş dakikada bir okur.

Karmaşık Cron komutlarının Kullanımı

Crontab dosyası her tür komut ve kabuk betiği içerebilir. Çok sayıda kabuk komutu kullanılması durumunda karşılaşılabilen yaygın problem özellikle hata mesajlarının (ki size postalanırlar ve posta kutunuzu hızla doldururlar) ve çıktıların üretilmesidir. Bu nedenle, hata mesajlarının çıktılarını almak istemiyorsanız çıktıları /dev/null’a yönlendirebilirsiniz. Örneğin :

0 * * * * date > /tmp/test1 2>dev/null

date komutunun çıktısını, her saat başı /tmp/test1 isimli bir dosyaya ve hata mesajlarını /dev/null’ a yollar. Benzer şekilde:

Page 16: 1 Linux Sistem Yönetimi II - web.itu.edu.trmscelebi/est566/notlar/Lecture1.pdf · 1 Linux Sistem Yönetimi II 1.1 Init Deamon Init deamon genellikle Linux çekirdeğinin boot edilmesi

30 1 * * * cat /usr/tparker/chapt* > /usr/tparker/archive/backup

/usr/tparker’da chapt ile başlayan tüm dosyaları backup isimli tek bir büyük dosyaya bağlar.

Crontab dosyasında aynı zamanda boru (piping) işlemi de yapabilirsiniz. Örneğin, eğer sizde /temp/userlist dosyasında gün boyunca sisteme bağlanan kullanıcıların bir listesi varsa aşağıdakine benzer bir crontab dosyası girdisine sahip olabilirsiniz :

0 1 * * * sort -u /tmp/userlist/ | mail –s ”user for today” root

Bu satır /tmp/userlist ‘in çıktısını kontrol eder, öyle ki her kullanıcı (-u veya unique opsiyonu) için sadece bir giriş olduğunu ve bunu da root’a postalar.

Önemli bir hatırlatma: Tüm cron komutları default olarak Bourne shellde (bash kabuğu) çalıştırılır. Eğer C kabuk komutları kullanıyorsanız, cron görevi başarısız olacaktır.

at Programı

Bu program cron’a oldukça benzer, sadece farkı belirtilen bir zamanda sadece bir komut çalıştırır. at komutunun formatı aşağıdaki gibidir :

at time date < file

at komutun parametrelerini çok değişik biçimlerde tanımlamak mümkündür. (örneğin 10 pm ile akşam saat 10’nu tarif ederiz.) at komutu zaman tanımlaması olarak birkaç özel kelimeyi tanır. Komut noon, midnigth, now, next, ve zulu kelimelerini tanır.

Date, zaman yeterince spesifik olarak tanımladığı durumlarda opsiyonel olarak kullanılır. Eğer date belirtilemez ise spesifik time’in belirtildiği durumlarda komut işletilebilir. today ve tomorrow at komutunun date ile ilgili olarak tanıdığı iki önemli kelimedir. at komutuna girdi sağlayacak olan dosya içinde komutların olduğu herhangi bir dosya olabilir. Komutları satırdan ctrl+D ile girmek mümkün olmasına rağmen tavsiye edilemez. Farz edelim ki aşağıdaki gibi reorg.data isimli bir dosyamız olsun.

/usr/tparker/setperms /usr/tperker/sort_database /usr/tparker/index_database /usr/tparker/clean_up

Bu dosyayı saat 8:30 pm de çalıştırmak istiyorsak aşağıdaki komutlardan herhangi birisini kullanabiliriz.

at 20:30 < reorg.data at 8:30 pm < reorg.data at 20:30 today < reorg.data

komutu Cuma günü çalıştırmak istiyorsak: at 8:30 pm Friday < reorg.data

Page 17: 1 Linux Sistem Yönetimi II - web.itu.edu.trmscelebi/est566/notlar/Lecture1.pdf · 1 Linux Sistem Yönetimi II 1.1 Init Deamon Init deamon genellikle Linux çekirdeğinin boot edilmesi

at 0900 Monday next week < reorg.data

Yukarıdaki komut gelecek hafta pazartesi dosyayı işleme koyar. Ancak at versiyonlarının tümü bu karmaşık komutları çalıştırmaz. Bunun için man sayfalarına bakılmalıdır. Bir program at’a teslim edildiğinde geriye iş kimlik numarası elde edilir. Bu numara verilen işi unique olarak tanımlar örneğin; $ at 6 < do_it job 827362.a at wed Aug 31 06:00:00 EBT 1995 Bu durumda job ID:827362.a -l opsiyonu ile tüm işler listelenebilir. $at –l user= tparker job 827362.a at wed Aug 31 06:00:00 EBT 1995 user= tparker job 827383.a at wed Aug 31 09:30:00 EBT 1995 Sistemden bir at girişini kaldırmak için, job ID’ye ihtiyacımız vardır. Örneğin; at -r 2892732.a tanımlanan işi kaldırır. Herkes kendi işini kaldırabilir. at ile sıraya konulan tüm işler /usr/spool/cron/atjobs klasöründe job ID numarası dosya ismi olarak gözükecek şekilde tutulur. at.allow ve at.deny dosyalarında kimin at komutu kullanılacağına karar verilir. Boş bir at.deny dosyası oluşturursak, sistemdeki tüm kullanıcılar at’i kullanabilir. Bir at işi çalıştığında tüm çıktılar (standart çıktı ve hata mesajları ) işi teslim eden ( başka bir yere yönlendirme olmazsa ) kullanıcı ismine geri postalanır.