Załóżmy, że mam dwóch użytkowników Alice i Bob oraz grupę GROUPNAME i folder foo
, obaj użytkownicy są członkami GROUPNAME (używają Linuksa i ext3).
Gdybym zapisać jako użytkownika Alice plik pod foo
, uprawnienia są: -rw-r--r-- Alice Alice
. Czy można jednak osiągnąć, że każdy plik zapisany w jakimś podkatalogu foo
ma uprawnienia -rwxrwx--- Alice GROUPNAME
(np. Właściciel Alice, grupa GROUPNAME)?
permissions
group
acl
umask
student
źródło
źródło
Odpowiedzi:
Można kontrolować przypisane bity uprawnień z
umask
, a grupa poprzez katalog setgid doGROUPNAME
.Zauważ, że musisz zrobić
chgrp
/chmod
dla każdego podkatalogu; nie propaguje się automatycznie (tzn. ani istniejące, ani później utworzone katalogi w katalogu setgid nie będą ustawione na setgid , chociaż ten drugi będzie w grupieGROUPNAME
).Należy również pamiętać, że
umask
jest to atrybut procesu i dotyczy wszystkich plików utworzonych przez ten proces i jego elementy podrzędne (które dziedziczą w danym momencieumask
efekt nadrzędnyfork()
). Użytkownicy mogą być zmuszeni to ustawić~/.profile
i mogą uważać na rzeczy niezwiązane z katalogiem, które wymagają różnych uprawnień. moduły mogą być przydatne, jeśli potrzebujesz różnych ustawień podczas wykonywania różnych czynności.Możesz kontrolować rzeczy nieco lepiej, jeśli możesz używać list ACL POSIX; powinno być możliwe określenie zarówno maski uprawnień, jak i grupy oraz umożliwienie ich rozsądnej propagacji. Obsługa list ACL POSIX jest jednak nieco zmienna.
źródło
-rwxrwx--- A G
)?Jeśli to możliwe, użyj list kontroli dostępu (ACL) .
W systemie Linux upewnij się, że używany system plików obsługuje listy ACL (większość systemów plików unix obsługuje). Może być konieczna zmiana opcji montowania, aby włączyć listy ACL: w przypadku ext2 / ext3 / ext4 należy
acl
jawnie określić opcję montowania, więc wpis/etc/fstab
powinien wyglądać tak/dev/sda1 / ext4 errors=remount-ro,acl 0 1
. Uruchom,mount -o remount,acl /
aby aktywować listy ACL bez ponownego uruchamiania. Zainstaluj także narzędzia wiersza polecenia ACLgetfacl
isetfacl
zazwyczaj dostarczane w pakiecie o nazwieacl
.Teraz, gdy konfiguracja jednorazowa się zakończyła, zmień listę ACL katalogu, aby nadać grupie uprawnienia do zapisu i aby uprawnienia te były dziedziczone przez nowo utworzone pliki. W systemie Linux:
Jeśli ACL nie są możliwe, zrobić katalog posiadanych przez Grupę
GROUPNAME
, i ustawić jego uprawnienia do 2775 lub 2770:chmod g+rwxs /path/to/directory
.s
Tutaj oznacza setgid trochę; w przypadku katalogu oznacza to, że pliki utworzone w tym katalogu będą należeć do grupy, która jest właścicielem katalogu.Musisz również ustawić umask Alice i Boba, aby wszystkie ich pliki były domyślnie zapisywane w grupie. Domyślną umaską w większości systemów jest 022, co oznacza, że pliki mogą mieć wszystkie uprawnienia oprócz zapisu według grupy i innych. Zmień to na 002, co oznacza, że zabronisz tylko uprawnień do zapisu przez inne osoby. Zazwyczaj umieszczasz to ustawienie w
~/.profile
:źródło
mount
polecenie zremount
opcją, więc nie używafstab
. Podwójneacl
oznacza, że system plików został już zamontowany zacl
opcją i jest nieszkodliwy. tak na marginesie,acl
jest to domyślne dla ext4 w ostatnich jądrach (łatka była jeszcze całkiem nowa, kiedy pisałem tę odpowiedź). Q2: Możesz uruchamiać polecenia w dowolnej kolejności.GROUPNAME
zamiastG
, aby było bardziej jasneTo pytanie jest dobre dla Linuksa
acl
. Ponieważ nie podajesz swojego systemu operacyjnego, zakładam, że Linux jest następujący. Oto przykładowa sesja.Nie znam naprawdę dobrego
acl
samouczka, ale możesz zrobić gorzej niż http://www.vanemery.com/Linux/ACL/linux-acl.htmlZauważ, że domyślny
acl
zachowuje się jak lokalny umask. Ponieważ przynajmniej w Linuksie umasks są stosowane globalnie, jest to jedyny znany mi sposób uzyskania efektu lokalnego umask. Z jakiegoś powodu jest to mało znana funkcja. Sieć jest zaśmiecona ludźmi pytającymi o lokalne obejście umask, ale prawie nikt nie myśli o użyciuacl
.Pamiętaj również, że musisz zamontować partycję, w której pracujesz, z
acl
obsługą, np.Sesja następuje:
Ustaw grupę
foo
bystaff
i ustaw acl grupy i użytkownikafoo
narwx
.Ustaw także domyślne wartości acls użytkownika i grupy
rwx
. Określa uprawnienia, które dziedziczą pliki i katalogifoo
. Tak więc wszystkie pliki i katalogi utworzone w systemie foo będą miały uprawnienia grupowerw
.Teraz utwórz niektóre pliki
foo
jako użytkownicyfaheem
ijohn
.Lista plików. Zauważ, że zarówno pliki będące własnością, jak
faheem
i pliki będące własnością,john
są tworzone z uprawnieniami grupowymirw
.źródło