Название: 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)Название: 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 |