Linux kullanırken kullanıcılar genellikle bir dosyanın kime ait olduğunu nadiren düşünürler. Ancak iş bir sunucu çalıştırmaya geldiğinde durum değişir. Güvenliği artırmak için sunucunun kendi kullanıcısı olur. Sunucuların www-data
gibi aynı grubu kullanması alışılmadık bir durum değildir. Şimdi bu fonksiyonun dosya ve dizinlerle nasıl çalıştığını görelim. Güvenli olmayan ayarlar kullanıldığında sorunlara neden olabileceğinden sembolik bağlantılara özellikle dikkat edeceğiz.
Dosya izinleri standardı Linux'a Unix'ten gelmiştir. Yani her nesnenin bir kullanıcısı
vardır, buna ek olarak grup
diğer
kullanıcıların(diğer
) haklarını tanımlar. İzinler üç öğeden oluşur: okuma, yazma, yürütme. Umask
komutu izinleri değiştirmek için kullanılır, ancak chown
komutları doğrudan sahip ve grubu değiştirmek için kullanılır. Geçerli izinleri görüntülemek için ls
komutu kullanılabilir.
chgrp
komutunun genel görünümü:
$ chgrp [options] new_group file_name
chgrp
komutu için ortak seçeneklerin listesi:
h -
doğrudan sembolik bağlantıların kendileriyle çalışır;--dereference -
sembolik bağlantıların kendileriyle değil dosyalarla çalışır. Varsayılan olarak kullanılır;R -
bir dizinin tüm içeriğiyle birlikte özyinelemeli olarak işlenmesi;H -
sembolik bağlantıyı takip eder ve dosya/dizin niteliklerini değiştirir. R
parametresi ile birlikte kullanılır;L -
sembolik bağlantıyı takip eder ve özyinelemeli işleme devam eder. R
parametresiyle birlikte kullanılır;-P
- sembolik bir bağlantıyla karşılaşıldığında, yalnızca bu bağlantıyı işleyin. R
parametresiyle birlikte kullanılır, varsayılan değerdir;--reference=file_name
- örnek grubu kullanın;c -
çıktı yalnızca işlenirken değişir;v -
işlenen her nesne hakkında çıktı bilgisi.chgrp
komutunu kullanmanın en basit örneği. Aşağıdaki, geçerli klasördeki dosya
için www-data
nesnesinin tamamını değiştirir:
$ sudo chgrp www-data file.txt
Ve bu da klasör klasörü
için grubu www-data
olarak değiştirir:
$ sudo chgrp www-data folder
Komut, gruplarını değiştirerek çok tahmin edilebilir bir şekilde çalışır. Klasördeki nesneler değişmeden kalır. Sembolik bağlantılar ele alınırsa, nitelikleri değişmeden kalır, ancak nesne yeni bir grup alır. Bu davranış --dereference paramet
resinin kullanımına benzer.
Örneğin, sembolik bağlantılara uygulanan bu komutlar ekran görüntüsünde gösterildiği gibi çalışacaktır:
$ sudo chgrp www-data sym_file.txt
Sembolik bir bağlantının niteliklerini değiştiren -h
parametresinin nasıl çalışacağına bir göz atalım:
$ sudo chgrp -h www-data sym_file
Grup yalnızca dizine değil, aynı zamanda içindeki tüm dosyalara da ayarlanmıştır. Davranışın değiştiğine dikkat edin, artık bir sembolik bağlantı işlenirken öznitelikler nesne için değil bağlantının kendisi için ayarlanır.
H
ve -L
parametreleri arasındaki farkı görmek için birkaç örneğe daha bakalım. Bunların -R
ile birlikte kullanılması gerektiğini hatırlayın:
$ sudo chgrp -RH www-data folder
H
kullanıldığında sembolik bağlantılar işlenirken davranış değişir, artık işlevler ayrı ayrı çalıştırılıyormuş gibi ele alınırlar. Referansların nitelikleri değişmez, nesnelerin kendi nitelikleri değişir ve bir dizine geçtiğinizde özyinelemeli işleme durur.
$ sudo chgrp -RL www-data folder
Tek bir işlevi yerine getirir - dosya ve dizin grubunu değiştirir.
Sembolik bağlantıları işlerken, sisteme zarar vermemek için son derece dikkatli olmalısınız.