Russian Qt Forum

Qt => Qt-инструментарий => Тема начата: insamo от Июнь 01, 2010, 14:54



Название: su и qt
Отправлено: insamo от Июнь 01, 2010, 14:54
Я новичек в QT  и C++.
Мне надо сделать так чтобы вызывалась програмка su (ну это вобщем не проблема через класс QProcess), а потом вылавливалась сообщение о вводе пароля (вот здесь как раз начинаются проблемы). Т.е. надо вывести диалог с запросом имени пользователя и пароля и передать это как-нибудь консольке. У кого есть идеи на счет этого, подскажите пожалуйста.


Название: Re: su и qt
Отправлено: zenden от Июнь 01, 2010, 15:53
А может нада вызвать gksu? или чето в этом роде


Название: Re: su и qt
Отправлено: insamo от Июнь 01, 2010, 17:24
А может нада вызвать gksu? или чето в этом роде

Можно, но надо чтобы была программа независимая от других пакетов.


Название: Re: su и qt
Отправлено: SimpleSunny от Июнь 01, 2010, 18:10
Смотри в сторону этих методов у QProcess.
read  ( qint64 ) : QByteArray
write  ( const QByteArray & ) : qint64

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


Название: Re: su и qt
Отправлено: insamo от Июнь 02, 2010, 11:22
Раха, сейчас попробуем :)


Название: Re: su и qt
Отправлено: insamo от Июнь 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.
Походу где-то собака порылась ;D.


Название: Re: su и qt
Отправлено: b-s-a от Июнь 02, 2010, 20:22
su напрямую работает с терминалом. ей обычного пайпа недостаточно - защита от подбора паролей.


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

Понятно :(. А есть другие пути? Мне очень надо. Кроме kdesu и gksu есть другие пакеты работающие с su.


Название: Re: su и qt
Отправлено: SimpleSunny от Июнь 03, 2010, 10:03
А что нужно. Чтобы часть программы выполнялась с правами администратора или запустить некоторый скрипт с root правами?


Название: Re: su и qt
Отправлено: insamo от Июнь 03, 2010, 10:04
запустить программу от рута, чтобы она от него выполнялась.


Название: Re: su и qt
Отправлено: SimpleSunny от Июнь 03, 2010, 10:31
Используйте sudo для этих целей.


Название: Re: su и qt
Отправлено: insamo от Июнь 03, 2010, 11:12
Используйте sudo для этих целей.

sudo не подойдет нужен root


Название: Re: su и qt
Отправлено: crossly от Июнь 03, 2010, 11:22
а вы хоть понимаете что есть sudo и что есть root??


Название: Re: su и qt
Отправлено: insamo от Июнь 03, 2010, 11:26
а вы хоть понимаете что есть sudo и что есть root??

канечно понимаю, sudo это выполнить от муперпользователя, а root - это пользователь которому все позволено. Так вот проблема заключается в том что при запуске через судо не подгружаются много модулей программы, а от рута все работает, и от простого пользователя работает, но не может схранять конфиги в /etc/. Вот такая вот дилема.


Название: Re: su и qt
Отправлено: b-s-a от Июнь 04, 2010, 11:57
можно для этого использовать sticky-bit (или как его там). В этом случае, программа будет запускаться от имени того пользователя, который является ее владельцем (т.е. если владелец root:users, то при запуске будет сосздан процесс с правами рута - так работает su, sudo и аналоги).


Название: Re: su и qt
Отправлено: insamo от Июнь 04, 2010, 12:01
можно для этого использовать sticky-bit (или как его там). В этом случае, программа будет запускаться от имени того пользователя, который является ее владельцем (т.е. если владелец root:users, то при запуске будет сосздан процесс с правами рута - так работает su, sudo и аналоги).

Ты имеешь ввиду, если прога стоит с правами на запуск для всех и принадлежит руту, то процесс запускается от рута? А ты сам пробовал?


Название: Re: su и qt
Отправлено: crossly от Июнь 04, 2010, 13:49
можно для этого использовать sticky-bit (или как его там). В этом случае, программа будет запускаться от имени того пользователя, который является ее владельцем (т.е. если владелец root:users, то при запуске будет сосздан процесс с правами рута - так работает su, sudo и аналоги).
я бы не стал с этим играться ... так как это потенциальная дыра в безопасности.... я бы лучше посоветовал посмотреть на реализацию в DE (например kdesu)


Название: Re: su и qt
Отправлено: insamo от Июнь 04, 2010, 13:55
можно для этого использовать sticky-bit (или как его там). В этом случае, программа будет запускаться от имени того пользователя, который является ее владельцем (т.е. если владелец root:users, то при запуске будет сосздан процесс с правами рута - так работает su, sudo и аналоги).
я бы не стал с этим играться ... так как это потенциальная дыра в безопасности.... я бы лучше посоветовал посмотреть на реализацию в DE (например kdesu)
Спасибо что подтвердил мое предположение что копать надо именно там, я как раз пытаюсь выудить из исходников gksu функцию gtk_password_ask. Теперь я буду глубже копать. Кстати кто может однозначно отчетить, что такое GTK - это что-то вроде фреймворка?


Название: Re: su и qt
Отправлено: crossly от Июнь 04, 2010, 14:05
библиотека классов для создания интефейса... вроде Qt.... в частности на ней построен Gnome


Название: Re: su и qt
Отправлено: b-s-a от Июнь 05, 2010, 09:13
Ты имеешь ввиду, если прога стоит с правами на запуск для всех и принадлежит руту, то процесс запускается от рута? А ты сам пробовал?
Что значит сам пробовал? Это стандартный метод повышения привелегий. Других просто нет:
Код:
-rwsr-xr-x 2 root   root      148024 2010-04-13 21:37 sudo
-rwsr-xr-x 2 root   root      148024 2010-04-13 21:37 sudoedit
-rwsr-xr-x 1 root   root       36864 2010-01-26 20:09 su