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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: su и qt  (Прочитано 9608 раз)
insamo
Гость
« : Июнь 01, 2010, 14:54 »

Я новичек в QT  и C++.
Мне надо сделать так чтобы вызывалась програмка su (ну это вобщем не проблема через класс QProcess), а потом вылавливалась сообщение о вводе пароля (вот здесь как раз начинаются проблемы). Т.е. надо вывести диалог с запросом имени пользователя и пароля и передать это как-нибудь консольке. У кого есть идеи на счет этого, подскажите пожалуйста.
Записан
zenden
Гость
« Ответ #1 : Июнь 01, 2010, 15:53 »

А может нада вызвать gksu? или чето в этом роде
Записан
insamo
Гость
« Ответ #2 : Июнь 01, 2010, 17:24 »

А может нада вызвать gksu? или чето в этом роде

Можно, но надо чтобы была программа независимая от других пакетов.
Записан
SimpleSunny
Гость
« Ответ #3 : Июнь 01, 2010, 18:10 »

Смотри в сторону этих методов у QProcess.
read  ( qint64 ) : QByteArray
write  ( const QByteArray & ) : qint64

Диалог ввода пароля сам смастери.
Записан
insamo
Гость
« Ответ #4 : Июнь 02, 2010, 11:22 »

Раха, сейчас попробуем Улыбающийся
Записан
insamo
Гость
« Ответ #5 : Июнь 02, 2010, 12:44 »

Смотри в сторону этих методов у QProcess.
read  ( qint64 ) : QByteArray
write  ( const QByteArray & ) : qint64

Диалог ввода пароля сам смастери.

#include <QtCore/QCoreApplication>
#include <QProcess>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    QProcess su;

    su.startDetached("su");
    su.write("password");
    su.closeWriteChannel();

    a.exec();
}


Попробовал но ничего не выходит, процесс запускается, выводит приглашение ввести пароль, su.write("password"), не принимает.
И почему-то обычный запуск QProccess::start() неработает выдает статус FailedToStart.
Походу где-то собака порылась Смеющийся.
Записан
b-s-a
Гость
« Ответ #6 : Июнь 02, 2010, 20:22 »

su напрямую работает с терминалом. ей обычного пайпа недостаточно - защита от подбора паролей.
Записан
insamo
Гость
« Ответ #7 : Июнь 03, 2010, 09:16 »

su напрямую работает с терминалом. ей обычного пайпа недостаточно - защита от подбора паролей.

Понятно Грустный. А есть другие пути? Мне очень надо. Кроме kdesu и gksu есть другие пакеты работающие с su.
Записан
SimpleSunny
Гость
« Ответ #8 : Июнь 03, 2010, 10:03 »

А что нужно. Чтобы часть программы выполнялась с правами администратора или запустить некоторый скрипт с root правами?
Записан
insamo
Гость
« Ответ #9 : Июнь 03, 2010, 10:04 »

запустить программу от рута, чтобы она от него выполнялась.
Записан
SimpleSunny
Гость
« Ответ #10 : Июнь 03, 2010, 10:31 »

Используйте sudo для этих целей.
Записан
insamo
Гость
« Ответ #11 : Июнь 03, 2010, 11:12 »

Используйте sudo для этих целей.

sudo не подойдет нужен root
Записан
crossly
Гость
« Ответ #12 : Июнь 03, 2010, 11:22 »

а вы хоть понимаете что есть sudo и что есть root??
Записан
insamo
Гость
« Ответ #13 : Июнь 03, 2010, 11:26 »

а вы хоть понимаете что есть sudo и что есть root??

канечно понимаю, sudo это выполнить от муперпользователя, а root - это пользователь которому все позволено. Так вот проблема заключается в том что при запуске через судо не подгружаются много модулей программы, а от рута все работает, и от простого пользователя работает, но не может схранять конфиги в /etc/. Вот такая вот дилема.
Записан
b-s-a
Гость
« Ответ #14 : Июнь 04, 2010, 11:57 »

можно для этого использовать sticky-bit (или как его там). В этом случае, программа будет запускаться от имени того пользователя, который является ее владельцем (т.е. если владелец root:users, то при запуске будет сосздан процесс с правами рута - так работает su, sudo и аналоги).
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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