Как запустить QProcess с рут правами? - PullRequest
3 голосов
/ 11 апреля 2011

Мне нужно запустить gphoto2 из программы Qt.Я делаю это:

QString gphotoProgram = "/usr/bin/gphoto2";
QStringList gphotoArguments;
gphotoArguments << "--capture-image";
QProcess *gphotoProcess = new QProcess(this);
gphotoProcess->start(gphotoProgram, gphotoArguments);

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

Как мне начатьэто QProcess с соответствующими правами, чтобы gphoto2 работал?

Редактировать: Я уточнил, что предпочел бы, чтобы пользователь не вводил пароль, что означает gksudo, kdesudo илилюбое другое графическое решение не подходит для меня.

Ответы [ 4 ]

2 голосов
/ 12 апреля 2011

Я бы настоятельно рекомендовал найти способ, позволяющий запускать gphoto2 с разрешениями авторизованного пользователя. Возможно эта статья содержит полезную информацию.

1 голос
/ 14 мая 2011

Вы также можете использовать PolicyKit для запуска QProcess с правами sudo.

команда pkexec

QString gphotoProgram = "pkexec / usr / bin / gphoto2";

1 голос
/ 11 апреля 2011

Если у вас есть дистрибутив с включенным sudo, попробуйте добавить «gksudo» в командную строку вашего процесса:

QString gphotoProgram = "gksudo /usr/bin/gphoto2"

Если учетная запись пользователя авторизована как sudo-er, она запросит пароль пользователя, чтобы программа могла работать с правами root.

0 голосов
/ 11 апреля 2011

Разве GNOME и KDE все еще не имеют своих собственных графических оболочек sudo? (Я сам из Windows.) Вы можете использовать QProcess для запуска sudo и позволить ему позаботиться о возвышении и последующем запуске gphoto.

...