Jak wymusić grupowanie i uprawnienia do tworzonych plików w określonym katalogu?

27

Do plików utworzonych z konta testuser w katalogu / var / www potrzebuję, że mają g + rwx jako uprawnienia, a www-data jako grupę.

Jak mogę to osiągnąć?

Tworzę pliki za pośrednictwem SSH.

Mr.Gando
źródło
1
Jak Twój użytkownik tworzy pliki? Przez FTP stor/ appe? Przez HTTP PUT? Przez konto shellowe? Te dane są ważne, ponieważ mają duży wpływ na możliwe odpowiedzi i muszą znajdować się w pytaniu.
JdeBP
Dzięki za wkład :), tworzę wszystko przez SSH.
Mr.Gando

Odpowiedzi:

53

Aby ustawić grupę, dać /var/wwwsię setgid kawałek:

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

Aby również dostosować podkatalogi: find /var/www -type d -exec chmod g+s {} +

Spowoduje to, że wszystkie nowo utworzone pliki odziedziczą grupę katalogu nadrzędnego zamiast użytkownika.


Aby ustawić domyślne uprawnienia grupy, musisz użyć list ACL . Ustaw „domyślną” listę ACL:

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

Aby również dostosować podkatalogi: find /var/www -type d -exec setfacl -m d:g::rwx {} +

Uwaga: System plików musi mieć włączoną obsługę ACL. Czasami jest domyślnie włączony; na ext3 lub ext4 może pojawić się komunikat „Operacja nieobsługiwana”, w którym to przypadku należy ją włączyć ręcznie:

  • W przypadku aktualnie zamontowanego systemu plików: mount -o remount,acl /

  • Na stałe - jedna z poniższych metod:

    • na poziomie fstab: edytuj, /etc/fstababy mieć aclw polu opcji

    • na poziomie systemu plików: tune2fs -o acl /dev/diskname

grawitacja
źródło
nie możesz pobrać podkatalogów z chmod -R g + s / var / www? Nie wydaje się, że powinieneś potrzebować polecenia find.
bobpaul
4
@bpapaul: Nie, ponieważ chmodotrzyma również wszystkie pliki.
grawity
Zwróć uwagę, że w szczególności niektóre polecenia w installjakiś sposób potrafią ominąć domyślne listy ACL katalogu.
Ulrich Schwarz,
@grawity To naprawdę świetna odpowiedź i jestem pewien, że istnieje rozwiązanie mojego problemu, ale nie mogę tego rozgryźć. Mam /var/www/html/projectsfolder i kiedy www-data tworzy plik, ma on rw-rw-ruprawnienia, ale kiedy robię coś w konsoli, tworzy plik rw-r--r. Jak mogę zmusić nowo utworzone pliki, aby zawsze miały rw-rw-ruprawnienia?
lewis4u
@ lewis4u: Globalnie czy na katalog? Globalne (dobrze, na proces) domyślne uprawnienia są kontrolowane przez umask. Domyślne uprawnienia dla katalogu można zmieniać przy użyciu setfacljak w głównym poście.
grawity
3

Może to spowodować, że kilka osób utknęło w odpowiedzi na „grawitację” na setgid, jeśli grupa folderu jest inna niż twoja, być może będziesz musiał uruchomić chmod jako root, ale nie pojawi się żaden błąd wskazujący, że musisz to zrobić.

$ 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
Łukasz
źródło
Wyciągałem włosy, zanim na to natknąłem się. Dzięki.
AndrewStevens
0

Grupą plików tworzonych przez użytkownika jest grupa tego użytkownika (w / etc / group). Uprawnienia są kontrolowane przez parametr UMASK zobacz to

DrNoone
źródło