Root не может chmod?


12

В моем отделе у нас есть небольшой файловый сервер с CentOS и samba. У меня есть root-доступ, чтобы я мог выполнять некоторые базовые операции.

Сегодня я делал некоторые папки только для чтения, поэтому я сделал это 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?

Некоторые лакомые кусочки:

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

ОБНОВЛЕНИЯ : Это вывод для lsattrфайла и содержит папку:

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

Там нет 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

Вы обрабатываете эти файлы удаленно?
Лучано Андресс Мартини

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 file". POSIX позволяет проводить диагностику здесь, поскольку предполагается использовать переносимый код. "chmod - -r файл" * /


Да, так и было. Я изменил это на ugo-wи больше не жалуюсь. Я подожду некоторое время, прежде чем принять из вежливости к потенциальным ответчикам.
Roflo

1
И я приветствую правки или лучшие ответы, потому что я до сих пор не понимаю, почему chmod работает таким странным образом.
Джакомо Катенацци

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