출력을 실행 하고 인쇄하는 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
그렇다면 프로그램은 이미 루트 권한으로 실행 중이므로 더 이상 루트로 sudo
실행할 필요가 없습니다 lsblk
. 또는 QT 프로그램을 정상적으로 시작하고 root 로 계속 sudo
실행하세요 lsblk
. 둘 다 필요하지 않습니다.
사실 어쨌든 sudo
실행할 필요는 없습니다 lsblk
. 제공되는 정보는 권한이 없는 사용자가 이미 사용할 수 있습니다.
오류의 원인은 비밀번호를 sudo
요구하는 구성 root
(비정상적)이거나 비밀번호를 읽으려는 TTY 누락으로 인해 하드 오류가 발생한 것일 수 있습니다. 전체 sudoers
구성을 보지 않고서는 확실한 결정이 불가능할 것 같습니다.