$ ls -l /bin/bash -rwxr-xr-x 1 root root :51 /bin/bash

Benzer belgeler
$ rm dosya1 dosya2 dosya3 dosya4 dosya5 dosya6 dosya7 dosya8

Komut Penceresi ile Çalışmaya Başlamak

Dosya/Dizin İzinleri. Okuma (r) Yazma (w) Çalıştırma (x) Dosya içeriğini görebilir mi? (Klasörler için) dosya listesini alabilir mi?

$ echo $PATH /sbin:/bin:/usr/sbin:/usr/bin:/usr/x11r6/bin: /usr/local/sbin:/usr/local/bin:/usr/games:.

man komut man ls (ls komutu hakkında bilgi verir.) man pwd (pwd komutu hakkında bilgi verir.)

Yrd. Doç. Dr. A. Burak İNNER

Linux altında komut satırında...

Temel Linux Komutları

Kullanım şekli: cal <ay> <yıl> Bu komut ile takvim görüntülenebilir.

Linux ta komutlar hakkında yardım almak için aşağıdaki komutlar kullanılır : - man - info - whatis - apropos

Temel Linux Eğitimi. İçindekiler

Aşağıda listelenen temel linux komutları bilgisayarınızın komut satırında çalıtırılacaktır.

Kazanımlar. Linux nedir? Linux dizin yapısı. Linux kabuğu nedir? Temel kabuk komutları. Bash programlama. Dosya işlemleri. Süreç yönetimi.

Linux Dosya ve Dizin Yapısı

AÇIK KAYNAK İŞLETİM SİSTEMLERİ - BÖLÜM 1. Temel komutlar,dosya ve Dizin İşlemleri, Kullanıcı ve Grup İşlemleri

Linux işletim sistemlerinde dosya hiyerarşisinde en üstte bulunan dizindir. Diğer bütün dizinler kök dizinin altında bulunur.

LİNUX. Dosyalar ve dizinler

Komutlar (Devam) ls -a > deneme (ls -a komutunun çıktısı deneme isimli. ls -a >> deneme (ls -a komutunun çıktısı deneme

3. DOSYA SİSTEMİ VE ÇALIŞMA MANTIĞI

LİNUX. Dosyalar ve dizinler

Program AkıĢ Kontrol Yapıları

Linux Dosya Yapısı. Eren BAŞTÜRK.

Temel LINUX Komutları

Fstab Rehberi. Ceren Çalıcı. Nisan, 2012

Temel Linux Eğitimi 1., 2. ve 3. Bölümler

Pardus ta Komutlarla Çalışmak

BİLGİ İŞLEM DERS 3. Yrd Doç Dr. Ferhat ÖZOK MSGSU FİZİK BÖLÜMÜ MSGSU FİZİK BÖLÜMÜ

Kabuk Programlama (Bash)

Yrd. Doç. Dr. A. Burak İNNER

Regular Expressions Version 0.1

FreeBSD Erişim Kontrol Listeleri

Windows XP: Simple Sharing, Security ve ForceGuest Perşembe, 07 Eylül :02 - Son Güncelleme Cumartesi, 12 Eylül :36

Paralel Hesaplama - Beowulf Cluster

*nix' lerde Etkin ve Pratik Arama Yöntemleri

Temel Linux Bilgileri Türk Standardları Enstitüsü Yazılım Test ve Belgelendirme Dairesi Başkanlığı

NETCAD 6 GIS KURULUMU (2012)

Kullanıcı ve Grupların yönetimi

Apache üzerinden Red Hat 5 yüklenmesi

NFS (Network File System) & NIS (Network Information System) H. Coşkun Gündüz cgunduz@cs.bilgi.edu.tr

CYGWIN KURULUMU ve KULLANIMI

Bilgi ve İletişim Teknolojileri (JFM 102) Ders 7. LINUX OS (Sistem Yapısı) BİLGİ & İLETİŞİM TEKNOLOJİLERİ. LINUX Yapısı

Linux Ubuntu Kurulumu

BOOTLOADER MANUAL DOCUMENT

Toplama işlemi için bir ikili operatör olan artı işareti aynı zamanda tekli operatör olarak da kullanılabilir.

UFS SNAPSHOT. Hazırlayan: Asiye Yigit Agustos

C Konsol ve Komut Satırı

Autofs. Hüseyin Kaya

BÖLÜM 23 TD F8 F4 SHIFT ESC ENTER M1.7 M1.6 M1.5 M1.4 M1.3 M1.2 M1.1 M1.0 F8 F7 F6 F5 F4 F3 F2 F1. Shift + F1

Pardus 2013 te Metin Editörleri

Medisoft E-Reçete Bildirimleri Kullanım Kılavuzu

Tavsiye Edilen Önhazırlık Temel veritabanı kavramlar hakkında bilgi sahibi olmak. Hedefler Temel veritabanı güvenlik işlemlerini gerçekleştirebilmek

Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

-Bilgisayarı oluşturan iki temel unsurdan diğeri ise YAZILIM dır.

Kullanıcı Hesabı ve Şifre Yönetimi

Verimlilik İçin ETKİN BİLGİ YÖNETİMİ DÜŞEYARA (VLOOKUP) UYGULAMALARI

Bir üst dizinde yer alan prog1 programını çalıştırmak için aşağıdaki komutlardan hangisini çalıştırmak gerekir?

Temel Bilgisayar Programlama Final Sınavı Çalışma Notları

DAO İLE SQL KOMUTLARI. Sql komutlarını artık veri tabanında kullanmaktan başka çaremiz yok arkadaşlar. Şimdi bu sql derslerimize başlayalım.

Windows 2000 veya XP kurarken dosya sistemini seçmeniz gerekir. Ya FAT32 dosya sistemini kullanırsınız ya da NTFS.

KÜMELER 05/12/2011 0

Fortran komut satırı toplam 80 kolon ve 5 bölgeden oluģur. Komut satırının yapısı aģağıdaki gibidir:

BASİT C PROGRAMLARI Öğr.Gör.Dr. Mahmut YALÇIN

Sanal Makine Kurulumu (VirtualBox)

Exploit Nedir, Nasıl Kullanılır?

13 Aralık Đlgili Versiyon/lar : ETA:SQL, ETA:V.8-SQL. Đlgili Modül/ler : Raporlar. Kullanıcı Tanımlı Raporlar Bölümünden Yapabildiklerimiz

Program akıģı sırasında belirtilen satır numaralı yere gitmek için kullanılır. Genel formu: [<satır numarası>] GOTO <satır numarası 1> GOTO n

Türkiye Linux Kullanıcı Grubu NFS & NIS. Kerem ERZURUMLU. kerem@linux.org.tr. 1. Linux ve Özgür Yazılım Şenliği.

PHP 1. Hafta 2.Sunum

kullanımınızda şifrenizi değiştirmeniz nedenle şifrenizi kimseye vermeyiniz.

.docx veya.doc (2007 ve üzeri sürümlerde.docx iken sürümlerinde.doc tur.) 1.Belge Başlığı

FORMÜLLER VE FONKSİYONLAR

KABUK PROGRAMLAMA (shell programming- scripting)

Pratik Maliyet ve Karlılık

Aktif Dizin Logon/Logoff Script Ayarları Versiyon

Bigisayar Programlama

ÖĞRENME FAALĠYETĠ 3 ÖĞRENME FAALĠYETĠ 3

Yrd. Doç. Dr. A. Burak İNNER

C Dersleri Bölüm 3 : Program akışı

İÇERİK YÖNETİM SİSTEMİ KULLANMA KILAVUZU

Seri No Takibi İÇERİK

İNTERNET PROGRAMCILIĞI HAFTA MYSQL - PHPMYADMIN. Hazırlayan Fatih BALAMAN. İçindekiler. Hedefler. Mysql Nedir.

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

ALGORİTMA VE PROGRAMLAMA I

Sun Solaris ve RBAC ( Role Based Access Control List)

Kurumsal Güvenlik ve Web Filtreleme

Widows un çalışmasında birinci sırada önem taşıyan dosyalardan biriside Registry olarak bilinen kayıt veri tabanıdır.

Tavsiye Edilen Önhazırlık Temel SQL Server 2000 bilgisi edinmek.

İŞLETİM SİSTEMLERİ. İŞLETİM SİSTEMİ Kavramı. Klasör ve Dosya Mantığı. Klasör ve Dosya Mantığı

SIMAN KULLANIM KILAVUZU

Dosya Yönetimi. Dosya, Klasör ve Sürücüler. Ahmet SOYARSLAN biltek.info

E-Posta Hesabı Oluşturma

TAPU VERİ SAYISALLAŞTIRMA YAZILIMI KURULUM DÖKÜMANI. Tapu Kadastro Genel Müdürlüğü-Bilgi Teknolojileri Daire Başkanlığı Page 1

Bash ile Programlama. Cem Ahmet Mercan. Ulusal Yüksek Başarımlı Hesaplama Merkezi (UHeM) 13 Temmuz 2017

Bilgisayarım My Computer

TEMEL BİLGİ TEKNOLOJİSİ KULLANIMI. Enformatik Bölümü

Kurumsal Güvenlik ve Web Filtreleme

ELE 201 DEVRE ANALİZİ I ARA SINAV 1 11 Ekim 2011, Salı,

Adli Analiz İşlemlerine Başlamak

İŞLETİM SİSTEMLERİ. (Operating Systems)

TIBBI MALZEME REÇETELERİ

Transkript:

Linux izin modeli Bir kullanıcı, bir grup Bu bölümde, Linux un izin ve sahiplik modelini inceleyeceğiz. Daha önce gördüğümüz üzere, her dosyanın sahibi olan bir kullanıcı ve bir grup vardır. Linux un izin modellerinin özünde bu vardır. Dosyaların sahibi olan kullanıcı ve grupları, ls -l komutuyla listeleyebilirsiniz: $ ls -l /bin/bash -rwxr-xr-x 1 root root 579816 2002-09-12 00:51 /bin/bash Bu örnekte, /bin/bash çalıģtırılabilir dosyasının sahibinin root kullanıcısı ve root grubu olduğunu görüyoruz. Linux izin modeli, her bir dosya için belirlenen üç ayrı izin katmanından oluģur. Bu üç katman, dosya sahibinin izinleri, grubun izinleri ve tüm diğer kullanıcıların izinleridir. ls -l komutumuzun çıktısını inceleyelim. Ġlk -rwxr-xr-x bölümü, dosya izinlerinin sembolik gösterimidir. BaĢtaki tire (-) karakteri dosyanın tipini belirtir. Bu örnekteki dosya normal bir dosyadır. Diğer dosya çeģitleri ve onları ifade eden karakterler Ģöyledir: d dizin l sembolik bağlantı c character special device b block special device p fifo s socket Dosya tipini belirten karakteri takip eden üç adet üçlü harf grubu görüyoruz. Ġlk üçlü grup dosyanın sahibinin haklarını, ikinci grup dosyanın sahibi olan grubun haklarını, son üçlü grup da diğer tüm kullanıcılar için geçerli olan hakları simgeler. Dosya sahibinin Hakları Grubun Hakları - rwxr - x r - x Diğer Tüm Kullanıcılar 1

Burada; r harfi, dosyanın içeriğinin okunmasına izin verildiği anlamına gelir. w harfi, dosyaya yazı yazılabileceğini (bu aynı zamanda değiģiklik yapma ve silme iģlemlerini de kapsar), x harfi de dosyanın çalıģtırılabileceğini gösterir. Tüm bunları bir araya getirdiğimizde görüyoruz ki, örneğimiz olan dosyayı herkes okuyabilir ve çalıģtırabilir ama sadece sahibi (root) dosyanın değiģtirilmesi konusunda hak sahibidir. Dolayısıyla, tüm kullanıcılar bu dosyayı kopyalama hakkına sahipken, sadece root un güncelleme ya da silme hakkı vardır. Ben kimim? Bir dosyanın sahibi olan kullanıcıyı ve grubu değiģtirmeyi görmeden önce, halihazırda çalıģan kullanıcının kim olduğunu öğrenme ve grup üyelikleri hakkında bilgi alma yöntemini inceleyelim. Eğer bilgisayarı açtıktan sonra su komutunu hiç çalıģtırmadıysanız, bilgisayarı açarken girdiğiniz kullanıcı olarak devam ediyorsunuz demektir. Eğer sık sık su komutunu çalıģtırıyorsanız, o anda hangi kullanıcıyla çalıģtığınızı hatırlamayabilirsiniz. Bu durumda whoami komutunu kullanabilirsiniz: # whoami root # su masa01 $ whoami masa01 Hangi grupların üyesiyim? Hangi gruplara üye olduğunuz öğrenmek için groups yazmanız yeter: $ groups knoppix dialout fax voice cdrom floppy tape sudo audio dip video games users usb Bu örnekteki kullanıcı, knoppix, dialout, fax, voice, cdrom, floppy, tape, sudo, audio, dip, video, games, users, usb gruplarına üyedir. Diğer kullanıcıların grup bilgilerini de öğrenebilirsiniz. Bunun için, groups komutuna argüman olarak kullanıcı adlarını vermelisiniz: $ groups root daemon root : root daemon : daemon 2

Kullanıcı ve Grup Haklarını Değiştirmek Bir dosyanın ya da baģka bir dosya sistemi nesnesinin sahip olduğu kullanıcı ya da grubu değiģtirmek için sırasıyla chown ve chgrp komutlarını kullanabilirsiniz. Bu komutlarda her biri bir isim ve bunu takip eden bir ya da daha fazla dosya ismi ile kullanılır. # chown root /etc/passwd # chgrp users /etc/passwd Ayrıca isterseniz chown komutunun alternatif bir kullanımı ile tek seferde dosya sahibini ve sahip olduğu grubu değiģtirebilirsiniz. # chown root.users /etc/passwd superuser olmadığınız sürece chown komutunu kullanmamalısınız ancak dosyanın ait olduğu grubu sahip olduğunuz gruplardan birisi olarak belirlemek amacıyla chgrp komutunu normal kullanıcı durumunda da kullanabilirsiniz. chown ve chgrp komutlarının her ikisi de bir dizin ağacındaki tüm dosya ve dizinlerin sahip oldukları kullanıcı ve grupları özyineli olarak değiģtirmek amacıyla -R opsiyonuna sahiptirler. Örneğin: # chown -R knoppix /home/knoppix chmod ve chown komutlarının herhangi bir dosya sistemi nesnesinin ait oldukları grup ve kullanıcıyı değiģtirdiğini söyledik. Ayrıca dosya ve dizinler üzerinde tanımlı ve ls -l listelemesiyle gördüğümüz dosya sistemi nesnelerinin yazma-okuma-çalıģtırma izinlerini de chmod komutu ile değiģtirebiliyoruz. chmod iki ya da daha fazla parametre almaktadır: ġöyle ki: Ġzinlerin nasıl değiģeceğini belirleyen durum parametresi (mode) Bunu izleyen ve izin iģleminin üzerinde uygulanacağı dosya ya da dosyaların isimleri $ chmod +x Desktop/KNOPPIX.desktop Yukarıdaki örnekte durum parametremiz +x olarak belirlenmiģtir. Tahmin edeceğiniz gibi +x bu söz konusu dosyayı hem kullanıcı hem de grup ya da baģka herhangi birisi için çalıģtırılabilir hale getirecektir. Eğer bir dosyanın tüm çalıģtırılma izinlerini kaldırmak istiyorsak, yapmamız gereken: $ chmod -x Desktop/KNOPPIX.desktop ġu ana kadar chown komutunun tüm örneklerinde izinler user, group ve other Ģeklinde tanımlanan her üç nesne için de uygulandı. Genellikle bu üçlüden bir ya da ikisi için izin belirlenmesi daha uygundur. Bunu yapmak için bu üçlüden birisini temsil eden sembolik karakter ile birlikte izin tipini + ya da olarak belirtiriz. u karakterini user, g karakterini group ve o karakterini other (diğerleri) için kullanırız: $ chmod go-w Desktop/KNOPPIX.desktop 3

Yukarıdaki örnekte KNOPPIX.desktop dosyasına yazma hakkını dosyanın ait olduğu grup ve diğer herhangi bir kullanıcı ya da grup için kaldırdık. Ama dosyanın sahibi olan kullanıcı için bu hakkı değiģtirmedik. Ġzin bitlerini açığı kapamak için hepsinin birden sıfırlayabiliriz. = operatörünü kullanarak, chmod komutuna ilgili dosya için sadece belirlediğimiz hakları vermek ve bunlar dıģındaki hakları da vermemek istediğimizi söyleyebiliriz. $ chmod =rx Desktop/KNOPPIX.desktop Yukarıda üçlünün tamamı için KNOPPIX.desktop dosyası üzerinde okuma ve çalıģtırma hakkını verdik ama write hakkını vermedik. Üçlünün belli bir tanesi için hakları ayarlamak istiyorsanız aģağıdaki örnekte gösterildiği gibi = operatöründen önce bu üçlüden ilgili olanı belirttiğiniz sembolü yazabilirsiniz. $ chmod u=rx Desktop/KNOPPIX.desktop Sayısal Kalıplar ġu ana kadar chmod komutu ile dosya haklarını düzenlemek için hep sembolik kalıpları kullandık. Oysa bu iģ için çok sık kullanılan bir baģka yöntem daha var, 4 basamaklı bir sekizli sistem sayısı. Bu sayısal izin ifadelerinde her bir basamak bir izin grubunu ifade eder. Örneğin 1777 ifadesinde, 777 rakamları dosyanın sahibi olan kullanıcının, grubun ve diğer kullanıcıların izinlerini ifade eder. BaĢtaki 1 ise özel izinleri ifade eder, bu özel izinler konusuna bu bölümün sonunda gireceğiz. AĢağıdaki tabloda bu sekizli sistem sayılarının nasıl yorumlandığını görüyorsunuz: Kalıp rwx 7 rw- 6 r-x 5 r-- 4 -wx 3 -w- 2 --x 1 --- 0 Rakam Sayısal ifadeler çoğunlukla, bir dosya üzerindeki hakların tamamıyla ilgili bir düzenleme yapılacaksa kullanıģlıdır. AĢağıdaki örneği inceleyecek olursak: $ chmod 0755 Desktop/KNOPPIX.desktop $ ls -l Desktop/KNOPPIX.desktop -rwxr-xr-x 2 masa01 masa01 124 2003-04-25 09:56 deneme.txt 4

Bu örnekte -rwxr-xr-x ifadesine denk gelen 0755 kalıbı kullanılmıģ. Yani dosyanın sahibi olan kullanıcı tüm haklara sahipken, gruba ve diğer kullanıcılara sadece okuma ve çalıģtırma hakları veriliyor. umask Bir iģlem yeni bir dosya yarattığında, o dosyayla ilgili hakları da, kendisine en uygun olacak Ģekilde belirler. Genellikle herkesin okuyabileceği ve yazabileceği kalıp olan 0666 belirlenir ve bu kalıp aslında tahmin edilenden ve istenenden daha fazla toleranslıdır. Neyse ki, Linux yeni bir dosya yaratıldığında umask dediğimiz yapıya danıģır. Dosyaya baģlangıçta verilen haklar, umask değerine bakılarak, daha gerçekçi ve güvenilir bir seviyeye düģürülür. Komut satırında umask yazdığınızda o andaki umask ayarınızı görebilirsiniz: $ umask 0022 Linux sistemlerde umask standart olarak 0022 olarak ayarlanmıģtır. Bu diğer kullanıcıların dosyalarınızı (eğer ulaģabilirlerse) okuyabileceği ama değiģtiremeyeceği anlamına gelir. Yeni dosyaların daha güvenli olması için umask ayarını değiģtirebilirsiniz: $ umask 0077 Bu umask değeri, dosyanın grubunun ve diğer kullanıcıların, yeni dosya üzerinde hiçbir hakka sahip olmamalarına sebep olur. Bu umask değeri gruba ait kullanıcıların ve diğerlerinin yeni yaratılan dosyalar üzerinde öntanımlı olarak herhangi bir izne sahip olmalarını engeller. Peki, o halde bu umask nasıl çalıģır? Dosyalar üzerinde iģ yaparken kullanılan düzenli (normal) izinlerden farklı olarak umask dediğimiz değer hangi izinlerin OLMAYACAĞINI belirler. Tablomuza bakıp 0077 umask değerinin ne anlama geldiğini çözmeye çalıģalım. Tabloya göre 0077 ifadesinin son iki rakamı rwxrwx izin durumuna karģılık gelmektedir. ġimdi de lütfen umask değerinin hangi izinlerin iptal edileceğine dair bilgi içerdiğini hatırlayın. Bu bilgileri birlikte düģünürsek görürüz ki grup ve diğer izinler kapatılırken kullanıcı izinlerine dokunulmayacaktır. suid ve sgid ye giriş Makineyi açtığınızda ve bir oturum açtığınızda yeni bir kabuk süreci baģlar. Bunu zaten biliyorduk, ama bununla ilgili bilemeyeceğiniz bir Ģey daha var ki, o da bu yeni kabuk süreci (aslında bash) sizin kullanıcı bilginizle çalıģır. Böylece, sizin sahibi olduğunuz dosya ve dizinlere ulaģabilir. Aslında, bizler kullanıcı olarak, bizim adımıza iģlemler yapan programlara tam anlamıyla bağlıyız. Çünkü kullanıcı bilgilerimizi verdiğimiz programlar, dosya sisteminde, bizim iznimizin olmadığı herhangi bir nesneye ulaģamayacaktır. Örneğin, normal kullanıcılar passwd dosyasına yazma hakkına sahip değildir, çünkü root dıģındaki tüm kullanıcıların yazma hakkı kaldırılmıģtır: $ ls -l /etc/passwd -rw-r--r-- 1 root users 1239 2003-04-25 10:19 /etc/passwd 5

Oysaki normal kullanıcıların da, en azından dolaylı olarak, bu dosya üzerinde değiģiklik yapmaya ihtiyacı olabilir, örneğin Ģifrelerini değiģtirecekleri zaman. Ama normal kullanıcıları bu dosya üzerinde yazma hakkı yoksa nasıl olacak bu iģlem? Linux izin modelinde suid ve sgid isimli iki özel bit vardır. Eğer çalıģtırılabilir bir dosyanın suid bit i ayarlanmıģsa, o dosya, o anda çalıģtıran kullanıcı değil de, asıl sahibi olan kullanıcının adıyla çalıģtırılıyormuģ gibi olur. ġimdi /etc/passwd dosyasıyla ilgili problemimize geri dönelim. passwd çalıģtırılabilir dosyasına baktığımızda sahibinin root kullanıcısı olduğunu görürüz: $ ls -l /usr/bin/passwd -rwsr-xr-x 1 root root 24680 2002-04-07 17:59 /usr/bin/passwd Burada gördüğümüz bir detay daha var. Dosya sahibi olan kullanıcının izinlerini ifade eden üçlüde x yerine s harfi bulunuyor. Bu s harfi, ilgili dosya için suid ve çalıģtırılabilirlik bitlerinin ayarlandığını belirtiyor. Bu nedenle, passwd komutu çalıģtığında, o anda çalıģtıran kullanıcı değil de root kullanıcısı tarafından çalıģtırılıyormuģ gibi olacaktır ve passwd komutu root haklarıyla çalıģınca, /etc/passwd dosyasını da bir problem olmadan düzenleyebilecektir. suid nin nasıl çalıģtığını gördük, sgid de aynı Ģekilde çalıģır. Programların, o anda çalıģan kullanıcının değil de programın üzerindeki grup haklarına göre çalıģmasına dayanır. suid ve sgid hakkında birkaç önemli ipucu verelim. suid ve sgid bitleri ls -l listelemesinde x harfinin bulunduğu yerde bulunurlar. Eğer hem x hem de suid bitleri aktifse, listede s (küçük harf olarak) görülür. Ama x biti aktif değil, suid biti aktifse S (büyük harf olarak) görüntülenir. Bir baģka önemli nokta: suid ve sgid bitleri birçok durumda çok kullanıģlı gibi görünseler de, bazı dikkatsiz kullanımlarda sistemin güvenliğinde önemli açıklara sebep olabilirler. Bu yüzden ne kadar az suid li program olursa o kadar iyidir. passwd komutu da, suid ye kesin olarak ihtiyaç duyan birkaç programdan biridir. suid ve sgid nin değiştirilmesi suid ve sgid bitlerinin ayarlanmaları ve iptal edilmeleri Ģu ana kadar gördüğümüz izin ayarları ile aynıdır. Örneğin suid bitinin ayarlanması Ģöyledir: # chmod u+s /usr/bin/program Burada da bir dizin üzerinden sgid bitinin kaldırılmasını görüyoruz. Biraz ileride de sgid bitinin dizinler üzerindeki etkilerini inceleyeceğiz. # chmod g-s /home/knoppix 6

İzinler ve dizinler ġu ana kadar normal dosyaların izinlerinden bahsettik. Konu klasörler olunca, iģler biraz değiģiyor. Klasörler de izin konusunda aynı kalıpları kullanırlar, ama yorumlanmaları biraz farklıdır. Bir klasör için, read hakkı o klasörün içeriğinin görüntülenebilmesi, write hakkı klasör içinde dosya yaratılabilmesi, execute hakkı da klasör içindeki altdizinlere ulaģılabilmesi anlamına gelir. execute biti ayarlanmamıģsa, klasör içinde ulaģılabilir olmayan dosya sistemi nesneleri olduğu anlamına gelir. read biti ayarlanmamıģsa, klasör içinde görüntülenemez nesneler vardır. Bu nesneler ancak, disk üzerindeki tam yolu bilindiğinde ulaģılabilir. Dizinler ve sgid Bir dizinin sgid biti ayarlanmıģsa, bu dizinin grup bilgileri, içinde yaratılan herhangi bir dosya sistemi nesnesine de yansıyacaktır. Bu özellik, aynı gruba üye olan birkaç kullanıcının kullanacağı bir dizin ağacı oluģturulacağında, kullanıģlı olacaktır. ġöyle ki: # mkdir /home/grupalani # chgrp benimgrubum /home/grupalani # chmod g+s /home/grupalani Burada, benimgrubum üyesi olan tüm kullanıcılar /home/grupalani altında dosya veya dizin yaratabilir ve bu yeni dosya ve dizinlerin grubu, otomatik olarak benimgrubum atanacaktır. Yeni nesnelerin, benimgrubum üyesi olan diğer kullanıcılar tarafından okunabilirlik, yazılabilirlik ve çalıģtırabilirlik ayarları, o dosyanın yaratıcısı olan kullanıcının umask değerine bağlıdır. Dizinler ve silme işlemi Linux dizinleri standart ayarları aslında günlük kullanımda çok ideal ayarlar değildir. Normal olarak, bir klasöre ulaģma hakkı olan kiģinin o klasör içindeki bir dosyayı silme veya yeniden adlandırma hakkı olması beklenir. Bireysel kullanıcıların dizinleri böyledir ve en uygunu da budur. Ancak birçok kullanıcının eriģtiği ve kullandığı klasörler için özellikle /tmp ve /var/tmp, bu uygulamanın bazı zararları olabilir. Tüm kullanıcıların eriģme hakkı olması, aynı zamanda silme veya değiģtirme hakkı olması anlamına da gelir, yani bir kullanıcı diğerinin dosyalarını, sahibi olmadığı halde, silebilir veya değiģtirebilir. Bu nedenle /tmp klasörünü önemli iģler için kullanmamakta fayda var, çünkü herhangi bir kullanıcı rm -rf /tmp/* yazarak tüm dosyaları silebilir. Neyse ki Linux, yapıģkan bit özelliğiyle bu problemi de çözüyor. /tmp dizinini yapıģkan biti ayarlanmıģsa (chmod +t ile), bu dizindeki dosyaları sadece root, dizinin sahibi (genellikle root) ya da o dosyanın sahibi silebilir veya yeniden adlandırabilir. Tüm Linux dağıtımlarında, /tmp dizininin yapıģkan biti ayarlanmıģtır, ancak görüldüğü gibi sadece /tmp dizininde değil birçok yerde yapıģkan bit iģe yaramaktadır. 7

Özel ilk basamak Bu bölümü sona erdirmeden önce, sayısal ifadelerde bahsi geçen ilk basamaktan bahsedelim. Gördüğünüz gibi ilk basamak yapıģkan bitlerin, suid ve sgid bitlerinin ayarlanması için kullanılıyor: suid sgid stickymode basamak on on on 7 on on off 6 on off on 5 on off off 4 off on on 3 off on off 2 off off on 1 off off off 0 8

Joker karakterler Günlük Linux kullanımında çok defa bir operasyonu tek seferde birden fazla nesne için çalıģtırmak isteyebileceğiniz (rm gibi) durumlarla karģılaģabilirsiniz. Böyle durumlarda, aģağıdaki gibi bütün dosyaları komut satırına yazmak çok gereksizdir: $ rm dosya1 dosya2 dosya3 dosya4 dosya5 dosya6 dosya7 dosya8 Bu problemi çözmek için, Linux un kendi içinde yer alan joker karakter desteğinin getirdiği avantajdan yararlanabilirsiniz. Aynı zamanda (tarihsel nedenlerden dolayı) globbing olarak da adlandırılan bu destek, joker karakter modelini kullanarak tek seferde birden fazla dosyayı belirlemenize olanak sağlar. Joker karakter sözdizimi: * tanesi: * Joker karakterler arasında birkaç özel karakter kullanabilirsiniz; iģte bunlardan bir Yıldız (asterix) * iģareti sıfır veya daha fazla karakterle eģleģecektir. Bunun anlamı * olan yere herhangi bir Ģey gelebileceğidir. Örnekler: /etc/g* belirtimi /etc nin altında g ile baģlayan tüm nesnelerle eģleģir. /tmp/my*1 belirtimi /tmp nin altında my ile baģlayan ve 1 ile biten tüm nesnelerle eģleģir. Joker karakter sözdizimi:? Soru iģareti? herhangi bir tek karakterle eģleģir. Örnekler: dosyam? belirtimi dosyam ile baģlayıp bir tane daha karakter içeren nesnelerle eģleģir. /tmp/notlar?txt belirtimi hem /tmp/notlar.txt, hem /tmp/notlar_txt dosyasıyla eģleģir, eğer mevcutlarsa. Joker karakter sözdizimi: [] Bu joker karakterler? ile benzerdir, ancak daha fazla kesinlikte ayrım yapma Ģansını verir. Bu joker karakterleri kullanmak için, [] arasında eģlemek istediğiniz tüm karakterleri koymalısınız. Sonuçta elde edilen eģleģme bu karakterlerin herhangi birinin tek eģleģmesini verecektir. - (eksi) iģaretini bir aralık vermek için kullanabilirsiniz, hatta birden fazla aralığı birlikte kullanabilirsiniz. Örnekler: dosyam[12] belirtimi dosyam1 ve dosyam2 ile eģleģecektir. Wildcard, çalıģılan dizindeki karakterlerden en az bir tanesi mevcut olacak Ģekilde geniģletilecektir. 9

[Cc]hange[Ll]og belirtimi Changelog, ChangeLog, changelog, ve changelog ile eģleģecektir. Gördüğünüz gibi, köģeli parantez joker karakterlerini kullanmak küçük / büyük harf eģleģmelerindeki kombinasyonları yakalamak için faydalı olacaktır. ls /etc/[0-9]* komutu /etc nin altında rakamla baģlayan tüm dosyaları listeler. ls /tmp/[a-za-z]* komutu /tmp nin altında küçük ya da büyük harfle baģlayan tüm dosyaları listeler. Joker karakter sözdizimi: [!] [!] yapısı [] yapısına benzemektedir. Ancak bu sefer [] parantezde yer alan karakterle eģleģtirme yerine, parantezler içerisinde bulunmayan karakterler ile eģleģtirme yapılmaktadır. Örnekler: rm dosyam[!9] Bu komut ismi dosyam9 olan dosya dıģındaki tüm dosyaları yok eder. Joker karakter ile ilgili uyarılar Burada joker karakter kullanırken dikkat edilmesi gereken bazı noktalara değineceğiz. Bash wildcard ile ilgili karakterler (?, [, ], *) yazıldığı zaman buna göre özel bir iģlem yapacağından, bir komuta parametre geçirirken bu karakterler kullanılacaksa dikkat edilmelidir. Örneğin, [fo]* ifadesini içeren bir dosya yaratmak istediğimizde aģağıdaki yazılı olan komut yapmak istediğimiz Ģeyi gerçekleģtirmeyecektir: $ echo [fo]* > /tmp/yenidosyam.txt Eğer [fo]* modeli, dizin içerisinde herhangi bir dosya ile eģleģiyorsa, bu durumda /tmp/yenidosyam.txt dosyası içerisinde görmeyi beklediğiniz [fo]* ifadesi yerine bu eģleģen dosyaları göreceksiniz. O halde çözüm nedir? Bunun için gerekli çözümlerden birisi karakterlerinizi tek tırnak içerisinde yazmanızdır. Bu yaklaģım, kabuğa bu karakterler üzerinde hiç bir joker karakter iģlemi yapmaması gerektiğini anlatır. $ echo [fo]* > /tmp/yenidosyam.txt Bu yaklaģımı kullandığınızda yeni dosyanız beklediğiniz gibi [fo]* karakter dizimini içerecektir. Alternatif olarak, ters bölü (backslash) kullanarak karakterlerinizin bash için, joker karakter yerine normal karakter anlamına gelmesini sağlayabilirsiniz. (escape characters) $ echo \[fo\]\* > /tmp/yenidosyam.txt 10

Yukarıda anlatılan her iki yaklaģımda aynı Ģekilde çalıģacaktır. Ters bölü (backslash) karakterinin bu Ģekilde kullanımından da bahsettiğimize göre, eğer karakter olarak backslash (\) kullanmak istiyorsanız bunu tek tırnak içinde ya da \\ Ģeklinde yazabileceğinizi söyleyebiliriz. 11

man Her Linux sürümü, ihtiyacınız olan her türlü bilgiye ulaģmanızı sağlayan belgelerle donatılmıģtır. Kullanıcı komutları, sistem çağrıları, subroutine ler, donanım, oyunlar, sistem yönetimi ve benzer konularda, bu belgelerden yardım alabilirsiniz. Bu belgelerdeki bilgilere nasıl ulaģacağınız, aģağıda açıklanmıģtır: En çok kullanılan belge cinsi, man sayfaları denen, programcının rehberi olarak geçen belgelerdir. /usr/man dizini altında bulunurlar. Herhangi bir program veya komut için yardım almanız için, $ man <program veya komutun ismi> $ man rm Ekrana çıkan dokümandan çıkmak için q ya basmanız gerekir. AĢağıdaki tabloda man komutu ile elde edilebilecek yardım sayfaları içindeki konular ve bölümleri verilmiģtir: Bölüm Konu 1 Kullanıcı Araçları (user tools) 2 Sistem Çağrıları (system tools) 3 C Kitaplık Çağrıları (C library tools) 4 Cihaz Sürücü Bilgisi (device driver information) 5 Konfigürasyon Dosyaları (configuration tools) 6 Oyunlar (games) 7 Paketler (packages) 8 Sistem Araçları (system tools) Aranan konu ile ilgili bilgi birden fazla bölüm içinde var olabilir, bu durumda her bölüm kendi alanı ile ilgili kısmını size aktarır. Örneğin C deki printf fonksiyonu ile ilgili olarak hem 3. hem de 1. bölümde bilgi bulunabilir. 1. bölümdeki açıklama komut satırı bakıģ açısından 3. bölümdeki açıklama ise fonksiyonun C dilindeki kullanımı açısından olacaktır. Bu bilgilere eriģmek için: $ man 1 printf Veya $ man 3 printf yazılmalı. Belirli bir komutun tüm yardım sayfalarındaki tekrarını görmek ve bu konuda özet bilgi almak için, komutu aģağıdaki gibi, -k parametresi ile girmek gerekir. $ man -k printf 12

aprospos ve info man içinde herhangi bir kelimeyi de arattırabiliriz. Diyelim modemle ilgili bir sorun var ve çözmek için hangi programlara ihtiyacınız olduğunu bilmiyorsunuz. 'man modem' yazarsanız sonuç alamazsınız, çünkü bu isimli bir komut veya program mevcut değildir. Ancak içinde 'modem' kelimesi geçen man sayfalarının bir dökümünü almak iģe yarayabilir. Bu iģlem için, 'apropos' komutu kullanılır: $ apropos modem info komutu ile de komutlar ve konuları hakkında bilgi almak mümkündür. $ info emacs Bazı komutlar AĢağıda bazı temel Linux/Unix komutlarının kısa tanımları verilmiģtir: *Mevcut iģletim sisteminin isminin görüntülenmesi $ uname *O anki tarih ve zamanın görüntülenmesi $ date Fri Feb 25 12:55:29 MST 2003 *Takvimin öğrenilmesi $ cal * Belirli bir yıl ay için takvimin çağırılması $ cal 12 2003 *Sistemi aktif olarak kullanan mevcut kullanıcıların listelenmesi $ who *Mevcut kullanıcı isminin öğrenilmesi (ben kimim) $ whoami *Komut satırından birden fazla komutun devreye sokulması $ date;cal;whoami 13

Grep ve Düzenli İfadeler Düzenli ifadeler ( regex veya regexp de denir) yazı kalıplarını ifade etmek için kullanılan özel bir biçimdir. Linux sistemlerinde, arama ve değiģtirme iģlerinde olduğu kadar yazı kalıplarının bulunmasında da düzenli ifadeler kullanılır. Kaynaklar C ve Sistem Programcılar Derneği, 2002, Unix/Linux Sistem Programlama Ders Notları Çetin G., 1999, Linux ĠĢletim sistemi, Seçkin Yayınevi Ġstanbul Bilgi Üniversitesi Bilgisayar Bilimleri Bölümü, 2007, Open Source Enterprise Centre GNU/Linux Sertifikasyon Programı Linux 101 Ders Notları Özbilen A., 2013, Linux Sistem ve Ağ Yönetimi, Pusula Yayınları Özkan Y., 2004, Linux ĠĢletim Sistemi, Alfa Yayınları UYBHM, Temel Linux iģlemleri, ĠTÜ Yazıcı M., 2014, Açık Kaynak ĠĢletim Sistemleri Ders Notu, www.muratyazıcı.com 14