프로그램 실행을 매개변수 목록으로 제한

프로그램 실행을 매개변수 목록으로 제한

insecurecommand저는 Unix 사용자가 파일에 저장된 제어된 인수 목록을 사용해서만 특정 명령을 실행할 수 있기를 원합니다 .

지금까지 내가 찾은 유일한 해결책은 다음과 같습니다.

  1. 이름이 지정된 새 보안 그룹을 생성합니다.cmdxg
  2. 명령 실행을 이 그룹으로 제한합니다.

    chown root:cmdxg /.../insecurecommand
    chmod 750 /.../insecurecommand
    
  3. 다음 명령을 실행하는 setgid 래퍼를 만듭니다.

    ls -al /.../mywrapper
    -rwxr-sr-x 1 root cmdxg /.../mywrapper
    

유일한 문제는 insecurecommand사용자의 실제 gid gid=cmdxd가 아닌 사용자의 실제 gid로 실행된다는 것입니다. 그러나 insecurecommandsetgid 명령을 실행하지 않으려고 합니다.

래퍼 코드에서 seteuid()를 사용하여 실제 gid를 반환하면 프로세스가 권한을 insecurecommand잃었기 때문에 더 이상 실행할 수 없습니다 .cmdxg

특권적인 gid 권한이 필요하지만 실제 gid가 있는 명령을 실행하는 방법입니까?

어쩌면 프로그램 실행을 중단해야 할까요?

-> 권한 있는 유효한 gid를 사용하여 먼저 바이너리 파일 로드 -> 실제 gid 반환 -> 프로그램 실행

그런데 어떻게 해야 합니까?

어떤 아이디어가 있나요?

관련 정보