Russian Qt Forum
Ноябрь 22, 2024, 22:47 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: запуск приложения под linux, с привилегиями root  (Прочитано 3821 раз)
Cepheus
Гость
« : Январь 23, 2012, 07:33 »

нужно запускать приложение от root пользователя

можно в консоли типо su ./app, но хотелось бы, это реализовать программно, т.е. при открытии бинарника запрашивать в диалоговом окне у пользователя, пароль root, подскажите куда копать?
Записан
Fat-Zer
Гость
« Ответ #1 : Январь 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
 
« Последнее редактирование: Январь 23, 2012, 08:04 от Fat-Zer » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.067 секунд. Запросов: 20.