我们将以下用户添加到组white_house
库库、特朗普、卡特
usermod -a -G white_house kuku
usermod -a -G white_house trump
usermod -a -G white_house karter
众所周知,我们可以验证用户是否已添加到组中
grep white_house /etc/group
但是否可以通过某种命令行或更优雅的方式来验证它?
答案1
你可以使用 getent
getent group white_house
或者如果您想检查特定的用户组,您可以使用groups
groups karter
答案2
以下 shell 函数接受两个参数:
- 用户名
- 一个组名
它使用 询问有关该组的信息getent group
,然后将该结果传递给 awk。 awk 获取用户列表(字段 4,用冒号分隔),并进一步将其拆分为“用户”数组,用逗号分隔。然后,它在单独的行上打印该数组的每个元素(用户名),然后grep
检查给定的用户名。如果找到用户,grep(以及整个函数)返回 0/success;否则,返回 1/失败。 grep 标志的含义是:
-F
-- 将搜索文本视为固定字符串,而不是正则表达式-x
-- 要求整行与搜索文本匹配(避免误报匹配,例如“john”和“johnson”-q
-- 不向屏幕打印任何内容,但适当设置返回码
function useringroup {
getent group "$2" |
awk -F: '{split($4, users, ","); for (name in users) print users[name]}' |
grep -Fxq "$1"
}
像这样使用它:
useringroup myuser mygroup && echo myuser is in mygroup || echo myuser is not in mygroup
答案3
你可以运行id -Gn user_name
:
- -G显示该用户名的所有组;
- -n显示名称而不是 GID。
如果您需要检查该语句是否为真,那么以下(更复杂的)构造应该会有所帮助id -Gn user_name | grep group_name && echo "We are good" || echo "user_name is not the member of group_name
。