Tüm Linux işletim sisteminde, neredeyse hiçbir kısıtlaması olmadan tüm işlemleri gerçekleştirme yetkisine sahip olan root kullanıcısı bulunmaktadır. Bazı dağıtımlarda kurulum sırasında bu kullanıcı için parola oluşturulurken bazı dağıtımlarda oluşturulmaz.
root dışında oluşturulan normal kullanıcıların yalnızca kendi ev dizinlerinde ve /tmp dizininde değişiklik yapma yetkisi bulunmaktadır. Bunun dışındaki sistem dosyalarında işlem yapılmak isteniyorsa yetki yükseltme işlemi gerekmektedir.
Son kullanıcı sudo komutu ile kendisinden sonra gelen komutların root kullanıcısı tarafından yapılmasını sağlar. Tabiki bu işlem eğer yetkisi varsa yapılır.
root kullanıcısı dışında sistemde neredeyse hiçbir kısıtlaması olmadan tüm işlemleri gerçekleştirme yetkisine sahip gruba sudo grubu denir. Son kullanıcı bu gruba dahil ise sudo komutu ile yetkili işlemler yapabilir.
Peki root kullanıcısının ya da sudo grubunun hangi işlemleri yapabileceğini sistem nasıl anlar. Kullanıcı ve grup yetkileri /etc/sudoers dosyasında tanımlanır.
root
ALL=(ALL:ALL) ALL
İlk sütun hangi kullanıcı ya da grubu etkileyeceğini ifade eder
root ALL
=(ALL:ALL) ALL
İkinci sutün hangi makine ve terminaller üzerinde uygulanacağını ifade eder.
root ALL=(ALL
:ALL) ALL
Üçüncü sütun, komutların tüm kullanıcılar olarak çalıştırabileceğini gösterir.
root ALL=(ALL:ALL
) ALL
Dördüncü sütun, komutların tüm gruplar olarak çalıştırabileceğini gösterir.
root ALL=(ALL:ALL) ALL
Son olarak son sütun hangi komutlara yetki verildiğini ifade eder
Dosyaların aynı anda bir kişi tarafından düzenlendiğinden emin olmak için sudoers dosyası visodu komutu ile düzenlenir
GNU/Linux sistemler, hızlı ve pratik olmasının yanında güvenlik açısından kale gibi olması sebebi ile de sunucularda sıklıkla kullanılırlar. Bunun sebebi de teker teker her dosyanın ve dizinin sahip olduğu yetki sistemidir.
Her dosya veya dizin 3 ayrı alan için yetkilendirmeye sahip olabilir. Bu yetkilendirmeler,
Aynı zamanda yukarıda belirtilenlerden her biri için ayrı ayrı okuma, yazma ve çalıştırma yetkisi bulunmaktadır.
Bu iki bilgiyi birbiri ile birleştirdiğimizde, sıklıkla ls -la komut çıktısında gördüğümüz her dosyanın başında yer alan izinleri anlamlandırabiliriz.
Sol tarafta yer alan 10 karakterden, ilki dosyanın türünü belirtir. Örneğin,
anlamına gelmektedir.
Sonraki dokuz hane ise izinleri temsil eder. İlk 3 hane dosya sahibinin izinleri, sonraki 3 hane dosya grubunun izinleri, en son hane ise sistemdeki diğer kullanıcının izinlerini göstermektedir.
Dosyalar ve dizinlerin okuma yazma, ve çalıştırma için uygun gruplara uygun izinlere ihtiyacı olduğundan bahsettik. Şimdi bu izinlerin nasıl verildiğinden bahsedelim.
Eğer bir betiğe dosya sahibi için çalıştırma yetkisi vermek istiyorsak,
komutlarını kullanabiliriz. Ya da dosyanın herkes için tüm izinlerini silip sadece okuma izni vermek istiyorsak,
komutunu kullanmamız gerekir. Dosyadan yetki silmek için ise,
komutu kullanılmalıdır.
Dosya izinleri yukarıdaki gibi kullanıcı, grup ve diğer kullanıcılar için ayrı ayrı verilebilse de bazı durumlarda tercih edilmemektedir. Bunun yerine Eğer bir dosyayı herkes tarafından okunabilir yapmak istiyorsak, Binary Dosya İzinleri diye de bilinen İkili Dosya İzinleri kullanılmaktadır.
Bu sistemde izinler 3erli olarak ayrılır. Ayrılan her bir grup için sağdan sola 2 üzeri 0, 2 üzeri 1 ve 2 üzeri 2 olarak numaralandılır. Eğer izinlerin hepsi açıksa, yani rwx durumunda ise tüm bu rakamlar toplanır ve o gruba 7 değeri atanır. Eğer bu izinlerden biri bile yoksa, onun yerine 0 yazılarak toplanır.
Örneğin izinleri,
olan bir dosya için,
753 iznine sahip denilebilir. chmod ile binary izinleri de,
şeklinde kullanılabilir.