Brak zgody na zmianę gid (grupy) pliku, którego jestem właścicielem

17

Wygląda na to, że wciąż brakuje mi pewnych rzeczy na temat sposobu działania uprawnień. Korzystam z systemu Debian 7 btw. właśnie teraz mam ten plik, który pobrałem i do którego należy myuser:myuser, to znaczy, że zarówno użytkownik, jak i grupa są ustawione dla mnie. Znajduje się również w moim $HOMEkatalogu, ponieważ tam go pobrałem.

Jak na razie dobrze. Teraz chcę udostępnić ten plik innym użytkownikom komputera i w tym celu chcę zmienić własność grupy na plik na grupę „użytkowników”. jednak to się nie powiedzie:

nass@quarx:~/xmas_carol$ chgrp -R users * 
chgrp: changing group of movie.mov': Operation not permitted

A zawartość folderu to:

-rwxr-xr-x 1 nass nass 2482411461 Feb  6 03:57 movie.mov

Nie rozumiem, co się dzieje z uprawnieniami. Czy ktoś może wyjaśnić

nass
źródło
jest /xmas_carolsamba / nfs mount?
Rahul Patil
Rozwiązaniem jest setfacl(jeśli system plików ma listy ACL). patrz unix.stackexchange.com/questions/101263/…
ctrl-alt-delor
Miałem ten sam błąd, dopóki nie zdałem sobie sprawy, że po prostu dodałem się do tej grupy. Innymi słowy, musiałem się wylogować, zalogować ponownie, aby zmiany odniosły skutek.
Jonathan

Odpowiedzi:

22

Twój użytkownik prawdopodobnie nie jest członkiem usersgrupy, więc nie masz prawa przekazać pliku tej grupie. Ilustrować:

$ groups
terdon sudo netdev fuse vboxsf vboxusers

$ ls -l file
-rw-r--r-- 1 terdon terdon 604 Feb  6 03:04 file
$ chgrp users file
chgrp: changing group of ‘file’: Operation not permitted
$ chgrp vboxusers file
$ ls -l file
-rw-r--r-- 1 terdon vboxusers 604 Feb  6 03:04 file

To zachowanie jest wymienione w specyfikacjach POSIX :

Tylko właściciel pliku lub użytkownik z odpowiednimi uprawnieniami może zmienić właściciela lub grupę pliku.

Niektóre implementacje ograniczają użycie programu chgrp do użytkownika z odpowiednimi uprawnieniami, gdy określona grupa nie jest efektywnym identyfikatorem grupy lub jednym z dodatkowych identyfikatorów grup procesu wywołującego.

Głównym powodem tego jest to, że jeśli nie jesteś członkiem grupy, nie powinieneś być w stanie modyfikować tego, do czego ta grupa ma dostęp. Ta odpowiedź dotycząca chownuprawnień jest również istotna.

Tradycyjnie w systemach współużytkowanych istnieje usersgrupa, do której należą wszyscy zwykli użytkownicy i która jest podstawową grupą każdego użytkownika. W ten sposób tworzone są pliki należące do usersgrupy i wszyscy użytkownicy mogą je czytać.

W każdym razie, ponieważ nie jest to sposób, w jaki dystrybucje oparte na Debianie są obecnie konfigurowane, sposobem na zapewnienie określonego użytkownika dostępu do twojego pliku byłoby

  1. Zmień własność grupy pliku / katalogu na grupę, której ty i drugi użytkownik jesteście członkami;

  2. Po prostu zmień odpowiednio uprawnienia do pliku / katalogu:

    $ chmod 755 /home/terdon
    $ ls -ld /home/terdon
    drwxr-xr-x 170 terdon terdon 491520 Apr 20 13:43 /home/terdon/
    

    Dzięki temu katalog będzie dostępny dla wszystkich.

terdon
źródło
4

W najnowszych UNICach (a „ostatnie” ma tutaj dość szerokie znaczenie), nie można zmienić własności grupy plików na grupę, do której nie należysz. Obsługiwane były starsze wersje różnych wersji UNIXa w przypadku takich przypadków, jak twój, ale okazało się, że jest to problem z bezpieczeństwem.

Problem polegający na możliwości zmiany właściciela grupy na obce grupy jest dość trywialny: jeśli system plików, na którym znajduje się plik, ma włączone grupy przydziałów, użytkownik o złych zamiarach może po prostu wypełnić przydział grupy obcej, co uniemożliwi użytkownikom z tą grupą jako identyfikatorem grupy podstawowej do tworzenia kolejnych plików. Może to łatwo wpłynąć nawet na procesy już uruchomione i spowodować ich śmierć z powodu „pełnego dysku”.

Aby obejść ten problem, istnieją (co najmniej) dwie możliwości: Po pierwsze, możesz poprosić superużytkownika swojego systemu o dodanie docelowej grupy docelowej do listy grup dodatkowych konta. Oczywiście ma to ograniczony sens tylko wtedy, gdy nie masz związku z tą grupą.

Innym sposobem na to, aby nie trzeba było zapisywać pliku w świecie, co z pewnością nie jest pożądane, jest użycie list ACL w celu nadania grupie uprawnień do odczytu i zapisu:

$ setfacl -m group:thegroupsname:rwx the_file(s)
Andreas Wiese
źródło
nie musisz dawać polecenia wykonania (w zwykłym pliku) i prawdopodobnie nie chcesz dawać pozwolenia na zapis.
ctrl-alt-delor
2

Być może dlatego, że bit niezmienny jest ustawiony. Pobierz listę atrybutów plików

lsattr /path/to/your/file

jeśli pojawia się i , oznacza to, że atrybut niezmienny jest ustawiony i nikt nie może modyfikować pliku (nawet root).

Aby usunąć atrybut, musisz uruchomić jako root

chattr -i /path/to/your/file

Aby zobaczyć więcej atrybutów systemu plików, przeczytaj strony podręcznika man

man chattr
man lsattr
mavillan
źródło
Dobra uwaga, ale z pytania, jak sądzę, pytający nie ma uprawnień superużytkownika, których potrzebujesz, aby wyczyścić niezmienną flagę (przynajmniej na wszystkich systemach plików, które tak długo przyłączyłem). Ponadto, ponieważ właśnie rozpakował archiwum, najprawdopodobniej nie jest to problemem, ponieważ używany archiwizator musiałby go ustawić (ten sam problem).
Andreas Wiese
0

Jeśli właśnie dodałeś się do grupy, wyloguj się, zaloguj ponownie, aby upewnić się, że zmiany zostaną wprowadzone.

Jonathan
źródło