Sudo

sudoers 文件和密碼僅適用於選定組

  • June 19, 2017

我在“生產”組中有 3 個使用者:John、Steve 和 Bob。在“銷售”組中有:Sam 和 Jack。

現在,我想允許 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    

但它不起作用,此時我沒有更多的想法。

我將不勝感激任何線索,非常感謝!

這對於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 年的歷史,但我確實找到了一個不涉及腳本的答案。

您應該使用visudo來更新/etc/sudoers文件。請參見sodoers(5)手冊頁。你應該看到一個你應該能夠很容易地利用的例子:

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

定義為 USER 的使用者可以更改任何人的密碼,除了主機上的 root 使用者。請注意,這假設 passwd(1) 不會在命令行上使用多個使用者名。

引用自:https://unix.stackexchange.com/questions/170774