Belirli bir dizinde oluşturulan dosyalar için grubu ve izinleri nasıl zorlarım?


27

/ Var / www dizinindeki testuser hesabından oluşturulan dosyalar için , izinler olarak g + rwx ve grup olarak www-verilere ihtiyacım var .

Bunu nasıl başarabilirim?

Dosyaları SSH ile yapıyorum.


1
Kullanıcınız nasıl dosya oluşturuyor? FTP üzerinden stor/ appe? HTTP ile PUTmi? Bir kabuk hesabıyla mı? Bu detaylar önemlidir, çünkü olası cevapları büyük ölçüde etkilerler ve sorunuzda olması gerekir.
JdeBP

Girişiniz için teşekkürler :), SSH ile her şeyi yapıyorum.
Gando

Yanıtlar:


53

Grup ayarlamak için vermek setgid bit:/var/www

chgrp www-data /var/www
chmod g+s /var/www

Alt dizinleri de ayarlamak için: find /var/www -type d -exec chmod g+s {} +

Bu, yeni oluşturulan tüm dosyaların, kullanıcının yerine ana yönetmen grubuna miras kalmasını sağlar.


Varsayılan grup izinlerini ayarlamak için ACL'leri kullanmanız gerekir . Bir "varsayılan" ACL ayarlayın:

setfacl -m "default:group::rwx" /var/www

Alt dizinleri de ayarlamak için: find /var/www -type d -exec setfacl -m d:g::rwx {} +

Not: Dosya sisteminde ACL desteği etkin olmalıdır. Bazen varsayılan olarak açıktır; üzerinde ext3 veya ext4 elle etkin olmalıdır bu durumda "İşlem desteklenmiyor" alabilirsiniz:

  • Şu anda monte edilmiş bir dosya sistemi için: mount -o remount,acl /

  • Kalıcı olarak - aşağıdaki yöntemlerden biri :

    • fstab düzeyde düzenlemek /etc/fstabiçin aclseçenekler alanında

    • dosya sistemi düzeyinde: tune2fs -o acl /dev/diskname


chmod -R g + s / var / www ile alt dizinleri bulamıyor musunuz? Find komutuna ihtiyacın var gibi görünmüyor.
bobpaul

4
@bobpaul: Hayır, çünkü chmodtüm dosyaları da alırdı.
yerçekimi

Özellikle bazı komutların bir installşekilde varsayılan dizin ACL'lerini atlamayı başardığını unutmayın.
Ulrich Schwarz

@grawity Bu gerçekten harika bir cevap ve sorunum için orada bir çözüm olduğuna eminim ama çözemiyorum. Bir /var/www/html/projectsklasörüm var ve www-data bir dosya oluşturduğunda rw-rw-rizinleri var ama konsolda bir şey yaptığımda bir dosya oluşturuyor rw-r--r. Yeni oluşturulan dosyaları her zaman rw-rw-rizin almaya nasıl zorlayabilirim ?
lewis4u

@ lewis4u: Genel olarak mı yoksa dizin başına mı? Genel (işlem başına) varsayılan izinler tarafından denetlenir umask. Dizin başına varsayılan izinler setfacl, ana postadaki gibi değiştirilebilir .
Grawity

3

Bu setgid üzerinde 'grawity' cevabına sıkışmış birkaç kişi almış olabilir, eğer klasörün grubu sizin grubunuzdan farklıysa, chmod'u root olarak çalıştırmanız gerekebilir ancak bunu yapmanız gerektiğini belirten bir hata almazsınız.

$ ls -ld dir
drwxrwxr-x 2 luke testgroup 4096 Mar  9 10:44 dir

$ chmod g+s dir                                    #no errors

$ ls -ld dir
drwxrwxr-x 2 luke testgroup 4096 Mar  9 10:44 dir  #but nothing changed

$ touch dir/nosudo && ls -l dir/
-rw-rw-r-- 1 luke luke 0 Mar  9 10:51 nosudo       #and the group is still wrong


$ sudo chmod g+s dir

$ ls -ld dir
drwxrwsr-x 2 luke testgroup 4096 Mar  9 10:44 dir  #the setgid bit is now on

$ touch dir/withsudo && ls -l dir/
-rw-rw-r-- 1 luke luke      0 Mar  9 10:51 nosudo
-rw-rw-r-- 1 luke testgroup 0 Mar  9 10:51 withsudo #and group is set

Buna rastlamadan önce saçlarımı çekiyordum. Teşekkürler.
AndrewStevens

0

Bir kullanıcı tarafından oluşturulan dosyaların grubu o kullanıcının grubudur (/ etc / group içinde). İzinler parametre umask tarafından kontrol edilir görüyoruz

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.