「本番」グループには、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
その場合は呼び出すスクリプトを作成する必要があります。
sudoers
john
その後、このスクリプトを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/sudoers
。sodoers(5)
マニュアルページを参照してください。簡単に利用できる例が表示されます。
USER HOST = /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root
USERとして定義されたユーザーは、ホストのルートを除くすべての人のパスワードを変更できます。ここでは、passwd(1)がコマンドラインで複数のユーザー名を使用しないとします。