종료 권한을 얻으려면 사용자에게 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