Użycie setfacl, aby umożliwić członkom grupy zapisywanie do dowolnego pliku w katalogu

12

Chciałbym użyć setfacl, aby każdy w „aplikacji” grupy mógł edytować dowolny plik zawarty w / usr / local / users / app bez względu na to, co mówią tradycyjne uprawnienia UNIX. Mam dwóch użytkowników, Johna i Bena. Próbowałem postępować zgodnie z instrukcją z innego pytania , ale John nie jest w stanie pisać do niektórych plików. Wygląda na to, że dzieje się tak z powodu maski acl. Jednak ustawiłem domyślną maskę w katalogu rwx, więc czy pliki w nim nie powinny dziedziczyć po utworzeniu?

Na przykład John nie może pisać do poniższego pliku, ale jest członkiem grupy „app”, która zapisuje w pliku acls, więc jestem zaskoczony, że nie może edytować pliku.

ben@app1:/usr/local/users$ ls -la app/app-1.0-SNAPSHOT/lib/play.templates_2.10-2.1.1.jar 
-rw-r--r--+ 1 ben users 38326 Apr  2 10:21 app/app-1.0-SNAPSHOT/lib/play.templates_2.10-2.1.1.jar

ben@app1:/usr/local/users/app$ getfacl app-1.0-SNAPSHOT/lib/
# file: app-1.0-SNAPSHOT/lib/
# owner: ben
# group: users
user::rwx
group::rwx          #effective:r-x
group:app:rwx       #effective:r-x
mask::r-x
other::r-x
default:user::rwx
default:group::rwx
default:group:app:rwx
default:mask::rwx
default:other::r-x

ben@app1:/usr/local/users$ getfacl app/app-1.0-SNAPSHOT/lib/play.templates_2.10-2.1.1.jar 
# file: app/app-1.0-SNAPSHOT/lib/play.templates_2.10-2.1.1.jar
# owner: ben
# group: users
user::rw-
group::rwx          #effective:r--
group:app:rwx       #effective:r--
mask::r--
other::r--
Ben McCann
źródło

Odpowiedzi:

7

Zauważysz „skuteczny” komentarz, który wyrzuca cię getfacl. Problem polega na tym, że uprawnienia są obliczane, więc „aplikacja” nie ustawia bitu zapisu. Dzieje się tak, ponieważ maska ​​pliku jest ustawiona tylko do odczytu. Maska służy do ograniczenia liczby uprawnień, które mogą być wydane na określony plik lub katalog.

Przykładem tego, dlaczego chcesz mieć takie zachowanie, byłoby, gdybyś wiedział, że plik może legalnie potrzebować różnych użytkowników / grup, aby mieć do niego dostęp, ale z jakiegoś powodu sprawy komplikowały się z uprawnieniami i chciałeś powiedzieć „cokolwiek innego. domyślne uprawnienia są ustawione na, bez względu na przynależność do grupy lub cokolwiek rekursywnego setfacl zostanie wykonany później, ZDECYDOWANIE NIE PODAJ TEGO ! ” Użytkownik będący właścicielem ma specjalny status w świecie POSIX, ma prawa, których inni użytkownicy nie mają, na przykład możliwość bycia innym niż root i zmieniania uprawnień do pliku, a jego prawa nie są ograniczone maską (która byłaby i tak bez sensu ze względu na pierwszy przywilej, jaki daje im system). To dlatego nadal otrzymują rwx, mimo że maska ​​jest ograniczona.

Aby odpowiedzieć na konkretne pytanie : dodaj bit zapisu do maski w pliku i spróbuj ponownie jako johnużytkownik.

oto wersja powyższego objaśnienia w wierszu polecenia, zwróć uwagę na to, jak zmieniają się „efektywne” prawa, gdy wszystko, co modyfikuję, to maska.

Bratchley
źródło
Dziękuję Ci. Naprawdę doceniam odpowiedź. Czy możliwe jest tworzenie nowych plików z domyślną maską rwx? Zredagowałem swoje pytanie z kilkoma dodatkowymi szczegółami.
Ben McCann
Tak, maska ​​jest jedną z kategorii (takich jak użytkownicy i grupy), w których można ustawić domyślną listę ACL. Domyślna maska ​​powinna dziedziczyć podkatalogi i mieć zastosowanie do plików. PRZYKŁAD: setfacl -md: m :: rwx / path / to / Dir
Bratchley
Domyślna lista ACL dziedziczy do podkatalogów, ale nie do plików, dzięki czemu listy ACL są całkowicie bezużyteczne :-(
Ben McCann
Aby się upewnić, że mówimy o tym samym, mówisz o domyślnym acl dla wpisu maski? To właśnie otrzymuję w testach.
Bratchley,
Powtórzyłem również powyższy test dla nowych plików w / testBed po zmianie skutecznej maski w katalogu nadrzędnym i uzyskałem ten sam wynik (domyślna pozycja maski zostanie zastosowana do pliku, a nie skuteczna maska ​​rodzica).
Bratchley,
0

To jest niemożliwe. cp, rsync itp. tworzą pliki ignorując domyślne listy ACL

Dlaczego CP nie szanuje list ACL?

Ben McCann
źródło
niepoprawny Użytkownik napotkał tę samą maskę, na którą napotkaliście wcześniej i otrzymał niepoprawną odpowiedź od kogoś innego. Ignorowanie domyślnych wpisów ACL nie jest zadaniem „cp” ani innego narzędzia, co dzieje się na poziomie systemu plików, gdy cp idzie do utworzenia pliku. Narzędzie ma opcję wydawania wywołań systemowych w celu rozłożenia / dodania niezbędnych list ACL, ale musiałby to zrobić.
Bratchley,
Cholera polega na tym, że możesz zobaczyć wpis ACL, o którym mówią, to tylko skuteczne uprawnienia, których oczekują, że ich nie ma. To była doskonała okazja, aby powiedzieć „hej, stary, sprawdź swoją maskę”.
Bratchley,
1
Właściwie, cofam to, wygląda na to, że EvilRyry napisał o masce, a OP po prostu odpowiedział „to nie działało”, a następnie opublikował wyjście getfacl, które wydaje się pokazywać, że „faceci” dostali plik rwx na plik. W tym tempie najwyżej głosowana odpowiedź nie pasuje do mojego osobistego doświadczenia i tego, co zilustrowałem tutaj przykładami poleceń.
Bratchley,