Корінь не може chmod?


12

У моєму відділі ми маємо невеликий файловий сервер із CentOS та samba. У мене є кореневий доступ, щоб мати можливість виконувати базове обслуговування.

Сьогодні я робив деякі папки лише для читання, тому я пішов і зробив chmod -R -w some-folder/, але на кілька файлів я отримав відповідь:

chmod: ./somefile.pdf: нові дозволи - r-xrwxr-x, а не r-xr-xr-x

Після додавання -vя не отримую багато інформації:

режим `./somefile.pdf 'зберігається як 0575 (r-xrwxr-x)

Я спробував наступне, щоб переконатися:

# 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--)

Я не можу придумати жодних вагомих причин, чому root не міг би зробити chmod?

Деякі примхи:

  • Файлова система не є лише для читання (лише деякі файли відмовилися відмодельовані).
  • Я запустив команди chmod як root, але безрезультатно.
  • Розділ, де містяться файли, є ext4.

ОНОВЛЕННЯ : Це вихід для lsattrфайлу, що містить папку:

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

Немає налаштувань ( 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

Ви отримуєте доступ до цих файлів віддалено?
Лучано Андресс Мартіні

1
Який вихід у lsattrцих самих файлах та в каталозі над ним?
Райдер

Відповіді:


17

За даними джерел, у вас є наївний очікуваний режим . Після того, як викинетесь більше, я думаю, що причина - це -wваріант, який не є тим, чого ви очікуєте. Ви повинні дати g-wабо ugo-w(відповідно до ваших потреб).

Без визначення явної цілі (a, o, g, u) можна отримати несподівані результати відповідно до значення umask. Я думаю, що таке додаткове повідомлення робиться через такі несподівані зміни.

Редагувати: джерела в http://git.savannah.gnu.org/cgit/coreutils.git/tree/src/chmod.c#n301

Взяте з кеша Google, коментар до цього коду, якого вже немає:

/ * Якщо це правда, діагностуйте сюрпризи від наївних зловживань типу "chmod -r файл". POSIX дозволяє тут проводити діагностику, оскільки передбачається використовувати портативний код. "chmod - -r файл" * /


Так, це було все. Я змінив його, ugo-wі він більше не скаржиться. Я зачекаю деякий час, перш ніж приймати з ввічливості потенційних відповідей.
Roflo

1
І я вітаю правки або кращі відповіді, тому що я досі не розумію, чому chmod працює таким дивним чином.
Джакомо Катенацці

5
man chmod: "Комбінація букв ugoa визначає, який доступ користувачів до файлу буде змінено [...] Якщо нічого з цього не вказано, ефект такий, як якщо б (а) було надано, але біти, які встановлені в umask не зачіпається ". Таким чином, ви можете робити такі речі, як chmod + w файл і надавати доступ для запису лише тим, хто отримав би його під час створення нового файлу. Негативна поведінка здається дещо заплутаною, тому попередження здається гарною ідеєю.
ilkkachu
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.