• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

linux 列出用户所属的所有群组的5种方法

Linux 开心洋葱 2480次浏览 0个评论

列出用户所属的所有群组的5种方法

在研究5种方法之前,让我们首先了解一些基本知识:

将用户添加到现有组是Linux管理员的典型任务之一。

群组是用户的集合。群组的主要目的是为群组中的成员定义一组特权。

如果要为一组没有组的多个用户分配一组特权,这可能是一项艰巨的任务。这是该小组派上用场的地方。

/ etc / passwd文件中列出了所有系统用户,/ etc / group文件中列出了组,而实际密码存储在/ etc / shadow文件中。

无论我们使用什么命令,它都会从这些文件中获取信息。

Linux中有两种类型的组:

初级组
中学组
什么是小学组?
主要组是与用户帐户关联的主要组。每个用户必须是单个主要组的成员。

什么是中学组?
次要或补充组用于向用户授予其他权限。每个用户都可以成为多个辅助组的成员。

什么是/ etc / passwd文件
“ / etc / passwd”是一个文本文件,其中包含登录Linux系统所需的每个用户信息。它维护有关用户的有用信息,例如用户名,密码,用户ID,组ID,用户信息,主目录和Shell。

密码文件中的每个用户配置文件都是一行,其中包含七个字段,如下所示:

$ grep "daygeek" /etc/passwd

daygeek:x:1000:1000:daygeek,,,:/home/daygeek:/bin/bash

什么是/ etc / group文件
“ / etc / group”是一个文本文件,用于定义用户所属的组。我们可以在同一组中添加多个用户。

Linux具有三个权限级别,这些权限级别定义了用户如何访问它。这些级别是 user,group和others,它们控制一个用户对其他用户的文件和文件夹的访问。

/ etc / group文件维护有关组的有用信息,例如组名,组密码,组ID(GIT)和成员资格列表。每个组的详细信息在一行中显示为四个字段,如下面列出的“方法5”所示。

以下七个命令将帮助您找出Linux中用户所属的组。

groups:显示组中的所有成员。
id:打印指定用户名的用户和组信息。
lid or libuser-lid:它显示用户的组或组的用户。
getent:从名称服务交换库中获取条目。
compgen:compgen是bash内置命令,它将为用户显示所有可用命令。
members:列出组的成员。
/etc/group file 同样,我们可以从/ etc / group文件中grep相应的用户组。
现在,让我们深入研究5种方法,这些方法可用于查找用户在Linux中所属的组的列表:

方法1:使用组命令
Linux管理员广泛使用’groups’命令列出用户所属的所有组。它将打印给定用户的主要和补充组的信息,如下所示:

$ groups daygeek

daygeek : daygeek adm cdrom sudo dip plugdev lpadmin sambashare

运行不带任何参数的“ groups”命令以显示与当前用户关联的组列表,如下所示:

$ groups

daygeek adm cdrom sudo dip plugdev lpadmin sambashare

方法2:使用id命令
id命令代表身份。它打印出真实有效的用户,组和补充组信息,例如用户名,UID,组名和GUID,如下所示:

$ id daygeek

uid=1000(daygeek) gid=1000(daygeek) groups=1000(daygeek),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),118(lpadmin),128(sambashare)

只需运行“ id”命令以查看有关当前用户的组信息,如下所示:

$ id

uid=1000(daygeek) gid=1000(daygeek) groups=1000(daygeek),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),118(lpadmin),128(sambashare)

方法3:使用lid命令
lid或libuser-lid命令显示有关包含用户名的组的信息,这需要sudo特权。

$ sudo libuser-lid daygeek

 adm(gid=4)
 cdrom(gid=24)
 sudo(gid=27)
 dip(gid=30)
 plugdev(gid=46)
 lpadmin(gid=116)
 daygeek(gid=1000)
 sambashare(gid=126)

您应该在较新的系统上运行libuser-lid命令而不是lid。
方法4:使用getent命令
getent命令显示名称服务交换机库支持的数据库中的条目,这些数据库在“ /etc/nsswitch.conf”中配置:

$ getent group | grep daygeek

adm:x:4:syslog,daygeek
cdrom:x:24:daygeek
sudo:x:27:daygeek,2gadmin
dip:x:30:daygeek
plugdev:x:46:daygeek
lpadmin:x:116:daygeek
daygeek:x:1000:
sambashare:x:126:daygeek

上面的命令显示了组名以及与该组关联的所有其他成员。使用以下自定义的命令格式可以仅打印给定用户的组:

$ getent group | grep daygeek | awk -F: '{print $1}'

adm
cdrom
sudo
dip
plugdev
lpadmin
daygeek
sambashare

运行以下命令,仅打印用户的主要组信息:

$ getent group daygeek

daygeek:x:1000:

方法5:使用“ / etc / group”文件
可以使用grep命令从“ / etc / group”文件中过滤用户组信息,如下所示:

$ grep daygeek /etc/group

adm:x:4:syslog,daygeek
cdrom:x:24:daygeek
sudo:x:27:daygeek,2gadmin
dip:x:30:daygeek
plugdev:x:46:daygeek
lpadmin:x:116:daygeek
daygeek:x:1000:
sambashare:x:126:daygeek

使用以下自定义的命令格式可以仅打印给定用户的组:

$ grep daygeek /etc/group | awk -F: '{print $1}'

adm
cdrom
sudo
dip
plugdev
lpadmin
daygeek
sambashare

提示1:使用compgen命令找出所有组
Compgen是bash内置命令,显示Linux系统中的所有组:

$ compgen -g

root
daemon
bin
sys
adm
.
.
daygeek
thanu
renu
sudha
admin
u1
u2

提示2:使用member命令列出组中的成员
该成员的命令可以让你在Linux中的一组列表成员:

$ members sudo

daygeek 2gadmin


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明linux 列出用户所属的所有群组的5种方法
喜欢 (1)

您必须 登录 才能发表评论!

加载中……