Название: запуск приложения под linux, с привилегиями root
Отправлено: Cepheus от Январь 23, 2012, 07:33
нужно запускать приложение от root пользователя
можно в консоли типо su ./app, но хотелось бы, это реализовать программно, т.е. при открытии бинарника запрашивать в диалоговом окне у пользователя, пароль root, подскажите куда копать?
Название: Re: запуск приложения под linux, с привилегиями root
Отправлено: Fat-Zer от Январь 23, 2012, 08:02
обычно это делается средствами DE. с помощью gksu и kdesu. нужно только правильно составить ярлык(файл *.desktop). можно сделать свою обёртку над su, как идёт с драйверами radeon, но тут нужно всё делать очень осторожно, чтоб не скомпрометироваться. Самое лучшие - перебирать классические обёртки и если ничего не найдено, то запускать xterm с su. где-то видел скрипт на эту тему, но уже не помню, где... [added] нашёл скрипт, идёт в комплекте с zenmap Bash #!/bin/bash #this code is bassed off of the debian su-to-root command #Joost Witteveen <joostje@debian.org> #Morten Brix Pedersen #Bill Allombert <ballombe@debian.org> PRIV=root COMMAND="zenmap $@" euid=$(id -u) privid=$(id -u $PRIV) if test "$euid" = "$privid"; then $COMMAND else if test -z "$SU_TO_ROOT_X"; then if which gksu >/dev/null 2>&1 ; then SU_TO_ROOT_X=gksu if test "X$KDE_FULL_SESSION" = "Xtrue" ; then if which kdesu >/dev/null 2>&1 ; then SU_TO_ROOT_X=kdesu elif test -x /usr/lib/kde4/libexec/kdesu ; then SU_TO_ROOT_X=kde4su fi; fi; elif which kdesu >/dev/null 2>&1 ; then SU_TO_ROOT_X=kdesu elif test -x /usr/lib/kde4/libexec/kdesu ; then SU_TO_ROOT_X=kde4su elif which ktsuss >/dev/null 2>&1 ; then SU_TO_ROOT_X=ktsuss elif which xterm>/dev/null 2>&1 ;then if which sudo>/dev/null 2>&1 ;then SU_TO_ROOT_X=sdterm else SU_TO_ROOT_X=sterm fi; else SU_TO_ROOT_X=su-to-root fi fi case $SU_TO_ROOT_X in gksu) gksu -u "$PRIV" "$COMMAND";; kdesu) kdesu -u "$PRIV" $COMMAND;; kde4su) /usr/lib/kde4/libexec/kdesu -u "$PRIV" $COMMAND;; ktsuss) ktsuss -u "$PRIV" "$COMMAND";; # As a last resort, open a new xterm use sudo/su sdterm) xterm -e "sudo -u $PRIV $COMMAND";; sterm) xterm -e "su -l $PRIV -c $COMMAND";; esac; fi
|