Yeni dosyalar oluştururken kullanıcı için varsayılan grubu ayarla?


36

Sık sık kendime ait dosyaları SSH aracılığıyla oluşturduğum için buluyorum ve jm:jmmesela sahip olmaları gerekiyor .

Sonra Apache'nin erişmesine izin vermek için örneğin yapmam gerekiyor chown jm:www-data.

Dosyaları oluştururken, adımı altında grubu kullanmak yerine başka bir tane belirteceğimi belirleyebileceğime eminim?

Yoksa kullanıcıları / grupları yönetmenin daha iyi bir yolu var mı?

Yanıtlar:


73

Belirli bir dizindeki tüm yeni dosyaların belirli bir gruba ait olmasını istiyorsanız setgid, bunun üzerine bit uygulayın :

chgrp www-data /some/dir
chmod g+s /some/dir

Bu davranışı uygulamak istediğiniz dizin ağacınız varsa, şunları yapabilirsiniz find:

find /some/dir -type d -exec chgrp www-data {} +
find /some/dir -type d -exec chmod g+s {} +

(Eğer dizinler zaten ilgili gruba aitse, bu iki örneği de ilk komutu atlayabilirsiniz).


1
Güzel cevap! Lütfen sembollerin ne ... {} +anlama geldiğini açıklayabilir misiniz ?
Alexander Lomia

3
findKomutun argümanları , man sayfasında ele alınmıştır. İlk çağrı için, chgrp www-dataargüman olarak birkaç sonuç ekleyerek komutu çalıştırır (komutu , elde ettiğiniz her sonuç için bir kez çağırmak yerine {} \;).
James Henstridge

6
Neden kullanmaz chmod g+s /some/dir -R? Sadece test edildi ve işe yarıyor.
Cragmonkey,

13
@Cragmonkey: setgid bitini normal dosyalarda da ayarlayacaktır. Bunlardan herhangi birinin çalıştırılabilir olması durumunda, bu, sistemdeki başka bir kullanıcının dosyaya sahip olan grubun ayrıcalıklarını kazanmasını sağlar.
James Henstridge
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.