Zezwolenia grupowe zezwalają, ale nadal nie są akceptowane

43

Mam partycję ext4 i ustawiłem właściciela grupy dla wszystkich podkatalogów na mygroup:

# chgrp -R mygroup /mount/abc
# chmod -R g+swrx /mount/abc

Mój użytkownik należy do tej grupy. Wewnątrz tej partycji znajduje się folder, którego właścicielem jest użytkownik „nobody”, a teraz grupa „mygroup”. Mój użytkownik należy do „mojej grupy”. Oto ls -l:

myuser@host:/mount/abc/folder$ ls -l
drwxr-sr-x 2 nobody      mygroup      4096 Apr 25 12:08 ./
drwxrwsrwx 6 nobody      mygroup      4096 Apr 24 07:57 ../
-rw-r-xr-- 1 otheruser   mygroup    159539 Apr 23 23:44 test.png*

myuser@host:/mount/abc/folder$ groups myuser
myuser : mygroup {... a list of other groups also...} 

myuser@host:/mount/abc/folder$ rm test.png 
rm: remove write-protected regular file ‘test.png’? y
rm: cannot remove ‘test.png’: Permission denied

myuser@host:/mount/abc/folder$ touch test.txt
touch: cannot touch ‘test.txt’: Permission denied

Pamiętaj, że nie mogę usunąć ani utworzyć pliku, który jest własnością grupy, której częścią jest mój użytkownik.

Chyba nie do końca rozumiem, jak działają grupy. Myślałem, że jeśli jesteś częścią grupy, odziedziczysz uprawnienia tej grupy. czy robię coś źle?

Dzięki

Chaos
źródło
Wygląda na to, że triada uprawnień to świat właściciel-grupa-świat. Powyżej możesz zobaczyć drwxr-sr-x dla katalogu. Więc grupa ma pozwolenie rs. Wygląda na to, że chmod -R nie ustawił rekurencyjnie uprawnień do rwx. Kiedy odwracam bit w dla pozwolenia grupy na folder, działa.
Chaos,

Odpowiedzi:

70

Czy ostatnio dodałeś tego użytkownika do tej grupy, nie wylogowując się / pomiędzy nimi? Następnie „grupy” pokażą grupę, ale użytkownik nie ma jeszcze uprawnień do grupy.

Możesz pokazać swoje skuteczne grupy za pomocą

$ id

Na przykład, jeśli dodam mojego użytkownika psdo grupy, faxa następnie wpiszę

$ id

nie pokazuje grupy fax, ale

$ groups ps

pokazuje fax.

Wykonanie czynności na surzecz własnego użytkownika daje nową przynależność do grupy:

$ su ps
$ id

Dane wyjściowe zawierają teraz również fax.

peschü
źródło
1
To jest naprawdę pomocne. Zwłaszcza część „sudo <nazwa użytkownika>”.
Chaos
4
logowanie / wylogowanie jest tak oczywiste, że przegapiłem punkt, wielkie dzięki kolego!
nicolallias,
1
@ peschü Mam sudoi używam go regularnie. Błąd, który pokazałem, narzeka, że ​​polecenie ubuntu(tj. Nazwa użytkownika) nie jest rozpoznanym poleceniem. Nie sądzę, aby twoja sugestia była poprawna pod względem składniowym - być może działa w twoim przypadku, ponieważ pszdarza się, że jest to także polecenie, a także nazwa użytkownika.
beldaz
1
@beldaz oh nie! Masz rację! jest poprawna składniowo su <username>. Zredagowałem post.
peschü
1
cholera stare wylogowanie / ponowne zalogowanie działa za każdym razem.
Steampunkery
9

Zastosowana metoda wydaje się być poprawna. Właśnie teraz próbowałem go powtórzyć i zadziałało dobrze.

Nie jestem pewien, czy jest literówka, ale jest niewielki problem z poleceniem. Nie ma potrzeby wspominania o „mojej grupie”. Następujące prace

# chmod -R g+swrx /mount/abc

Nawet możesz usunąć sbit, po prostu zrób g+rwx. Po zmianie uprawnień i dokonaniu zmian ls -l, powinno wyświetlić odpowiednie uprawnienia.

Vivek Kapoor
źródło
2
Usunąłem literówkę z nazwą grupy. Katalog ma uprawnienia do WRX podczas wykonywania polecenia ls -l i nie należy do niego: mygroup. Mimo że myuser jest częścią mygroup, myuser nadal nie może tworzyć / usuwać plików. Mam nadzieję, że to ma sens.
Chaos
3

Nie można usunąć pliku, ponieważ grupa mygroupnie ma uprawnień do zapisu zarówno w pliku, test.pngjak i folderze. Aby operacje zapisu działały na pliku, uprawnienia do pliku powinny wyglądać następująco:

-rw-rwxr-- 1 otheruser   mygroup    159539 Apr 23 23:44 test.png*

Jeśli przyjrzysz się bliżej formatowi uprawnień

duuugggooo

Pierwsze trzy zastępcze uuusą dowolnie R EAD w rytu e x ecute. Następne trzy symbole zastępcze gggdotyczą grupy i oooinnych. W fragmencie wysłana przez grupy OP brakuje w obrządku zgody.

Ashoka Lella
źródło
2

Aby dodać do zaakceptowanej odpowiedzi (ponieważ nie mogę jeszcze komentować):

Jeśli używasz oprogramowania takiego jak BitVise do utworzenia połączenia SSH z serwerem, samo zamknięcie i ponowne otwarcie terminala nie będzie się liczyło jako logowanie i wylogowywanie. To będzie robić takie rzeczy jak przeładować ~/.bashrc, ale nie wykonywać rzeczywiste aktualizacje grupowych (jeśli dodano grupę w sesji „login”). Aby to zadziałało, musisz się w pełni wylogować i zalogować ponownie przy użyciu klucza SSH / poświadczeń.

Figidon
źródło
2

Katalogi wymagają zestawu bitów x (dla katalogu ten bit jest postrzegany jako bit wyszukiwania), aby otworzyć. Używam więc drzewa, aby uzyskać tylko zestaw folderów i uniknąć koszmaru ustawiania wszystkich plików jako plików wykonywalnych (opcja dla drzewa to -d List directories only.):

sudo tree -faid /mount/abc | xargs -L1 -I{} sudo chmod 755  "{}"

Ostrzeżenie!!! powinieneś wziąć to pod uwagę:

  • użycie chmod lub chown rekursywnego w /katalogu głównym lub katalogach systemowych zniszczy Twój system operacyjny (właściwie wszystko, co rekurencyjne w /katalogu lub katalogach systemowych jest niebezpieczne)

  • nie jest dobrą praktyką bezpieczeństwa ustawiać takie uprawnienia zbiorcze

Eduard Florinescu
źródło
1
Wielkie dzięki! Słowa „Katalogi potrzebują zestawu bitów x” rozwiązały mój problem! Zrobiłem „sudo chmod g + x <parent dir path>” i zadziałało.
kinORnirvana