chown - Operacja niedozwolona

37

Jestem zalogowany jako minime.

Nie rozumiem, dlaczego nie pozwala mi przeglądać pliku, który posiadam bez uprawnień su. Oczywiście mogę używać sudo, ale chciałbym zrozumieć, dlaczego? z powodu grupy danych www?

chown minime:www-data user-functions.php

ls -lh

-rw-r--r--  1 minime minime    24K Jan  6 16:11 user-functions.php

Error:

chown: changing ownership of `user-functions.php': Operation not permitted

źródło

Odpowiedzi:

51

Użytkownicy nieuprzywilejowani (nie root) nie mogą chownplików na inne nazwy użytkowników. Aby użyć chown, użytkownik musi mieć uprawnienia użytkownika docelowego. Innymi słowy, rootplik może przekazać tylko innemu użytkownikowi.

Jak wyjaśniono tutaj (dzięki @slhck):

Tylko procesy o efektywnym identyfikatorze użytkownika równym identyfikatorowi użytkownika pliku lub z odpowiednimi uprawnieniami mogą zmienić własność pliku. Jeśli _POSIX_CHOWN_RESTRICTED obowiązuje dla ścieżki:

  • Zmiana ID użytkownika jest ograniczona do procesów z odpowiednimi uprawnieniami.

  • Zmiana identyfikatora grupy jest dozwolona dla procesu o efektywnym identyfikatorze użytkownika równym identyfikatorowi użytkownika pliku, ale bez odpowiednich uprawnień, tylko wtedy, gdy właściciel jest równy identyfikatorowi użytkownika pliku lub (uid_t) -1 i grupa jest równa albo do efektywnego identyfikatora grupy procesu wywołującego, albo do jednego z dodatkowych identyfikatorów grupy.

Uzasadnienie tego zostało dobrze wyjaśnione przez @Gilles w tej odpowiedzi na Unixa i Linuksa:

Powodem tego ograniczenia jest to, że przekazanie pliku innemu użytkownikowi może pozwolić na złe rzeczy w rzadkich, ale wciąż ważnych sytuacjach. Na przykład:

  • Jeśli system ma włączone przydziały dysku, Alice może utworzyć plik do zapisu w świecie w katalogu dostępnym tylko dla niej (aby nikt inny nie mógł uzyskać dostępu do tego pliku w katalogu w katalogu), a następnie uruchomić chown, aby plik ten był własnością inny użytkownik Bill. Plik byłby wtedy wliczany do limitu dysku Billa, nawet jeśli tylko Alice może go użyć.
  • Jeśli Alice oddaje plik Billowi, nie ma śladu, że Bill go nie utworzył. Może to stanowić problem, jeśli plik zawiera nielegalne lub w inny sposób naruszające dane dane.
  • Niektóre programy wymagają, aby ich plik wejściowy należał do konkretnego użytkownika w celu uwierzytelnienia żądania (na przykład plik zawiera instrukcje, które program wykona w imieniu tego użytkownika). Zwykle nie jest to bezpieczny projekt, ponieważ nawet jeśli Bill stworzył plik zawierający poprawne składniowo instrukcje, być może nie zamierzał ich wykonać w tym konkretnym czasie. Niemniej jednak pozwolenie Alicji na utworzenie pliku z dowolną zawartością i pobranie go jako danych wejściowych od Billa może tylko pogorszyć sytuację.
terdon
źródło
Dzięki @slhck Sprawdziłem manstronę i nie mogłem znaleźć wyraźnej wzmianki o tym, odpowiedź zaktualizowana.
terdon
świetny! o wiele jasne teraz ... co jeśli minime jest częścią grupy danych www?
@ SandroDzneladze nie, musisz mieć taki sam identyfikator użytkownika, jak użytkownik, którego chcesz zmienić.
terdon