Linux下查明用户属于哪个组的5种方法

译文
系统 Linux
将用户添加到现有组是Linux管理员的典型任务之一。对于面对较庞大环境的一些管理员来说,这是日常活动。由于我面临的环境庞大,由于工作需要,我每天都会在自己的环境中这么做。

[[283602]]

【51CTO.com快译】将用户添加到现有组是Linux管理员的典型任务之一。对于面对较庞大环境的一些管理员来说,这是日常活动。由于我面临的环境庞大,由于工作需要,我每天都会在自己的环境中这么做。

这个重要的命令可以帮助你识别Linux系统上的现有组。

这些命令可帮助你识别用户属于哪些组。

/etc/passwd文件中列出了所有系统用户,/etc/group文件中列出了组,实际的密码存储在/etc/shadow文件中。无论我们使用什么命令,它都会从这些文件获取信息。

而且,每个命令有其独特的功能,使用户仅能获得他们所需的信息。

Linux中有两种类型的组:

  • 主要组:主要组是与用户帐户关联的主要组。每个用户势必是单个主要组的成员。
  • 次要组:次要组用于向用户授予额外权限。每个用户可以成为多个次要组的成员。

什么是/etc/passwd文件?

“/etc/passwd”是个文本文件,包含登录到Linux系统所需的每个用户信息。它维护有关用户的有用信息,比如用户名、密码、用户ID、组ID、用户信息、主目录和shell。

如上所述,密码文件中的每个用户配置文件都是一行,含有七个字段。 

  1. $ grep "daygeek" /etc/passwd  
  2. daygeek:x:1000:1000:daygeek,,,:/home/daygeek:/bin/bash 

什么是/etc/grou文件?

“/etc/group”是个文本文件,定义了用户属于哪些组。我们可以将多个用户添加到同一个组。

Linux权限组织成用户、组及其他三类,这使用户可以访问其他用户的文件和文件夹。

它维护有关组的有用信息,比如组名称、组密码、组ID(GIT)和成员列表。如上所述,组文件中的每个组详细信息都是一行,含有四个字段。

你可以使用以下七个命令来执行此操作。

groups:显示组的所有成员。

id:打印出指定用户名的用户和组信息。

lid或libuser-lid:显示用户的组或组的用户。

getent:从Name Service Switc获取条目。

compgen:compgen是bash内置命令,会为用户显示所有的可用命令。

members:列出组的成员。

/etc/group file:另外,我们可以从/etc/group文件查看相应用户的组。

方法1:如何使用groups命令找出Linux中用户属于哪些组?

groups命令打印出特定用户名的主要组及子组的名称。 

  1. $ groups daygeek  
  2. daygeek : daygeek adm cdrom sudo dip plugdev lpadmin sambashare 

如果你想检查与当前用户关联的组列,只需运行不带任何用户名的“groups”命令。 

  1. $ groups  
  2. daygeek adm cdrom sudo dip plugdev lpadmin sambashare 

方法2:如何使用id命令找出Linux中用户属于哪些组?

id命令代表身份。它打印真实有效的用户、组和补充性的组信息,比如用户名、UID、组名称和GUID。 

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

如果你想检查与当前用户关联的组列表,只需运行不带任何用户名的“id”命令。 

  1. $ id  
  2. 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命令找出Linux中用户属于哪些组?

lid或libuser-lid命令显示了有关组的信息,包含用户名或组名称中所含的用户。该命令需要sudo权限。

你应该在较新的系统上运行libuser-lid命令而不是lid命令。 

  1. $ sudo libuser-lid daygeek  
  2. adm(gid=4)  
  3. cdrom(gid=24)  
  4. sudo(gid=27)  
  5. dip(gid=30)  
  6. plugdev(gid=46)  
  7. lpadmin(gid=116)  
  8. daygeek(gid=1000)  
  9. sambashare(gid=126) 

方法4:如何使用getent命令找出Linux中用户属于哪些组?

getent命令显示了Name Service Switch库支持的数据库的条目,这在/etc/nsswitch.conf中已有配置。 

  1. $ getent group | grep daygeek  
  2. adm:x:4:syslog,daygeek  
  3. cdrom:x:24:daygeek  
  4. sudo:x:27:daygeek,2gadmin  
  5. dip:x:30:daygeek  
  6. plugdev:x:46:daygeek  
  7. lpadmin:x:116:daygeek  
  8. daygeek:x:1000:  
  9. sambashare:x:126:daygeek 

如果你只想打印出特定用户的相关组的名称,请使用awk命令以及上述命令。 

  1. $ getent group | grep daygeek | awk -F: '{print $1}'  
  2. adm  
  3. cdrom  
  4. sudo  
  5. dip  
  6. plugdev  
  7. lpadmin  
  8. daygeek  
  9. sambashare 

运行以下命令,只打印出主要组的信息。 

  1. $ getent group daygeek  
  2. daygeek:x:1000: 

方法5:如何使用/etc/group文件找出Linux下用户属于哪些组?

使用grep命令,你可以从/etc/group文件轻松打印出有关某个用户的相关组的信息。

grep命令是指“全局正则表达式打印”,它从文件打印出匹配格式。 

  1. $ grep daygeek /etc/group  
  2. adm:x:4:syslog,daygeek  
  3. cdrom:x:24:daygeek  
  4. sudo:x:27:daygeek,2gadmin  
  5. dip:x:30:daygeek  
  6. plugdev:x:46:daygeek  
  7. lpadmin:x:116:daygeek  
  8. daygeek:x:1000:  
  9. sambashare:x:126:daygeek 

如果你只想打印出某个用户的相关组的名称,请使用awk命令以及上述命令。 

  1. $ grep daygeek /etc/group | awk -F: '{print $1}'  
  2. adm  
  3. cdrom  
  4. sudo  
  5. dip  
  6. plugdev  
  7. lpadmin  
  8. daygeek  
  9. sambashare 

方法6:如何使用Bash脚本找出Linux下用户属于哪些组?

你可以使用简单的bash脚本来做到这一点。 

  1. for user in $(cut -d":" -f1 /etc/passwd); do groups $user; done  
  2. root : root  
  3. daemon : daemon  
  4. www-data : www-data nagcmd  
  5. saned : saned scanner  
  6. pulse : pulse audio  
  7. avahi : avahi  
  8. colord : colord  
  9. hplip : lp  
  10. geoclue : geoclue  
  11. gnome-initial-setup : nogroup  
  12. gdm : gdm  
  13. daygeek : daygeek adm cdrom sudo dip plugdev lpadmin sambashare  
  14. sshd : nogroup  
  15. thanu : thanu  
  16. renu : renu  
  17. 2gadmin : 2gadmin sudo  
  18. testuser : testuser  
  19. demouser : demouser  
  20. sudha : sudha  
  21. suresh : suresh  
  22. mysql : mysql  
  23. ntp : ntp  
  24. u1 : u1  
  25. u2 : u2  
  26. u3 : u3  
  27. u4 : u4  
  28. u5 : u5  
  29. nagios : nagios nagcmd 

 针对特定的用户使用下列脚本。 

  1. for user in daygeek 2gadmin; do groups $user; done  
  2. daygeek : daygeek adm cdrom sudo dip plugdev lpadmin sambashare  
  3. 2gadmin : 2gadmin sudo 

另外的补充方法1:如何使用compgen命令找出Linux下的所有组?

compgen是一个bash内置命令,显示了Linux系统下的所有组。 

  1. $ compgen -g  
  2. root  
  3. daemon  
  4. bin  
  5. sys  
  6. adm  
  7. tty  
  8. disk  
  9. lp  
  10. mail  
  11. news  
  12. uucp  
  13.  
  14.  
  15. gdm  
  16. daygeek  
  17. sambashare  
  18. thanu  
  19. renu  
  20. 2gadmin  
  21. testuser  
  22. demouser  
  23. sudha  
  24. suresh  
  25. admin  
  26. u1  
  27. u2  
  28. u3  
  29. u4  
  30. u5  
  31. nagios  
  32. nagcmd 

另外的补充方法2:如何使用member命令列出Linux下的组成员?

member命令让你可以列出Linux下一个组的成员。 

  1. $ members sudo  
  2. daygeek 2gadmin 

原文标题:5 Methods to Find Out Which Group a User Belongs to in Linux,作者:Prakash Subramanian

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

 

责任编辑:庞桂玉 来源: 51CTO
相关推荐

2022-10-28 11:07:03

2010-01-27 09:53:37

2016-12-13 23:08:48

Linux命令

2011-01-04 14:27:50

安装linux方法

2020-05-15 08:28:18

二进制文件binLinux

2018-08-02 09:50:47

Linux命令用户信息

2020-05-28 13:33:30

React Hook前端开发

2019-10-24 08:52:23

Linux压缩文件归档

2011-08-01 17:41:09

Oraclesqlplus

2019-12-02 08:00:00

Linux管理员意外关机或重启

2022-11-18 15:09:29

2019-08-22 07:24:25

2020-09-01 09:56:26

云端云计算云服务

2019-01-21 10:34:13

Linux运算命令

2018-06-22 10:18:52

2019-12-11 11:25:48

Linux命令行邮件

2019-01-03 15:43:25

Linux内存shell

2018-11-01 10:10:35

网络安全网络攻击网络威胁

2009-06-17 12:01:21

Linux

2021-03-21 22:23:38

云计算数据中心IT
点赞
收藏

51CTO技术栈公众号