linux / setfacl - Ustaw wszystkie bieżące / przyszłe pliki / katalogi w katalogu nadrzędnym na 775 z określonym właścicielem / grupą

42

Mam katalog o nazwie „członkowie”, a pod nim znajdują się foldery / pliki. Jak mogę rekurencyjnie ustawić wszystkie bieżące foldery / pliki i wszystkie przyszłe utworzone tam domyślnie mają 775 uprawnień i należą odpowiednio do właściciela / grupy nikt / administrator? Włączyłem ACL, zamontowane, ale nie mogę uzyskać polecenia setfacl, aby zrobić to poprawnie. Masz pomysł, jak to osiągnąć?

Politycznie niezależny
źródło

Odpowiedzi:

62

Znalazłem coś, co do tej pory robi to, o co prosiłem, udostępniając tutaj, aby każdy, kto napotkał ten problem, mógł wypróbować to rozwiązanie:

sudo setfacl -Rdm g:groupnamehere:rwx /base/path/members/
sudo setfacl -Rm g:groupnamehere:rwx /base/path/members/

R jest rekurencyjny, co oznacza, że ​​wszystko w tym katalogu będzie miało do niego zastosowaną regułę. Domyślne jest
d , co oznacza, że ​​dla wszystkich przyszłych elementów utworzonych w tym katalogu te reguły mają zastosowanie domyślnie. m jest potrzebne, aby dodać / zmodyfikować reguły.

Pierwsze polecenie dotyczy nowych elementów (stąd d), drugie polecenie dotyczy starych / istniejących elementów w folderze. Mam nadzieję, że to komuś pomoże, ponieważ te rzeczy są nieco skomplikowane i niezbyt intuicyjne.

Politycznie niezależny
źródło
2
Właśnie tego potrzebowałem, aby właściciel katalogu dziadków mógł poprawnie modyfikować zawartość nowych katalogów wnuka.
Joost
Jeśli jesteś jedynym użytkownikiem swojego Rpi, możesz zastąpić g: nazwa grupy przez pi: pi lub po prostu pi
SDsolar
Możesz określić użytkownika, grupy i inne w jednym wierszu, np -Rdm g:groupnamehere:rwx, -Rdm u:groupnamehere:rwx.
user2340939,
18

Aby przejść do zaakceptowanej odpowiedzi ...

Możesz łączyć te polecenia razem jako:

sudo setfacl -Rm d:g:groupnamehere:rwx,g:groupnamehere:rwx /base/path/members/
Jozuego
źródło
To super. Dlaczego ustawiłeś d:na pierwszym elemencie zamiast -Rmd? Wiem, że drugi parametr nie powinien mieć default- to dziwne, jak linux mnie akceptuje.
JREAM
1
@JREAM: Linux (faktycznie getopt_long) wysyła cały argument opcji-m , który jest analizowany ręcznie przez setfacl, rozdzielając je przecinkami przekazany argumentów. Są one dodawane do połączonej listy, która jest zapętlana na końcu podczas faktycznej zmiany listy ACL.
Benoit Duffez
2

setfacl na Linuksie ma opcje -di -kdo manipulowania domyślnymi uprawnieniami, które prawdopodobnie są tym, czego szukasz (zobacz man, aby uzyskać więcej informacji).

Peter
źródło
1

Łatwo jest rekurencyjnie ustawiać proste uprawnienia UNIX na żądanie odpowiednio autoryzowanego użytkownika, uprawnień do katalogów i plików. Nie można tego automatycznie narzucić.

Możesz powiedzieć użytkownikom, aby korzystali z zestawu umask 0002, co pomaga tworzyć nowe pliki o numerze 0775 (w zależności od aplikacji). Ale nie jest wykonalne.

Rozumiem, że listy ACL nie są dziedziczone w systemach UNIX / Linux. Są ustawiane na żądanie.

Jeśli chodzi o prawo własności do plików / katalogów, nie masz tutaj szczęścia.

Jeśli chodzi o prawo własności do pliku / grupy katalogów, ustawienie bitu set-gid katalogu (tj. G + s dla DIRECTORIES) powoduje dziedziczenie własności grupy.

To, co zrobiłem w takich sytuacjach, to wykonanie okresowego skryptu root cron, który resetuje niezgodne uprawnienia / prawa własności do standardowych w takich katalogach.

Innym (NIE ZALECANYM) procesem jest używanie tego samego identyfikatora użytkownika podczas pracy z tymi plikami. Można to osiągnąć przez zalogowanie się do systemu przy użyciu własnego identyfikatora UID, a następnie użycie sudo lub su do uruchomienia jako identyfikatora. To wciąż nie jest w 100%, szczególnie w przypadku list ACL i bitów uprawnień.

mdpc
źródło