Linux - 有效群组(effective group)与初始群组(initial group),groups,newgrp

每个使用者在他的 /etc/passwd 里面的第四栏有所谓的 GID ,那个 GID 就是所谓的『初始群组 (initial group) 』!也就是说,当用户一登陆系统,立刻就拥有这个群组的相关权限的意思。 举例来说,我们上面提到 dmtsai 这个使用者的 /etc/passwd 与 /etc/group 还有 /etc/gshadow 相关的内容如下:

[[email protected] ~]# usermod -G users dmtsai  <==先配置好次要群组
[[email protected] ~]# grep dmtsai /etc/passwd /etc/group /etc/gshadow
/etc/passwd:dmtsai:x:503:504::/home/dmtsai:/bin/bash
/etc/group:users:x:100:dmtsai  <==次要群组的配置
/etc/group:dmtsai:x:504:       <==因为是初始群组,所以第四字段不需要填入账号
/etc/gshadow:users:::dmtsai    <==次要群组的配置
/etc/gshadow:dmtsai:!::

仔细看到上面这个表格,在 /etc/passwd 里面,dmtsai 这个使用者所属的群组为 GID=504 ,搜寻一下 /etc/group 得到 504 是那个名为 dmtsai 的群组啦!这就是 initial group。因为是初始群组, 使用者一登陆就会主动取得,不需要在 /etc/group 的第四个字段写入该账号的!

但是非 initial group 的其他群组可就不同了。举上面这个例子来说,我将 dmtsai 加入 users 这个群组当中,由于 users 这个群组并非是 dmtsai 的初始群组,因此, 我必须要在 /etc/group 这个文件中,找到 users 那一行,并且将 dmtsai 这个账号加入第四栏, 这样 dmtsai 才能够加入 users 这个群组啊。

那么在这个例子当中,因为我的 dmtsai 账号同时支持 dmtsai 与 users 这两个群组, 因此,在读取/写入/运行文件时,针对群组部分,只要是 users 与 dmtsai 这两个群组拥有的功能, 我 dmtsai 这个使用者都能够拥有喔!这样瞭呼?不过,这是针对已经存在的文件而言, 如果今天我要创建一个新的文件或者是新的目录,请问一下,新文件的群组是 dmtsai 还是 users ?呵呵!这就得要检查一下当时的有效群组了 (effective group)。

groups: 有效与支持群组的观察

如果我以 dmtsai 这个使用者的身份登陆后,该如何知道我所有支持的群组呢? 很简单啊,直接输入 groups 就可以了!注意喔,是 groups 有加 s 呢!结果像这样:

[[email protected] ~]$ groups
dmtsai users

在这个输出的信息中,可知道 dmtsai 这个用户同时属于 dmtsai 及 users 这个两个群组,而且, 第一个输出的群组即为有效群组 (effective group) 了。 也就是说,我的有效群组为 dmtsai 啦~此时,如果我以 touch 去创建一个新档,例如: 『 touch test 』,那么这个文件的拥有者为 dmtsai ,而且群组也是 dmtsai 的啦。

[[email protected] ~]$ touch test
[[email protected] ~]$ ll
-rw-rw-r-- 1 dmtsai dmtsai 0 Feb 24 17:26 test

这样是否可以了解什么是有效群组了?通常有效群组的作用是在新建文件啦!那么有效群组是否能够变换?

newgrp: 有效群组的切换

那么如何变更有效群组呢?就使用 newgrp 啊!不过使用 newgrp 是有限制的,那就是你想要切换的群组必须是你已经有支持的群组。举例来说, dmtsai 可以在 dmtsai/users 这两个群组间切换有效群组,但是 dmtsai 无法切换有效群组成为 sshd 啦!使用的方式如下:

[[email protected] ~]$ newgrp users
[[email protected] ~]$ groups
users dmtsai
[[email protected] ~]$ touch test2
[[email protected] ~]$ ll
-rw-rw-r-- 1 dmtsai dmtsai 0 Feb 24 17:26 test
-rw-r--r-- 1 dmtsai users  0 Feb 24 17:33 test2

此时,dmtsai 的有效群组就成为 users 了。 我们额外的来讨论一下 newgrp 这个命令,这个命令可以变更目前用户的有效群组, 而且是另外以一个 shell 来提供这个功能的喔,所以,以上面的例子来说, dmtsai 这个使用者目前是以另一个 shell 登陆的,而且新的 shell 给予 dmtsai 有效 GID 为 users 就是了。如果以图示来看就是如下所示:

虽然用户的环境配置(例如环境变量等等其他数据)不会有影响,但是使用者的『群组权限』将会重新被计算。 但是需要注意,由于是新取得一个 shell ,因此如果你想要回到原本的环境中,请输入 exit 回到原本的 shell 喔!

既然如此,也就是说,只要我的用户有支持的群组就是能够切换成为有效群组!好了, 那么如何让一个账号加入不同的群组就是问题的所在啰。你要加入一个群组有两个方式,一个是透过系统管理员 (root) 利用 usermod 帮你加入,如果 root 太忙了而且你的系统有配置群组管理员,那么你可以透过群组管理员以 gpasswd 帮你加入他所管理的群组中!

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-05 06:58:41

Linux - 有效群组(effective group)与初始群组(initial group),groups,newgrp的相关文章

针对群组资源的操作方法、群组服务器

本发明提供了一种针对群组资源的操作方法.群组服务器和执行针对群组资源的操作的装置,通过在发送给成员设备的成员资源操作请求中携带操作请求标识,以便成员资源所属的成员设备根据所述操作请求标识判断成员设备存储的操作请求标识中是否包含所述操作请求标识,并根据判断结果处理成员资源操作请求.从而能够避对成员资源的操作请求进行重复处理或循环处理. 技术领域 [0001]本发明涉及机器通信(Machine-to-Machine Communications, M2M)技术领域,尤其涉及针对群组资源方法.群组服务

Linux基础系列(四)系统用户和组管理

Linux系统是一个多用户.多任务的操作系统,任何一个想要使用系统资源的用户,都必须向系统管理员申请一个账号,并授予相应的权限给到这个账号后才能进入系统.用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问:另一方面也可以帮助用户组织文件,并为用户提供安全性保护. 每个用户账号都拥有一个惟一的用户名和密码.用户只有在提供了正确的用户名和密码之后,才能够进入系统和自己的主目录.(这就类似于我们向银行申请个人账号,银行会为你创建一个个人账号和密码,并只授予你部分业务

corosync集群下的双心跳多资源组配置小结

在我们日常的corosync配置中,在安装完相关包只需要在corosync.conf中配置bindnetaddr中对应心跳IP并添加 service { name: pacemaker ver: 0 use_mgmtd: 1 } 即可启用pacemaker,然后进行资源配置. 1.遇到第一个问题,如果有多个网卡用来做心跳怎么办? 心跳IP的配置在corosync.conf中totem配置项下的interface子项.多个心跳网卡配置多个interface,并把ringnumber加1(第一个是0

9.12 linux下文件的权限管理、用户和组管理

Su 切换用户 查看当前登录的用户:whoami.id 查看当前用户属于哪个组:groups 查看当前计算机中有几个组:cat /etc/group Groupadd 组名  添加组 Groupsdel 组名  删除组 avahi:x:122: colord:x:123: geoclue:x:124: gdm:x:125: abc:x:1000: sambashare:x:126:abc 456:x:1001: 格式:  组名:组密码:GID:当前组下有哪些用户 将123用户添加到456组中:

如何一步一步删除(linux &amp; UNIX)环境下 oracle 11g 集群节点

 Deleting a Cluster Node on Linux and UNIX Systems 1.确定要删除的节点,是否active,pinned $ olsnodes -s -t 如果 pinned ,则crsctl unpin css  -n <nodename>  unpinned 相应的节点 2.禁用相应集群节点的应用资源,进程 先停掉 em: emctl stop dbconsole 以root 用户运行 在要删除节点的 $Grid_home/crs/install 路径

关于Linux下面msyql安装后并未设置初始密码,但是登录报错“Access denied for user &#39;root&#39;@&#39;localhost&#39; (using password: NO)”的解决方案

如上图:首先我安装mysql的时候并没有设置密码,但是就是登不进去,百度了一下,解决方案如下: 解决方案地址:http://zhidao.baidu.com/link?url=7QvuOKtfRdMTyFCsOf_6Bbb6pHGUxzyr5_afFGLiX_WAD6JJ4MCmepriWnzIo-kEAetXCLsRRhIidzxbL6zTnnJlP3HbYh2DDLZOEbOvBji 关于Linux下面msyql安装后并未设置初始密码,但是登录报错"Access denied for use

Linux运维需要懂什么web集群架构知识?

Linux运维需要懂什么web集群架构知识? 在充斥着各种的互联网+的数字时代,IT运维方面也越来越趋于Linux系统的应用,掌握 Linux 运维技术已成为IT 技术人员的必经之路,但是,构建在Linux系统上的高性能.高并发企业级网站集群架构上的网站集群架构,又会涉及到哪些具体的内容呢? 1.需要学习与Linux 相关的基础且重要的知识 Linux 的历史沿革.Linux 的企业级选型.学习环境的搭建.Linux 的企业级系统安装.Linux 系统的基础优化,以及远程连接Linux 及客户端

Linux多网卡绑定(bond)及网络组(team)

Linux多网卡绑定(bond)及网络组(team) ??很多时候,由于生产环境业务的特殊需求,我们需要对服务器的物理网卡实施特殊的配置,从而来满足不同业务场景下对服务器网络的特殊性要求.如高并发的网络IO型业务,需要高速的网络IO,即对网卡的收收发包处理能力及网卡最大带宽速度等性能指标提出了更高的要求:事务处理型的系统,如金融交易系统.电商平台等,对物理网络线路.网卡等物理设备的稳定可靠性提出了更高的要求. ??Linux系统中,可以通过多网卡绑定(bonding)和网络组(team)等技术,

云服务器之安全组之三_容器服务安全组快速指南

原文地址 容器服务安全组规则 2月28号之后创建容器服务集群,默认创建的安全组已经做了加固,开放的规则如下 VPC安全组: 经典网络安全组(公网入方向和内网入方向): 注意 443端口和80端口可以根据自己的需求选择放开或者关闭. ICMP规则建议保留,方便排查问题.有些工具也依赖ICMP 容器服务依赖22和2376端口对机器初始化,请务必保留这两条规则. 老集群的安全组规则 2月28之前创建的集群,安全组规则开的比较大,以经典网络安全组规则为例 如果希望收紧规则,可以参考前面安全组的配置.步骤