그룹 구성원이 sudoer가 허용하는 작업만 실행하도록 강제할 수 있나요?

그룹 구성원이 sudoer가 허용하는 작업만 실행하도록 강제할 수 있나요?

sudoers 라인은

%game_servers   ALL=      NOPASSWD:/usr/bin/renice

그룹 구성원은 비밀번호 없이 모든 사용자가 모든 프로세스를 실행할 수 있도록 허용 하지만 음수 값을 사용하여 그룹 구성원의 자체 프로세스만 허용 renice하고 싶습니다 .renice

man sudoers변경하려고 생각한 곳 에서 ALL=(root:root)답을 찾을 수 없습니다 ALL=. 나쁜 생각이었습니다.

ALL=()문법 오류입니다.

답변1

renice그룹 구성원이 자신의 프로세스 만 실행할 수 있기를 원합니다 . 이는 항목이 없는 기본 동작입니다 sudoers. 기본적으로 renice자신의 프로세스 범위 내에서 좋은 값을 설정할 수 있습니다 0 - 19.

sudo액세스 권한이 있으면 범위 와 자신의 것이 아닌 프로세스를 renice확장할 수 있습니다 .-20 to 19renice

를 실행할 때 man renice원하는 작업을 수행할 수 있는 옵션이 표시되지 않습니다. 사용자가 명령 sudo에 액세스할 수 있는 경우 모든 프로세스를 실행할 수 있는 옵션을 renice추가할 수 있습니다 .renice

귀하의 해결책은 파일 renice의 항목을 삭제하는 것입니다 sudoers. 그러면 사용자는 renice자신의 프로세스만 사용할 수 있습니다. 그들은 좋은 값을 사이의 값으로 설정하는 능력을 잃게 되지만 -20 and -1, 이것이 여기서 요구되는 절충안입니다.

답변2

다음과 같은 래퍼를 사용하세요 renice.

#!/bin/sh
priority="$1"
pid="$2"

owner=`ps -h -o uid $pid`
if [ $owner != ${SUDO_UID} ]; then
    echo "Only your own processes can be reniced" >&2
    exit 1
fi
renice $priority $pid

이 예는 취약하며 소유권 확인과 우선순위 변경 사이의 지연으로 인해 경쟁 조건이 발생하기 쉽습니다.

관련 정보