Linux中的初始组是指用户在创建时默认属于的用户组,通常与用户名同名;而附加组则是在初始组之外用户可以加入的组。初始组和附加组在很多情况下都有重要的应用场景。
初始组的作用
权限控制
在Linux中,文件和目录的访问权限由所属用户和所属用户组决定。用户文件默认的所属组就是初始组。因此,初始组可以控制该用户对于同组成员创建的文件和目录的访问权限。如果一些用户在同一个组内,他们可以相互修改和删除彼此的文件(当然,文件和目录的访问权限要允许这样的操作)。
设置默认用户组
在Linux中,sudo和su等命令在执行时会默认使用用户所在的初始组。如果希望在执行sudo命令时使用与当前用户不同的用户组,则需要使用“-g”选项,加上对应的组名称。例如,将使用seetest组执行sudo命令:
sudo -g seetest command
附加组的作用
同组共享
一个用户可以加入多个附加组,这样他就可以与其它组的成员共享同组的文件和目录。附加组默认不会影响初始组的权限控制。
运行某些命令时临时指定组权限
某些情况下需要在执行命令时暂时更改当前用户的组。可以使用“newgrp”命令来实现,它会临时将当前用户的附加组设置为指定组。例如:
# 取消当前用户的'group1'附加组
$ id
uid=1000(example) gid=1000(example) groups=1000(example),1001(group1),1002(group2)
$ newgrp group2
# 临时将当前用户的附加组改为'group2'
$ id
uid=1000(example) gid=1000(example) groups=1000(example),1001(group1),1003(group3),1004(group2)
使用示例
初始组
查看初始组
可以在终端中使用“id”命令查看当前用户的初始组:
$ id -gn
example
其中,-g选项表示获取初始组名称,-n选项用于显示组名称而不是ID。
更改用户的初始组
更改用户的初始组只能通过修改/etc/passwd文件来实现。需要先关闭当前用户的所有进程,然后使用“usermod”命令修改用户的组:
# 关闭当前用户的所有进程
$ pkill -u example
$ usermod -g newgroup example
其中,-g选项用于指定新的初始组名称,example是用户名。
附加组
查看用户的附加组
使用“id”命令可以同时查看用户的初始组和附加组:
$ id
uid=1000(example) gid=1000(example) groups=1000(example),1001(group1),1002(group2)
其中,groups后跟随的是用户的所有附加组的ID。
将用户加入附加组
使用“usermod”命令可以将用户加入附加组:
$ sudo usermod -a -G group_name example
其中,-a选项表示将用户加入而不是替换之前的组,-G选项用于指定组名称,example是用户名。
使用附加组
使用“newgrp”命令可以临时更改当前用户的附加组:
# 在group2组内执行命令
$ newgrp group2
$ id
uid=1000(example) gid=1000(example) groups=1000(example),1001(group1),1004(group2)
使用“sg”命令也可以实现类似的效果,不同之处在于“sg”命令执行完命令后会回到原始组。例如:
$ sg group2 -c 'id; command'
其中,group2是指定组的名称,-c选项后面是需要执行的命令。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解Linux初始组和附加组 - Python技术站