Linux 根据组名查询出该组内所有成员

目前linux中没有直接根据组名查询组员的命令。

目前系统提供的查找组员和组之间的关系的方法有两种,

一种是:查找/etc/passwd和/etc/group目录,根据/etc/group目录里面的组的id,在/etc/passwd中查找到组内成员。

另一种是:通过groups命令,根据组员查找该组员所属组

我用grep和cut命令实现了通过组名查找出其内组员的功能,命令如下

# gid=`grep ‘组名‘ /etc/group | cut -d ‘:‘ -f 3` && grep ".*:x:[0-9]*:$gid" /etc/passwd |cut -d ‘:‘ -f 1

说明:

这串命令通过&&分开(&&:当前面的命令正确时,后面的命令再执行)

&&前一段命令:先是根据组名用grep从/etc/group中查询出组名哪一行的信息,再用管道命令cut查出GID,之后将GID赋值给变量。

&&后一段命令:先是在grep中通过“正则匹配加GID”从/etc/passwd中查查询出该组内组员的各个信息(一行为一个组员),再用cut将组员的用户名“切”出来。

时间: 2024-08-02 11:50:19

Linux 根据组名查询出该组内所有成员的相关文章

Linux shell 脚本 实现查询出进程的名字,cup内存占用率,启动时间在线状态等格式化输出

目的是查询出进程的名字,cup内存占用率,启动时间在线状态等格式化输出 脚本实现的结果:[[email protected] ~]# sh /app/shell/app_status.shProcessName---------GroupName-------Status-----PID----CPU----MEMORY----StarTime---nginx WEB STOPED NULL NULL NULL NULLhttpd WEB STOPED NULL NULL NULL NULLmy

CentOS7(linux) 通过服务名查询安装目录

#ps aux|grep nginx root 1231 0.0 0.0 46336 956 ? Ss 04:21 0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.confnginx 1232 0.0 0.2 46808 2144 ? S 04:21 0:00 nginx: worker processroot 1247 0.0 0.0 112660 972 pts/0 R+ 04:56 0:00 grep --col

mysql 怎么查询出,分组后的总条数。。。也就是有多少组数。。。。怎么写

SELECT COUNT(*) AS 多少组数FROM( SELECT id FROM 表 GROUP BY id) subQuery;Mysql,有一个表含有以下字段,uid 发帖人id,title 发帖标题,tc 发帖内容,time 发帖时间,用一条语句算出昨天发帖书大于10的,一共有多少人? select count(*) from (select distinct startperson_id,count(startperson_id) as num from apphome_finan

SQL查询出当前服务器时间是否在表T1时间段内,如果有则选择出

表T1 开始 时间         结束时间          09:00:00          12:00:00      14:00:00          17:00:00 查询出当前服务器时间是否在表T1时间段内,如果有则选择出 选出的sql结果集如下,求SQL,  注:SQL2000环境 开始 时间         结束时间           14:00:00          17:00:00 方法一: DECLARE @t TABLE (     beginTime CHAR(

Linux系统通过用户名快速获取组名

因项目需求,需要通过Linux系统用户名快速获取用户所在组名,通过测试总结如下: 方法1:通过groups命令 [[email protected] ~]# for i in `awk -F ":" '{print $1}' /etc/passwd`;do groups $i;done                 root : root bin : bin daemon sys daemon : daemon bin adm lp adm : adm sys lp : lp syn

linux文件组、权限等

文件所有者.所在组合其他组  --改变用户所在组    组和在oa系统中的组差不多,用户代表的好像是个体,组有点像角色的意思.不过权限的话并不是个体从组中获得,组仅仅是一个机制,进行部分文件控制与共享,管理权限的机制,有点类似一个容器.            如何在linux中添加组    groupadd policeman       在添加用户时,指定将某个用户添加到哪个组中    useradd -g 组名 用户名 root权限改变某个用户所在的组:    usermod -g 组名 用

sql语句查询同一表内多字段同时重复的记录 sql数据库重复记录删除

分享下用sql语句删除数据库中重复记录的方法.比如现在有一人员表 (表名:peosons) 若想将姓名.身份证号.住址这三个字段完全相同的记录查询出来select p1.* from persons p1,persons p2 where p1.id<>p2.id and p1.cardid = p2.cardid and p1.pname = p2.pname and p1.address = p2.address可以实现上述效果.几个删除重复记录的SQL语句 1.用rowid方法2.用gr

[case分享]SQL 2014 重建AlwaysOn出现AlwaysOn组名已存在

环境:1台 DC+2台SQL 2014 故障: 在AlwaysOn向导,出现这样的错误信息: 解决方法: 1.此情况一般出现误操作的情况,正常的在SQL管理台删除AlwaysOn组不会出现此情况(不能说百分百,按照微软官方删除就不会出现),如果你是在群集删除AlwaysOn组就会出现这种情况. 2.根据信息,先看一下群集是否遗漏之前的旧记录,包括AD域内是否有AlwaysOn组名的计算机.A记录信息. 3.在注册表[HKEY_LOCAL_MACHINE\Cluster\HadrAgNameToI

HDU 4343 多查询求区间内的最大不相交区间个数-思维&amp;贪心-卡时间&amp;二分&amp;剪枝

题意:给你一些区间,现在有m个查询,求出每个查询的区间内的最大的不相交区间个数 分析: 几天前那道说谎问题时用dp的摞箱子模型求的最大的不相交区间个数,但是这题不能用这个方法,因为这题是动态的查询,不可能每个查询dp一次,超时. 这题用贪心策略.求区间[l~r]里的最大不相交区间,贪心策略就应该先选该区间内右端点最小的,这样给以后待选的区间留下更大的空间,所以我们的做法就是先按照区间的右端点排序,然后每次查询依次挑出查询区间里右端点最小的,并且把查询区间的左端点更新为刚才挑出的区间的右端点(这个