linux下基本组和附属组有什么区别

在咖啡馆里,我注意到邻桌一位程序员在用命令行管理服务器用户,突然敲了句 id。
屏幕上跳出的数字和组名让我想起家里的文件共享,有些文件只能家人看,有些文件则欢迎朋友也来看看。
主组和附属组的区别,就像家里书房是我的主空间,但客厅和厨房也是我的地盘。
等等,还有个事,他刚才改了某个用户的组属性,说 usermod -G 就行了,但具体怎么加附属组,他没细说。

Linux 用户所属组修改方法及相关实用工具介绍

Linux改用户组啊,主要靠usermod命令。
这个命令用起来挺方便的。

比如要把user1 的主组改成developers,附加组加admin和test,就用这个命令: bash sudousermod-gdevelopers-Gadmin,testuser1 user1
注意啊,改完后得重新登录用户,不然权限不生效。
要是user1 已经登录着呢,可能得等他下次再登录才生效。

gpasswd命令也挺用的,管理用户跟组的关系更灵活。
比如把user1 加到developers组: bash sudogpasswd-auser1 developers
这个比usermod方便点,尤其批量操作的时候。

管理组本身呢,就用groupadd和groupdel。
要创建个新组叫newgroup: bash sudogroupaddnewgroup
要删掉oldgroup,得先确认里面没有用户或者文件了: bash sudogroupdeloldgroup
查用户信息,用id命令就行。
比如看user1 的组情况: bash iduser1
会显示UID、GID还有他属于哪些组。

改文件所属组,chown或者chgrp。
chown可以改所有者和组,chgrp只改组。
比如把file.txt的组改成developers: bash sudochownuser1 :developersfile.txt
或者用chgrp: bash sudochgrpdevelopersfile.txt
要是目录里面有东西,得加-R参数递归改: bash sudochown-Ruser1 :developers/path/to/dir
还有useradd和userdel,创建用户的时候可以直接指定组。
比如创建newuser,主组是developers,附加组是admin: bash sudouseradd-gdevelopers-Gadminnewuser
删用户的时候,加-r参数可以把主目录也删了: bash sudouserdel-rolduser
用这些命令啊,得有root或者sudo权限。
指定组的时候,组得先存在,可以用getentgroup组名看看。
删组前得确保没有文件或者进程在用这个组,不然会有权限问题。

主组就是用户默认创建文件时的组,附加组就是临时获取权限的其他组。
这样组合用着就顺手了。

linux中用户初始组(-g)和附加组(-G)的区别

Linux里头啊,用户组分两种,-g那个叫初始组,-G那个叫附加组,区别挺大的。

初始组(-g)这玩意儿啊,就是你建用户的时候,默认跟你绑定的那个组。
比如你建个用户叫test,那他默认就属于test这个组。
这个组啊,用户只能有一个,不能多。
创建用户的时候系统自动就给配好了,不用你操心。
我以前弄系统的时候,看/etc/passwd文件里头,用户那一栏后面跟着的g就是初始组名。

附加组(-G)就不一样了。
一个用户除了初始组,还能加别的组。
比如test这个用户,除了test组,还能加开发组、运维组啥的。
一个用户能属于好几个附加组呢。
这需要用usermod命令手动加,比如usermod -aG developers test,就把test加到developers组里了。
或者直接改/etc/group文件也能加。

权限方面啊,初始组是你最基本的权限。
附加组给你额外权限。
简单说,你有了初始组的权限,再加上附加组的权限。
比如有个目录,只允许test组和运维组访问,那你得把用户test加到运维组里才行。

管理上啊,初始组不用管,系统建用户时自动配的。
附加组得手动弄,用usermod命令最方便。
像usermod -aG sudo user1 ,就把user1 加到sudo组里了,这样他就能用sudo了。

用场景的话,初始组就是用户的“家”,所有权限的起点。
附加组更灵活,用来做细粒度控制。
比如公司开发项目,搞个devs这个组,把所有开发人员都加进去,然后给这个组写代码的权限。
这样你不用给每个开发单独授权,改devs组的权限,大家都跟着改。
附加组也能搞跨用户共享,比如有个共享盘,给photo这个组权限,把小明和小红都加photo组,那他俩都能访问。

说实话,当时我也没想明白为啥要分这两种组,后来搞项目时才发现用处大了。