我最近一直在创建新用户并将他们分配给某些组。我想知道是否有一个命令可以显示分配给某个组的所有用户?我曾尝试使用“groups”命令,但是每当我使用它时,它都会显示“groups: not found”
Mur*_*sen 130
我更喜欢使用getent命令......
由于 getent 使用与系统相同的名称服务,因此 getent 将显示所有信息,包括从 LDAP 等网络信息源获得的信息。
所以对于一个组,你应该使用以下...
getent group name_of_group
Run Code Online (Sandbox Code Playgroud)
其中name_of_group替换为您要查找的组。请注意,这仅返回补充组成员身份,不包括将此组作为主要组的用户。
您可以执行许多其他查找……这passwd是另一个有用的查找,您需要列出主要组。
小智 62
您可以使用 grep:
grep '^group_name_here:' /etc/group
Run Code Online (Sandbox Code Playgroud)
这仅列出补充组成员资格,而不是将此组作为其主要组的用户。它只查找本地组,而不是来自网络服务(如 LDAP)的组。
ZN1*_*N13 17
更容易做 groups [username]
如果您想列出所有本地用户及其本地组,您可以这样做
cat /etc/passwd | awk -F':' '{ print $1}' | xargs -n1 groups
如果你得到“groups: command not found”,很可能你已经编辑了更糟糕的环境路径,重置你的路径 PATH=$(getconf PATH)
小智 11
groupmems -g组名-l
列出命名组中的所有用户。
小智 8
groups命令打印用户的组成员身份。您可以使用lid命令列出组中的用户,例如:
# lid -g <groupname>
Run Code Online (Sandbox Code Playgroud)
我很惊讶没有人提到
id <user>
Run Code Online (Sandbox Code Playgroud)
此命令将给出用户所在组的列表。
奇迹般有效:
cut -d: -f1,4 /etc/passwd | grep $(getent group <groupname> | cut -d: -f3) | cut -d: -f1
Run Code Online (Sandbox Code Playgroud)
小智 6
有些会告诉您安装 libuser(用于“lid”)或members(用于“members”)。但是,基于解决登录组成员身份问题的答案https://unix.stackexchange.com/a/349648/77959,我发现该脚本未涵盖另一个组。所以 - 这是两种方法的最佳组合:
#!/bin/bash
if [ $# -eq 1 ]; then
gid=`getent group "$1"|cut -d: -f3`
list_a=`cut -d: -f1,4 /etc/passwd | grep ":$gid$" | cut -d: -f1`
list_b=`getent group "$1"|cut -d: -f4|sed 's/,/\n/g'`
echo -e "$list_a\n$list_b"|grep -v "^$"|sort|uniq
else
echo "pass me a group to find the members of"
fi
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
225607 次 |
| 最近记录: |