Grep 用于具有多个用户的组

Grep 用于具有多个用户的组

我们正准备从旧式域迁移到基于 Active Directory 的 Samba。目前我们所有的组都是扁平的——用户属于组,但组不能属于其他组。因为我想改变这一点,所以我需要列出所有包含用户的组。

问题是有数千个用户和数千个组。我需要的是列出具有 2 个或更多成员的组,然后仅在命令行上显示组名称。这应该消除用户组或只有一个用户的组。

我怎样才能在 Debian 中做到这一点?

答案1

一般来说,

getent group | awk -F ':' '$4 ~ "," {print $1}'

如果组列表的第四个冒号分隔字段(用户列表)包含逗号,则打印第一个冒号分隔字段(组名称)。

答案2

可能不是最好的方法,但这可能有效:

awk -F: '$NF ~ "," { print $1 }' /etc/group

答案3

由于组成员是用逗号分隔的,因此只有多成员组才会有逗号。在这些组文件行中,仅显示第一个冒号之前的行内容。

grep , /etc/group | cut -d: -f 1

相关内容