Какие разрешения нужны для запуска команды chmod, chown для папки / элемента?

9

Я всегда выполнял команды chmod / chown как пользователь sudo. Но сегодня мне стало интересно, если я не использую sudo, какие разрешения мне нужны, чтобы фактически выполнить chmod/chownкоманду для папки / файла? Я попытался погуглить вопрос, но ничего не появилось, что отвечает конкретно на этот вопрос.

Максим Корецкий
источник

Ответы:

18

В Linux:

chown : «Только привилегированный процесс (Linux: один с CAP_CHOWN возможностью) может изменить владельца файла». (Источник: chown (2)) Простой способ быть таким процессом - запустить его root. Обратитесь explain_chownза помощью, чтобы узнать, почему конкретный chownсбой Посмотрите capabilitiesспособы дать процессам такую ​​возможность, кроме как запускать как root.

chmod : владелец файла или rootможет изменять разрешения, а также другие процессы с CAP_FOWNERвозможностью. (Источник)

chgrp : «Владелец файла может изменить группу файла на любую группу, членом которой является этот владелец. Привилегированный процесс (Linux: с CAP_CHOWN) может изменить группу произвольно». (Чаун (2))

CXW
источник
1
Linux начал реализовывать возможности примерно в 2004 году, но соответствующее предложение POSIX было снято уже в 1997 году. Если вы работаете в современной операционной системе, такой как Solaris, вам PRIV_FILE_CHOWNнужно скомпоновать все локальные файлы и PRIV_FILE_CHOWN_SELFскомпоновать принадлежащие вам локальные файлы. Кстати: ОС, которая позволяет отбирать удаленные файлы из NFS, может рассматриваться как риск безопасности. В HP-UX любой обычный пользователь может сортировать свои файлы, и это также считается риском для безопасности.
Щил
PS предложение о возможности POSIX было отозвано, потому что оно обрабатывает привилегии только между обычным пользователем и историческим пользователем root. Solaris имеет вдвое больше мелких привилегий, чем Linux, и позволяет удалять такие привилегии, как, например, fork () и exec ().
Шил
Обратите внимание, что в Linux, если у вас нет привилегий, вы можете иметь chownфайлы, которыми владеете, но только часть gid (для любой группы, членом которой вы являетесь). Я могу сделать chown stephane:other-group myfile(или chown :other-group), пока я являюсь членом other-group.
Стефан Шазелас
Как насчет chgrpкоманды? Не могли бы вы добавить объяснение этому?
Максим Корецкий
@ StéphaneChazelas, спасибо, основываясь на вашем ответе, я предполагаю, что владелец может успешно работать, chgrpне будучи привилегированным пользователем?
Максим Корецкий