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

그렇다면 프로그램은 이미 루트 권한으로 실행 중이므로 더 이상 루트로 sudo실행할 필요가 없습니다 lsblk. 또는 QT 프로그램을 정상적으로 시작하고 root 로 계속 sudo실행하세요 lsblk. 둘 다 필요하지 않습니다.

사실 어쨌든 sudo실행할 필요는 없습니다 lsblk. 제공되는 정보는 권한이 없는 사용자가 이미 사용할 수 있습니다.

오류의 원인은 비밀번호를 sudo요구하는 구성 root(비정상적)이거나 비밀번호를 읽으려는 TTY 누락으로 인해 하드 오류가 발생한 것일 수 있습니다. 전체 sudoers구성을 보지 않고서는 확실한 결정이 불가능할 것 같습니다.

관련 정보