В основном: когда я, как не-root пользователь, выполняю chmod
файл, когда я получаю "отказано в доступе" для этой команды, а когда нет? Какое свойство файла разрешает или запрещает мне изменять разрешения на него?
Я предполагаю, что это владелец файла, который задает этот вопрос, поскольку я просто пытаюсь немного разобраться в основных концепциях.
решение1
TL;DR:Если вы хотите запустить chmod
файл в GNU/Linux, вам необходимо быть пользователем root или владельцем файла.
Изчмод(2)(системный вызов chmod) страница руководства:
Эффективный UID вызывающего процесса должен совпадатьвладелец файла, или процесс должен быть привилегированным (Linux: он должен иметь CAP_ВЛАДЕЛЕЦспособность).
Извозможности(7)страница руководства:
CAP_ВЛАДЕЛЕЦ
- Обходить проверки разрешений для операций, которые обычно требуют, чтобы UID файловой системы процесса совпадал с UID файла (например, chmod(2), utime(2)), за исключением операций, охватываемых CAP_DAC_OVERRIDE и CAP_DAC_READ_SEARCH; [...]
Изsetfacl(1)страница руководства:
РАЗРЕШЕНИЯ
Владельцу файла и процессам, способным на CAP_FOWNER, предоставляется право изменять ACL файла. Это аналогично разрешениям, необходимым для доступа к файловому режиму. (В текущих системах Linux, root — единственный пользовательсCAP_ВЛАДЕЛЕЦ(Возможность.)