작은 유틸리티 프로그램을 작성하고 있습니다. sudo
필요한 경우 무언가 를 실행 하려고 합니다.
즉, 파일 권한으로 인해 현재 사용자가 특정 파일을 조작 할 수없는 경우 (그리고 sudo
규칙에서 허용하는 경우) 유틸리티가 sudo
파일 소유자로 무언가 를 실행 하고 싶습니다 .
시스템 로그가 실패한 sudo
시도로 인한 소음으로 채워지지 않기를 원하기 때문에이 기능을 미리 확인하고 싶습니다 . 으로 sudo
그 자체가 실패에보고합니다 : "이 사건은보고됩니다."
그래서 프로그래밍 방식으로 확인하고 싶습니다 : ? 를 통해 실행할 수 있습니다 .user <x>
command <y>
sudo
문제 /etc/sudoers
가 있습니다. 해당 매핑이 포함되어 있지만 루트 사용자이며 일반 사용자가 읽을 수 없습니다.
실행할 하위 프로세스를 생성하는 것을 고려하고있었습니다 sudo -l
(현재 사용자가 sudo-run 할 수있는 명령을 출력합니다). 그런 다음 이것의 출력을 구문 분석합니다. 그러나 이것은 약간 깨지기 쉬운 것 같습니다. 출력에는 원하는 정보가 포함되어 있지만 사람이 읽을 수 있도록 설계된 것 같습니다 (프로그램 소비 용이 아님). 출력이 미래에 또는 다른 플랫폼에서 동일한 형식을 따를 것이라는 보장이 있는지 모르겠습니다.
sudo -l
출력의 프로그래밍 방식 파싱이 안전한 것으로 간주됩니까? 그렇지 않은 경우 sudo 명령의 성공 여부를 미리 결정하기위한 더 나은 옵션이 있습니까?
(X / Y에 대한 배경 :이 유틸리티는 제한된 액세스 역할 계정에서 사용하기위한 것입니다. 다른 사용자는 제한된 액세스 계정이 sudo 규칙을 통해 파일에서 작동하도록 효과적으로 선택해야합니다. 다른 사용자 중 어느 것이 관련 sudo 규칙을 가지고 있는지 미리 알 수 없음)