Исходный ответ
Вы можете подумать о переключателе setuid на самом исполняемом файле. В Википедии есть статья, в которой даже достаточно эффективно показано различие между geteuid()
и getuid()
, первое для того, чтобы узнать, кому вы "подражаете", а последнее - для того, кем вы "являетесь". Например, процесс sudo, geteuid, должен возвращать 0 (root) и получать идентификатор вашего пользователя, однако его подпроцессы действительно запускаются от имени root (вы можете проверить это с помощью sudo id -u -r
).
Я не думаю, что есть способ легко получить root-доступ программным способом - в конце концов, зачем вам это нужно, применяя принцип наименьших привилегий? Обычная практика - запускать только ограниченные части кода с повышенными привилегиями. Многие демоны и т. Д. Также настроены в современных системах для работы в качестве собственного пользователя с большинством необходимых им привилегий. Права root действительно необходимы только для очень специфических операций (монтирование и т. Д.).
Обновление 2013 г.
Мой первоначальный ответ остается в силе (хотя я в 2013 году мог бы справиться с ним лучше, чем мой 2010), но если вы разрабатываете приложение, для которого требуется root-доступ, вы можете точно подумать, какой именно root-доступ требуется, и рассмотреть использование возможностей POSIX (страница руководства). Они отличаются от безопасности на основе возможностей, реализованной в L4 et al. Возможности POSIX позволяют предоставить вашему приложению подмножество полномочий root. Например, CAP_SYS_MODULE
позволит вам вставлять модули ядра, но не даст вам никаких других полномочий root. Это используется в дистрибутивах, например. Fedora имеет функцию полного удаления двоичных файлов setuid с неограниченным доступом root.
Это важно, потому что как программист ваш код, безусловно, идеален! Но библиотеки, от которых вы зависите (вздохните, если бы вы их написали!), Могут иметь уязвимости. Используя возможности, вы можете ограничить использование этого эксплойта и уберечь себя и свою компанию от проверки, связанной с безопасностью. Это делает всех счастливее.
person
Community
schedule
20.03.2010