sudoers 파일 및 비밀번호는 선택한 그룹에만 적용됩니다.

sudoers 파일 및 비밀번호는 선택한 그룹에만 적용됩니다.

"프로덕션" 그룹에는 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그렇다면 호출하는 스크립트를 작성해야 합니다.

sudoersjohn그런 다음 이 스크립트를 루트로 실행할 수 있도록 구성해야 합니다 . 물론 스크립트 경로는 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)가 명령줄에서 여러 사용자 이름을 사용하지 않는다고 가정합니다.

관련 정보