Root nie może chmod?

12

W moim dziale mamy mały serwer plików z CentOS i sambą. Mam dostęp do konta root, aby móc wykonać podstawową konserwację.

Dzisiaj robiłem niektóre foldery tylko do odczytu, więc zrobiłem krok dalej chmod -R -w some-folder/, ale dla kilku plików otrzymałem odpowiedź:

chmod: ./somefile.pdf: nowe uprawnienia to r-xrwxr-x, a nie r-xr-xr-x

Po dodaniu -vnie otrzymuję wielu informacji:

tryb `./somefile.pdf 'zachowany jako 0575 (r-xrwxr-x)

Próbowałem, aby się upewnić:

# touch test-file
# chmod -v -R -w .
mode of `./somefile.pdf' retained as 0575 (r-xrwxr-x)
chmod: ./somefile.pdf: new permissions are r-xrwxr-x, not r-xr-xr-x
mode of `./test-file' changed to 0444 (r--r--r--)

Nie mogę wymyślić żadnych dobrych powodów, dla których root nie byłby w stanie zrobić chmod?

Niektóre ciekawostki:

  • System plików nie jest tylko do odczytu (tylko niektóre pliki nie zostały chmodded).
  • Uruchomiłem polecenia chmod jako root, ale bez skutku.
  • Partycja, na której znajdują się pliki, to ext4.

AKTUALIZACJE : To jest wynik dla lsattrpliku zawierającego folder:

# lsattr somefile.pdf
-------------e- somefile.pdf
# lsattr ..
-------------e- ../myfolder

Nie ma setuid ( ls -la):

dr-xr-xr-x  2 userxyz abc   4096 May 30 09:29 .
dr-xr-xr-x 17 userxyz abc   4096 Sep 19  2013 ..
-r-xrwxr-x  1 userxyz abc 275150 Aug  6  2013 somefile.pdf
Roflo
źródło
Zdalnie uzyskujesz dostęp do tych plików?
Luciano Andress Martini
1
Jaki jest wynik lsattrtych samych plików i katalogu nad nimi?
Ryder

Odpowiedzi:

17

Według źródeł masz naiwny oczekiwany tryb . Po tym, jak porzuciłem więcej, myślę, że przyczyną jest -wopcja, której nie oczekujesz. Powinieneś dać g-wlub ugo-w(w zależności od potrzeb).

Bez podania wyraźnego celu (a, o, g, u) można uzyskać pewne nieoczekiwane wyniki, zgodnie z wartością umask. Myślę, że taka dodatkowa wiadomość została wykonana z powodu takich nieoczekiwanych zmian.

Edycja: źródła w http://git.savannah.gnu.org/cgit/coreutils.git/tree/src/chmod.c#n301

Zaczerpnięty z pamięci podręcznej Google komentarz w tym kodzie, którego już nie ma:

/ * Jeśli to prawda, zdiagnozuj niespodzianki wynikające z naiwnych nadużyć, takich jak „plik chmod -r”. POSIX umożliwia tutaj diagnostykę, ponieważ ma być używany kod przenośny. „chmod - plik -r” * /

Giacomo Catenazzi
źródło
Tak, to było to. Zmieniłem to na ugo-wi już nie narzeka. Zaczekam trochę czasu, zanim przyjmę z grzeczności potencjalne odpowiedzi.
Roflo
1
Z zadowoleniem przyjmuję zmiany lub lepsze odpowiedzi, ponieważ wciąż nie rozumiem, dlaczego chmod działa w ten dziwny sposób.
Giacomo Catenazzi
5
man chmod: "Kombinacja liter ugoa kontroluje dostęp użytkowników do pliku zostanie zmieniony [...] Jeśli nie podano żadnego z nich, efekt jest taki, jakby podano (a), ale ustawione są bity nie ma to wpływu na umask. ” Możesz więc robić takie rzeczy jak plik chmod + w i dać dostęp tylko do zapisu tym, którzy dostaną go podczas tworzenia nowego pliku. Negatywne zachowanie wydaje się jednak nieco mylące, więc ostrzeżenie wydaje się dobrym pomysłem.
ilkkachu