insecurecommand
저는 Unix 사용자가 파일에 저장된 제어된 인수 목록을 사용해서만 특정 명령을 실행할 수 있기를 원합니다 .
지금까지 내가 찾은 유일한 해결책은 다음과 같습니다.
- 이름이 지정된 새 보안 그룹을 생성합니다.
cmdxg
명령 실행을 이 그룹으로 제한합니다.
chown root:cmdxg /.../insecurecommand chmod 750 /.../insecurecommand
다음 명령을 실행하는 setgid 래퍼를 만듭니다.
ls -al /.../mywrapper -rwxr-sr-x 1 root cmdxg /.../mywrapper
유일한 문제는 insecurecommand
사용자의 실제 gid gid=cmdxd
가 아닌 사용자의 실제 gid로 실행된다는 것입니다. 그러나 insecurecommand
setgid 명령을 실행하지 않으려고 합니다.
래퍼 코드에서 seteuid()를 사용하여 실제 gid를 반환하면 프로세스가 권한을 insecurecommand
잃었기 때문에 더 이상 실행할 수 없습니다 .cmdxg
특권적인 gid 권한이 필요하지만 실제 gid가 있는 명령을 실행하는 방법입니까?
어쩌면 프로그램 실행을 중단해야 할까요?
-> 권한 있는 유효한 gid를 사용하여 먼저 바이너리 파일 로드 -> 실제 gid 반환 -> 프로그램 실행
그런데 어떻게 해야 합니까?
어떤 아이디어가 있나요?