Что определяет, какие команды Linux требуют root-доступа? Я понимаю причины, почему желательно, скажем, apt-get
требовать root
привилегий; но что отличает эти команды от остальных? Это просто вопрос владения и выполнения прав на исполняемый файл?
linux
root
privileges
Брайан Добби
источник
источник
open
и получают «разрешение отказано». Некоторые приложения проверяютgetuid
и перестают работать, если они не вызываются пользователем root. Некоторые из них физически принадлежат пользователю root, и только владелец может выполнять их (см.chmod
). Если вы спрашиваете, есть ли в заголовке приложения отметка «нуждается в корне», ответ - нет. Там нет такого понятия , AFAIKОтветы:
В Linux, привилегия корня были в одной точке , разделенной на «возможность», так что вы можете получить полный список специальных привилегий корневых, глядя в эту документацию:
man 7 capabilities
.Чтобы ответить на ваш вопрос, команде потребуется запускать с правами root, когда ей требуется одна из этих привилегий, а ее исполняемому файлу, не являющемуся сценарием, не назначена соответствующая возможность в его метаданных файла (например, если сценарий python требует эту возможность, то возможность должен быть в интерпретаторе python, указанном в строке shebang).
Обратите внимание, что некоторым командам, которым требуется root-доступ, не нужно что-то подобное,
sudo
потому что в их исполняемом файле установлен бит SUID. Этот бит заставляет исполняемый файл запускаться от имени владельца (обычно root) при выполнении любым, у кого есть доступ для выполнения.sudo
Сам пример тому , что смена пользователей - это привилегированное действие, которое нужно сделать.РЕДАКТИРОВАТЬ: я отмечаю из вашего вопроса, что у вас может быть идея, что вы можете определить, будет ли команде нужен root-доступ перед ее запуском. Это не тот случай. Иногда программе могут потребоваться права суперпользователя, а иногда - нет, и это может быть решение, принятое программой из-за данных, предоставляемых во время выполнения. Возьмем, к примеру, вызов
vim
, просто так без аргументов, а затем через серию нажатий клавиш и вставку, указание ему записать что-то в файл, для которого у него нет разрешения на запись, или, возможно, выполнение другой команды, для которой самим потребуются привилегии root. Ничто в команде перед ее выполнением не может указывать на то, что она в конечном итоге потребует root-доступа. Это то, что может быть определено только в том случае, если оно пытается сделать то, что требует этого.В любом случае, вот несколько примеров из ссылочной man-страницы привилегий root:
источник
Это , главным образом , вопрос о том, что инструмент или программа делает . Помня о том, что пользователь, не являющийся суперпользователем, может касаться только тех файлов, которыми он владеет или имеет к ним доступ, любой инструмент, который должен уметь разбираться со всем, будет требовать доступа суперпользователя, чтобы выполнить то, что он делает. Быстрый пример вещей, которые могут требовать суперпользователя, включают, но не ограничиваются:
/etc
)/lib
и/usr/lib
) или двоичных файлов (/bin
,/usr/bin
)renice
)источник
Я думаю, что это в соответствии с идентификацией пользователя для проверки разрешений, а не в соответствии с порядком для разделения разрешений. Файлы и пользователи являются привилегированными, и команды не должны быть разделены.
источник