|
|
51CTO旗下网站
|
|
移动端

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

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

作者:布加迪编译来源:51CTO|2019-11-27 08:00

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

【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】

【编辑推荐】

  1. Linux less命令详解(9个实用案例演示)
  2. Linux下你还知道这些特殊文件?
  3. Zorin OS 15 Lite发布:好看的轻量级Linux
  4. 一篇文章了解Linux操作系统的权限管理
  5. 10个高效Linux技巧及Vim命令对比
【责任编辑:庞桂玉 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

订阅专栏+更多

骨干网与数据中心建设案例

骨干网与数据中心建设案例

高级网工必会
共20章 | 捷哥CCIE

394人订阅学习

中间件安全防护攻略

中间件安全防护攻略

4类安全防护
共4章 | hack_man

142人订阅学习

CentOS 8 全新学习术

CentOS 8 全新学习术

CentOS 8 正式发布
共16章 | UbuntuServer

288人订阅学习

视频课程+更多

小白轻松学MySQL大数据调优

小白轻松学MySQL大数据调优

讲师:齐毅25256人学习过

强哥带你精通zabbix监控

强哥带你精通zabbix监控

讲师:周玉强21263人学习过

Docker快速入门视频课程(通俗易懂)

Docker快速入门视频课程(通俗易懂)

讲师:汤小洋181144人学习过

读 书 +更多

Linux指令速查手册

Linux是一款开源的操作系统,得到了广大开发者的青睐。掌握Linux系统的指令及其用法是学习Linux系统的基础。本书详细地介绍了常用Linux指令...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊

51CTO服务号

51CTO官微