Возможно ли использовать интерфейс sudo (например, gksudo) для повышения привилегий текущего процесса? Я знаю, что я могу сделать следующее:Как мне выполнить текущий процесс?
sudo cat /etc/passwd-
Но я заинтересован в этом:
sudo-become-root # magic function/command
cat /etc/passwd-
Я пишу в Python. Мое заявление состоит в том, что у меня есть программа, которая работает как пользователь, но может столкнуться с файлами для чтения/записи, которые принадлежат root. Я хотел бы запросить пароль, получить привилегии пользователя root, сделать то, что мне нужно, а затем снова отказаться от привилегий.
Я знаю, что я мог бы разделить логику администрирования и логику без админов на отдельные процессы, а затем просто запустить административный процесс с правами root (с некоторыми коммуникациями - policykit/dbus будет здесь хорошо подходит). Но я надеялся на гораздо более простое (хотя и более рискованное) решение.
Я думаю что-то вроде выполнения ppriv Solaris через sudo, чтобы затем изменить привилегии текущего процесса. Который кажется взломанным, но работоспособным. Но, насколько я знаю, Linux не предлагает ppriv.
(Я удивлен, что это уже не очевидно, кажется, что это не необычная вещь, а не выглядит, чтобы быть дырой в безопасности, позволяющей эскалации в процессе над эскалацией нового процесса .)
Если sudo работает для вас, а как насчет su? – Dani
AFAIK, su предоставит мне подоболочку для работы. Это прекрасно подходит для интерактивного использования. Но я хочу повысить привилегии текущего процесса, а не подпроцесса оболочки. –
На самом деле это не ответ, но мне нравится смотреть исходный код OpenSSH как модель для манипулирования и разделения привилегий. Однако, в отличие от ваших cae, я думаю, что демон ssh начинается с повышенных привилегий, а затем выборочно разворачивает детей с меньшим привилегией. –