Ustawienie domyślnego właściciela na „automatycznie” wymagałoby setuidzachowania katalogu setgid. Jednak chociaż można to skonfigurować we FreeBSD, inne systemy UNIX i Linux po prostu ignorują u+s. W twoim przypadku może być jednak inne rozwiązanie.
Chcę mieć katalog, który można udostępniać, dodając grupę do użytkownika. Wszystko, co zostanie utworzone w tym katalogu, dziedziczy schemat uprawnień po rodzicu. Jeśli istnieje lepszy sposób niż to, co próbuję, jestem cały w uszach.
Zasadniczo z tego, co widzę, chcesz kontrolować dostęp do katalogu za pomocą mechanizmu grup. Nie wymaga to jednak ograniczenia uprawnień w całej strukturze katalogów. W rzeczywistości --xbit wykonania katalogu może być dokładnie tym, czego potrzebujesz. Dam ci przykład. Przy założeniu, że...
- Grupą kontrolującą dostęp do
group_dirkatalogu jest ourgroup.
ourgroupDostęp mają tylko osoby w grupie group_dir.
user1i user2należą do ourgroup.
- Domyślnym umask jest 0022.
... rozważ następującą konfigurację:
drwxrws--- root:ourgroup |- group_dir/
drwxr-sr-x user1:ourgroup |---- group_dir/user1_submission/
drwxr-sr-x user2:ourgroup |---- group_dir/user2_submission/
-rw-r--r-- user2:ourgroup |-------- group_dir/user2_submission/README
Załóżmy, że każdy element został stworzony przez jego właściciela.
Teraz w tej konfiguracji:
- Wszystkie katalogi mogą być przeglądane przez wszystkich
ourgroup. Każdy z grupy może tworzyć, przenosić i usuwać pliki w dowolnym miejscu w środku group_dir(ale nie głębiej).
- Każdy, kto nie jest w
ourgroupśrodku, zostanie zablokowany group_diri dlatego nie będzie mógł manipulować niczym pod nim. Na przykład user3(który nie jest członkiem ourgroup) nie może czytać group_dir/user2_submission/README(nawet jeśli ma r--uprawnienia do samego pliku).
Jednak w tym przypadku jest mały problem: z powodu typowego umask elementy tworzone przez użytkowników nie mogą być modyfikowane przez innych członków grupy. W tym miejscu pojawiają się listy ACL. Ustawiając domyślne uprawnienia, upewnisz się, że wszystko jest w porządku pomimo wartości umask:
$ setfacl -dRm u::rwX,g::rwX,o::0 group_dir/
To połączenie ustawia:
- Domyślne
rw(x)uprawnienia właściciela.
- Domyślne
rw(x)uprawnienia dla grupy.
- Brak domyślnych uprawnień dla innych. Pamiętaj, że skoro inni i
group_dir tak nie mają dostępu, tak naprawdę nie ma znaczenia, jakie są ich uprawnienia poniżej.
Teraz, jeśli utworzę element jako user2:
$ touch group_dir/user2_submission/AUTHORS
$ ls -l group_dir/user2_submission/AUTHORS
rw-rw---- user2:ourgroup group_dir/user2_submission/AUTHORS
Po wprowadzeniu tej listy ACL możemy spróbować odbudować naszą poprzednią strukturę:
drwxrws---+ root:ourgroup |- group_dir/
drwxrws---+ user1:ourgroup |---- group_dir/user1_submission/
drwxrws---+ user2:ourgroup |---- group_dir/user2_submission/
-rw-rw----+ user2:ourgroup |-------- group_dir/user2_submission/README
Tutaj ponownie każdy element jest tworzony przez jego właściciela.
Dodatkowo, jeśli chcesz dać nieco więcej mocy / bezpieczeństwa osobom korzystającym z katalogu, możesz rozważyć trochę lepkiej. Zapobiegnie to na przykład user1usunięciu user2_submission(ponieważ ma -w-na to pozwolenie group_dir):
$ chmod +t group_dir/
Teraz, jeśli user1spróbuje usunąć user2katalog, dostanie piękny Operation not permitted. Należy jednak pamiętać, że chociaż zapobiega to modyfikacjom struktury katalogów group_dir, pliki i katalogi poniżej są nadal dostępne:
user1@host $ rm -r user2_submission
Operation not permitted
user1@host $ cat /dev/null > user2_submission/README
user1@host $ file user2_submission/README
user2_submission/README: empty (uh-oh)
Inną rzeczą, którą należy wziąć pod uwagę, jest to, że używane przez nas listy ACL konfigurują domyślne uprawnienia. W związku z tym właściciel elementu może zmienić uprawnienia z nim związane. Na przykład user2może doskonale działać ...
$ chown g= user2_submission/ -R
or
$ chgrp nobody user2_submission -R
... dlatego jego pełny katalog zgłoszeń jest niedostępny dla wszystkich członków grupy.
Ponieważ jednak początkowo chcesz udzielić pełnego rwsdostępu każdemu w grupie, zakładam, że ufasz tym użytkownikom i nie spodziewałbyś się po nich zbyt wielu złośliwych operacji.