出力を実行して印刷するC ++ qtプログラム(test_program
参照しやすいように呼び出す)があります。sudo lsblk
popen
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
問題なく実行されました。
答え1
私が知る限り、
sudo lsblk
QTプログラムから電話しました。- 次のようにQTプログラムを起動します。
sudo qt_program
そうであれば、プログラムはすでにroot権限で実行されているため、もうrootとしてsudo
実行する必要はありませんlsblk
。または、QTプログラムを正常に起動し、rootとしてsudo
実行し続けますlsblk
。どちらも必要ありません。
実際にはとにかくsudo
実行する必要はありませんlsblk
。提供される情報は、権限のないユーザーがすでに使用できます。
エラーの原因は、パスワードをsudo
要求する構成root
(異常) であるか、パスワードを読み取ろうとする TTY の欠落によってハードエラーが発生した可能性があります。全体sudoers
の構成を見なければ、確かな決定ができないようです。