sudoersファイルとパスワードは、選択したグループにのみ適用されます。

sudoersファイルとパスワードは、選択したグループにのみ適用されます。

「本番」グループには、John、Steve、Bobという3人のユーザーがいます。 「販売」グループはSamとJackで構成されています。

さて、Johnにすべてのユーザーのパスワードを変更する権限を与えたいと思います。ただし、「本番」グループにのみ該当するため、ジョンはサムとジャックを変更できません。

私の/ 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として実行できるように設定する必要があります。もちろん、スクリプトパスは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/sudoerssodoers(5)マニュアルページを参照してください。簡単に利用できる例が表示されます。

    USER HOST = /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root

USERとして定義されたユーザーは、ホストのルートを除くすべての人のパスワードを変更できます。ここでは、passwd(1)がコマンドラインで複数のユーザー名を使用しないとします。

関連情報