sudoを使用してプログラムでコマンドを実行する

sudoを使用してプログラムでコマンドを実行する

出力を実行して印刷するC ++ qtプログラム(test_program参照しやすいように呼び出す)があります。sudo lsblkpopen

Qtアプリケーション内で実行するとtest_program(Qtアプリケーション自体はを使用して開始されますsudo)、印刷された出力を表示できます。

しかし、test_program印刷出力などのqtアプリケーションを使用して生成されたバイナリでsudo test_program実行すると、sudo lsblk

sudo: account validation failure, is your account locked?\nsudo: a password is required

sudoers現在のユーザーをファイルに追加してみました。これも役に立ちません。

user ALL=(ALL) NOPASSWD:/usr/bin/lsblk,/home/user/test_program

起動されたプログラムは、sudoすべてのコマンドを実行できる必要があります。そうですかsudo? sudoで始まったC ++プログラムでこれをテストしましたが、sudo lsblk問題なく実行されました。

私のsudoersファイルは次のとおりです。 ここに画像の説明を入力してください。

答え1

私が知る限り、

  1. sudo lsblkQTプログラムから電話しました。
  2. 次のようにQTプログラムを起動します。sudo qt_program

そうであれば、プログラムはすでにroot権限で実行されているため、もうrootとしてsudo実行する必要はありませんlsblk。または、QTプログラムを正常に起動し、rootとしてsudo実行し続けますlsblk。どちらも必要ありません。

実際にはとにかくsudo実行する必要はありませんlsblk。提供される情報は、権限のないユーザーがすでに使用できます。

エラーの原因は、パスワードをsudo要求する構成root(異常) であるか、パスワードを読み取ろうとする TTY の欠落によってハードエラーが発生した可能性があります。全体sudoersの構成を見なければ、確かな決定ができ​​ないようです。

関連情報