Я понимаю, что это немного фундаментальный и, возможно, глупый вопрос, но я не смог найти ответ.
Я понимаю, что каждый файл имеет свой "Executable"
бит.
Я предположил, что программы, которые требуют root
, которые принадлежат root
пользователю и root
группе, не будут иметь Executable
бит для, Other
и это предотвратит выполнение не-root пользователями. Но в /bin
и /sbin
каталогах я вижу , что все файлы имеют право , как-rwxr-xr-x
Так что же в действительности определяет, нужно ли пользователю иметь права root для выполнения чего-либо?
permissions
root
декан
источник
источник
/bin
или/sbin
каталоги. Проблема в том, что некоторые из этих программ работают по-разному в зависимости от того, какой пользователь их запускает.Ответы:
Иногда это в коде. Например, на полпути
hwclock.c
, вы найдете:который изменит поведение программы, если вы root или нет.
В большинстве других случаев это неявно; делегировано ядру. Например, если программа вызывает системный вызов , позволяющий перезагрузить систему, она будет работать только в том случае, если вы являетесь пользователем root. Если вы не являетесь пользователем root, у вас будет ошибка «Отказано в разрешении», о которой приложение (если оно написано правильно) просто сообщит вам. Или вы пытаетесь удалить файл; если у вас есть права доступа к файлу, это будет успешно выполнено; если нет, это зависит от того, являетесь ли вы пользователем root или нет --- когда
rm
вызовыunlink()
ядро проверит разрешения.Так что нет, в принципе вы не можете сказать, просто глядя на разрешение исполняемого файла, если программе требуются права root или нет. Многие программы потребуют их только для какой-то операции, поэтому будет очень сложно сделать что-то подобное. Случай
hwclock
один (любой может прочитать часы , но только корень может установить его), но есть сотни из них (kill
,rm
,cat
...)Тогда есть связанный и интересный мир программ setuid ...
источник