"프로덕션" 그룹에는 John, Steve, Bob이라는 3명의 사용자가 있습니다. "판매" 그룹은 Sam과 Jack으로 구성됩니다.
이제 John에게 모든 사용자의 비밀번호를 변경할 수 있는 권한을 부여하고 싶습니다. 단, "프로덕션" 그룹에 대해서만 해당하므로 John은 Sam과 Jack을 변경할 수 없습니다.
내 /etc/sudoers 파일에는 "프로덕션" 그룹의 모든 사용자에 대한 별칭이 있습니다.
User_Alias PRODUCTION = %production
문제는 내가 이것을 어떻게 쓰는지 모른다는 것이다:
john ALL =(root) /usr/bin/passwd steve, (root) /usr/bin/passwd bob, (root) /usr/bin/passwd jack
...내 PRODUCTION 별칭을 사용하므로 새 구성원이 그룹에 추가되면 해당 구성원을 sudoers 파일에 수동으로 추가할 필요가 없습니다.
나는 비슷한 접근 방식을 많이 시도했습니다.
john ALL =(root) /usr/bin/passwd PRODUCTION
하지만 작동하지 않으며 현재로서는 더 이상 아이디어가 없습니다.
어떤 단서도 주시면 감사하겠습니다. 정말 감사합니다!
답변1
에는 너무 복잡합니다 sudoers
.
사용자가 그룹에 속해 있는지 확인하고 passwd
그렇다면 호출하는 스크립트를 작성해야 합니다.
sudoers
john
그런 다음 이 스크립트를 루트로 실행할 수 있도록 구성해야 합니다 . 물론 스크립트 경로는 root
.
#! /bin/bash
group="groupname"
test $# -ne 1 && exit 2
user="$1"
if id "$user" | grep -qF "(${group})"; then
echo passwd "$user"
else
echo "User '${user}' is not in group '${group}'."
fi
~라고 불리는
./testscript username
답변2
이 쿼리가 2년 전이라는 것을 알고 있지만 스크립팅과 관련되지 않은 답변을 찾았습니다.
visudo
이 파일 을 /etc/sudoers
. sodoers(5)
매뉴얼 페이지를 참조하십시오 . 쉽게 활용할 수 있는 예가 표시됩니다.
USER HOST = /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root
USER로 정의된 사용자는 호스트의 루트를 제외한 모든 사람의 비밀번호를 변경할 수 있습니다. 여기서는 passwd(1)가 명령줄에서 여러 사용자 이름을 사용하지 않는다고 가정합니다.