Лучший способ повысить привилегии программно в разных версиях Linux? - PullRequest
1 голос
/ 27 марта 2009

Существует стандартный способ (работающий в дистрибутивах Linux) запустить процесс (из другого приложения), запрашивающий пароль root для повышения привилегий?

Я пытался использовать gksudo (по умолчанию он установлен в ubuntu), но в других дистрибутивах (или под другим менеджером рабочего стола) он может быть не установлен.

Ответы [ 4 ]

3 голосов
/ 27 марта 2009

Я бы рекомендовал взглянуть на PolicyKit , который используется большинством современных дистрибутивов для достижения этой цели.

3 голосов
/ 27 марта 2009

Работает везде, но не кэширует пароль и запрашивает root , а не пароль пользователя (как sudo):

su - -c command

EDIT : Нет в Ubuntu, где учетная запись root отключена. Вероятно, вам нужно что-то подобное:

test -x /usr/bin/sudo && sudo command || su - -c command
1 голос
/ 27 марта 2009

Традиционно, если вашему приложению нужно разрешить пользователю повышать привилегии, оно устанавливает свой собственный одноцелевой setuid исполняемый файл - одноцелевое, означающее, что оно выполняет необходимую задачу вместо того, чтобы действовать как универсальная пусковая установка.

$ su -
# cp `type -p id` /usr/local/bin/root-id
# chown root:users /usr/local/bin/root-id
# chmod 4750 /usr/local/bin/root-id
$ /usr/local/bin/root-id
... euid=0(root) ...

Исполняемые файлы OTOH setuid также были распространенным источником дыр в безопасности, поэтому будьте осторожны.

1 голос
/ 27 марта 2009

По умолчанию используется только текстовый режим su . В большинстве дистрибутивов также установлено sudo .

Теперь в дистрибутивах на основе KDE у вас будет kdesu , а на основе GNOME - gksu и gksudo . Машины в доменах Kerberized имеют ksu .

Вы можете попытаться использовать /etc/sysconfig/desktop, чтобы увидеть, какой рабочий стол по умолчанию.

...