sudoers의 사용자 폐쇄 시간 범위 옵션

sudoers의 사용자 폐쇄 시간 범위 옵션

종료 권한을 얻으려면 사용자에게 sudo 권한을 부여해야 합니다. 그러나 사용자는 3시간이 넘는 종료 요청만 실행할 수 있습니다. 와일드카드를 구현하려고 노력해 왔습니다.

예를 들어:

username ALL=/usr/sbin/shutdown +[[:digit:]] -> Trial for any number 
username ALL=/usr/sbin/shutdown +[180-*] -> Trial for 180 minutes and beyond

다른 경우도 많지만 효과가 없습니다.

답변1

내 첫 번째 아이디어는 스크립트에 sudo 액세스 권한을 부여한 다음 해당 스크립트 내에서 매개 변수 확인을 수행하는 래퍼 스크립트였습니다.

username ALL=/usr/local/sbin/shutdown-wrapper

그런 다음 래퍼를 닫는 방법은 다음과 같습니다.

#!/bin/sh

case $1 in
  *[!0-9]*) echo Invalid; exit 2;;
esac

if [ "$1" -ge 180 ]
then
  /usr/sbin/shutdown +"$1"
else
  echo Invalid
  exit 2
fi

...사용자에게 전화를 걸도록 지시합니다. sudo /usr/local/sbin/shutdown-wrapper N여기서 N은 분입니다.

또 다른 옵션은 다음을 사용하는 것입니다.sudoers 매뉴얼 페이지의 와일드카드 섹션:

username ALL=(ALL:ALL) /usr/sbin/shutdown +18[0-9], \
                       /usr/sbin/shutdown +19[0-9], \
                       /usr/sbin/shutdown +[2-9][0-9][0-9], \
                       /usr/sbin/shutdown +[1-9][0-9][0-9][0-9]*

이는 분 180~189, 190~199, 200~999를 의미하며 첫 번째 숫자는 0이 될 수 없는 최소 4자리 숫자(숫자 또는 기타!)로 시작하는 모든 것을 의미합니다. 예를 들어 잘못된 시간 범위를 허용하면 /usr/sbin/shutdown +9999jeff구문 분석 오류가 발생합니다 shutdown.

시간 사양을 구문 분석할 수 없습니다: +9999jeff

관련 정보