Оригинальный ответ
Вы могли бы рассмотреть Setuid переключатель на самом исполняемом файле. У Википедии есть article, что даже показывает вам разницу между geteuid()
и getuid()
довольно эффективно, первая из которых предназначена для выяснения того, кто вы «эмулируете», а второй для тех, кто вы «есть». Процесс sudo, например, geteuid должен возвращать 0 (root) и getuid идентификатор пользователя, однако его подпроцессы действительно выполняются с правами root (вы можете проверить это с помощью sudo id -u -r
).
Я не думаю, что есть способ легко программно получить root-доступ - в конце концов, применяя принцип наименьших привилегий, зачем вам это нужно? Обычная практика заключается в том, чтобы запускать только ограниченные части кода с повышенными привилегиями. Многие демоны и т. Д. Также настроены в современных системах, чтобы работать как их собственный пользователь с большинством привилегий, в которых они нуждаются. Только для очень конкретных операций (установка и т. Д.) Необходимы привилегии root.
2013 обновление
Мой первоначальный ответ стоит (хотя моя самость 2013 может сделать лучшую работу, чем мой 2010 один), но если вы разрабатываете приложение, которое требует корневого доступа, вы можете рассмотрите, какой именно корневой доступ необходим, и рассмотрим использование POSIX Capabilities(man page). Они отличаются от capability-based security, как это реализовано в L4 et al. Возможности POSIX позволяют вашему приложению получать подмножество полномочий root. Например, CAP_SYS_MODULE
позволит вам вставлять модули ядра, но не дает вам других корневых мощностей. Это используется в дистрибутивах, например. Fedora has a feature to completely remove setuid binaries с неразборчивым корневым доступом.
Это важно, потому что, как программист, ваш код, безусловно, идеален! Но библиотеки, на которые вы зависите (вздох, если только вы их написали!) Могут иметь уязвимости в них. Используя возможности, вы можете ограничить использование этого эксплойта и спасти себя и свою компанию от проверки безопасности. Это делает всех счастливее.
Да, мой подход не был правильным. Установка липкого бита - хороший способ сделать это. Большое спасибо. – ereOn
Работает как очарование! Спасибо;) – ereOn
Когда вы это делаете, вы должны быть очень осторожны с безопасностью, потому что ваше приложение теперь является целью для эксплойтов привилегий Privilege. –