尝试使用sudo权限从Qt运行Shell脚本

问题描述 投票:0回答:1

命令行(工作正常)

$ sudo chPermissions.sh

尝试使用QProcess在Qt程序中执行此操作,并尝试了以下操作,但均未成功

代码:

QString program = "/bin/sh /usr/bin/chPermissions.sh";
m_process->start(program);
m_process->waitForFinished();
qDebug() << m_process->exitCode();

结果:0(脚本已运行,但没有sudo权限并且无法正常工作!)

代码:

QString program = "sudo /bin/sh /usr/bin/chPermissions.sh";
m_process->start(program);
m_process->waitForFinished();
qDebug() << m_process->exitCode();

结果:1

代码:

QString program = "/usr/bin/sudo /bin/sh /usr/bin/chPermissions.sh";
m_process->start(program);
m_process->waitForFinished();
qDebug() << m_process->exitCode();

结果:1

代码:

QString program = "/bin/sh";
QStringList arguments;
arguments <<  "/usr/bin/chPermissions.sh";
m_process->start(program, arguments);
m_process->waitForFinished();
qDebug() << m_process->exitCode();

结果:0(脚本已运行!没有sudo权限)

代码:

QString program = "/bin/sh";
QStringList arguments;
arguments << sudo <<  "/usr/bin/chPermissions.sh";
m_process->start(program, arguments);
m_process->waitForFinished();
qDebug() << m_process->exitCode();

结果:127(未找到命令)

代码:

QString program = "/bin/sh";
QStringList arguments;
arguments << /usr/bin/sudo <<  "/usr/bin/chPermissions.sh";
m_process->start(program, arguments);
m_process->waitForFinished();
qDebug() << m_process->exitCode();

结果:2(滥用shell内置函数)

代码:

QString program = "/bin/bash";
QStringList arguments;
arguments <<  "-c" << "\"/usr/bin/sudo /usr/bin/chPermissions.sh"\";
m_process->start(program, arguments);
m_process->waitForFinished();
qDebug() << m_process->exitCode();

结果:127

代码:

QString shellCommandLine = "/usr/bin/chPermissions.sh";
QStringList arguments;
arguments << "-c" << shellCommandLine;
m_process->start("/bin/sh", arguments);
m_process->waitForFinished();
qDebug() << "Exit Code: " << m_process->exitCode();

结果:0(脚本已运行!)

代码:

QString shellCommandLine = "sudo /usr/bin/chPermissions.sh";
QStringList arguments;
arguments << "-c" << shellCommandLine;
m_process->start("/bin/sh", arguments);
m_process->waitForFinished();
qDebug() << "Exit Code: " << m_process->exitCode();

结果:1

代码:

QString shellCommandLine = "/usr/bin/sudo /usr/bin/chPermissions.sh";
QStringList arguments;
arguments << "-c" << shellCommandLine;
m_process->start("/bin/sh", arguments);
m_process->waitForFinished();
qDebug() << "Exit Code: " << m_process->exitCode();

结果:1

代码:

QString shellCommandLine = "/usr/bin/chPermissions.sh";
QStringList arguments;
arguments << "-c" << shellCommandLine;
m_process->start("/bin/sh", arguments);
m_process->waitForFinished();
qDebug() << "Exit Code: " << m_process->exitCode();

结果:0(脚本运行时没有sudo权限)

任何人都可以让我知道如何执行此操作的秘密? (或者让我摆脱痛苦,如果可能的话)

TIA

安迪

qt ubuntu sh sudo qprocess
1个回答
0
投票

尚未解决。

我绕过这个]

  1. 使用实际运行脚本的选项之一(无su权限,和
  2. 授予用户以sudoers的权限,以在脚本中运行命令而无需输入密码提示。
  3. 希望如此。

不高兴,但是有效。

© www.soinside.com 2019 - 2024. All rights reserved.