Oturum açtığımızda yeni bir kabuk süreci başlar. Her yeni kabuk süreci(bash) bizim kullanıcı bilgimizle çalışır. Böylece bizim sahip olduğumuz dosya ve dizinlere ulaşılır. Kullanıcı bilgilerini verdiğimiz programlar,dosya sisteminde bizim iznimizin olmadığı herhangi bir neseneye ulaşamayacaktır.
Örneğin; normal kullanıcılar passwd dosyasına yazma hakkına sahip değildirler.
ls -l /etc/passwd
-rw-r--r-- 1 root root 1673 2010-12-09 14:43 /etc/passwd
Oysa ki normal kullanıcılarında dolaylı olarak bu dosya üzerinde değişiklik yapmaya ihtiyaçları olabilir.Mesela şifrelerini değiştirecekleri zaman…
Linux izin modelinde “suid” ve “sgid” isimli iki özel bit vardır.
Eğer çalıştırılabilir bir dosyanın suid biti ayarlanmışsa o dosya o anda çalıştıran kullanıcı değilde ,asıl sahibi olan kullanıcının adıyla çalışıyormuş gibi olur. Örneğin: passwd çalıştırılabilir dosyasına baktığımızda;
ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 42824 2011-02-21 02:18 /usr/bin/passwd
Burada dosya sahibinin izinlerini ifade eden üçlüde “x” yerine “s” var. Bu “s” harfi; suid ve çalıştırılabilirlik bitlerinin ayarlandığını belirtir.Böylece passwd komutu çalıştığında, o anda çalıştıran kullanıcı değilde root kullanıcısı tarafından çalıştırılıyormuş gibi olacaktır. Ve passwd komutu root haklarıyla çalışınca, /etc/shadow dosyasınıda bir problem olmadan düzenleyebilecektir.
EK BİLGİ:/etc/passwd ‘de kullanıcı hesapları vardır.
/etc/shadow ‘da şifreler saklıdır.
Programların o anda çalışan kullanıcıya göre değilde programın üzerindeki grup haklarına göre çalışmasına dayanır.
ls -l listelemesinde suid ve sgid bitleri “x” harfinin (yani çalıştırma/erişim yetkisinin) olduğu yerdedir. Eğer hem “x” hemde suid/sgid bitleri aktifse listede “s” (küçük harf) olacaktır.”x” biti aktif değilse “S” (büyük harf) olarak görülür.
u : user
g : group
Yetki vermek için ”+”,yetkiyi kaldırmak içinde “-” işaretleri kullanılır.
chmod u+s /usr/bin/program_adi
chmod g-s /home/grup_adi
Buradaki +/- kısımlarını yapmak istediğiniz işleme göre değiştirebilirsiniz.