linux命令修改组,linux基础命令--groupmod 修改组定义

描述

groupmod命令用于修改系统上的组定义。

groupmod命令通过更改组数据库(the group database)里的相关条目来修改指定的组。

语法

groupmod [选项] GROUP

选项列表

选项(常用的已加粗)

说明

-g, --gid GID

给群组指定一个新的GID,即修改组ID。(类似groupadd,-g可和-o选项一起使用,指定一个已存在的GID给目标组)

注意:1.将更新将该组作为基本组的用户,且保留该组继续作为用户的基本组。

2.任何具有旧组ID且必须继续属于组的文件,都必须手动更改其组ID。

-n, --new-name NEW_GROUP

指定要更改的组名,新组名在前,旧组名在后。

-o, --non-unique

需和-g选项一起使用,允许为指定的组添加一个已存在的GID,即共享一个GID,使该GID不再具备唯一性。

-p, --password PASSWORD

指定组密码。

-R, --root CHROOT_DIR

指定在CHROOT_DIR(改变后的根目录)下更改生效以及使用CHROOT_DIR目录下的配置文件。

-h, --help

显示帮助文档并退出。

退出值

EXIT VALUES

说明

0

执行成功

2

命令语法错误

3

无效的选项参数

4

指定的组不存在

9

组名已被使用。

10

无法更新组文件

文件

/etc/group:组账户文件。

/etc/gshadow:安全的组账户文件

/etc/login.defs:创建用户和组的定义文件

/etc/passwd:用户账户信息文件

实例

使用-o和-g选项指定一个已存在的GID给目标组

1 [root@pople ~]# id anna && id test

2 uid=1002(anna) gid=1002(anna) groups=1002(anna)

3 uid=1003(test) gid=1003(test) groups=1003(test)

4 [root@pople ~]# ls -la /home/anna/ /home/test/ |grep .bashrc

5 -rw-r--r--. 1 anna anna 231 Oct 31 01:07 .bashrc

6 -rw-r--r--. 1 test test 231 Oct 31 01:07 .bashrc

7 [root@pople ~]# groupmod -o -g 1002 test              # 指定anna的GID给test,即共享一个GID

8 [root@pople ~]# id anna && id test

9 uid=1002(anna) gid=1002(anna) groups=1002(anna)

10 uid=1003(test) gid=1002(anna) groups=1002(anna) # 可以看到用户test的GID已修改

11 [root@pople ~]# ls -la /home/anna/ /home/test/ |grep .bashrc

12 -rw-r--r--. 1 anna anna 231 Oct 31 01:07 .bashrc

13 -rw-r--r--. 1 test 1003 231 Oct 31 01:07 .bashrc # 之前的文件的GID不会被修改,需要手动去修改

14 [root@pople ~]# chown test:anna /home/test/.bashrc        # 手动更改.bashrc文件的属组

15 [root@pople ~]# ls -la /home/anna/ /home/test/ |grep .bashrc

16 -rw-r--r--. 1 anna anna 231 Oct 31 01:07 .bashrc

17 -rw-r--r--. 1 testanna 231 Oct 31 01:07 .bashrc # 已更正属组为anna

[root@pople ~]# chown test:test /home/test/.bashrc # 更新文件属组为test,无报错,但文件的属组仍未改变???

[root@pople ~]# ls -la /home/anna/ /home/test/ |grep .bashrc

-rw-r--r--. 1 anna anna 231 Oct 31 01:07 .bashrc

-rw-r--r--. 1 test anna 231 Oct 31 01:07 .bashrc

[root@pople ~]# tail -2 /etc/group # 两个组拥有同样的GID。

anna:x:1002:

test:x:1002:

[root@pople ~]# su - test

[test@pople ~]$ touch tt.txt

[test@pople ~]$ ll tt.txt

-rw-r--r--. 1 test anna 0 Apr  9 17:34 tt.txt            # 可以发现切换用户之后创建一个文件,此文件的属组是anna而不是test。

[root@pople ~]# groupmod -n new_name anna               # 修改anna的组名为:new_name

[root@pople ~]# tail -2 /etc/group && tail -2 /etc/gshadow

test:x:1002:

new_name:x:1002: # 两个组文件的信息已修改,细心的朋友可以发现修改后的组信息排在最后一行,而test排在前面。

test:!::

new_name:!::

[root@pople ~]# ls -la /home/anna/ /home/test/

/home/anna/:

total 16

drwx------. 2 anna test  83 Apr  4 22:47 . # 可以看到用户anna的当前属组权限已全部自动更改为test

drwxr-xr-x. 5 root root  41 Apr  9 16:57 ..

-rw-------. 1 anna test   9 Apr  4 22:47 .bash_history

-rw-r--r--. 1 anna test  18 Oct 31 01:07 .bash_logout

-rw-r--r--. 1 anna test 193 Oct 31 01:07 .bash_profile

-rw-r--r--. 1 anna test 231 Oct 31 01:07 .bashrc

/home/test/:

total 12

drwx------. 2 test 1003  76 Apr  9 17:34 .

drwxr-xr-x. 5 root root  41 Apr  9 16:57 ..

-rw-r--r--. 1 test 1003  18 Oct 31 01:07 .bash_logout

-rw-r--r--. 1 test 1003 193 Oct 31 01:07 .bash_profile

-rw-r--r--. 1 test test 231 Oct 31 01:07 .bashrc # 用户test的属组权限也自动由anna更换为test了。说明对于共享同一个GID的两个用户,文件的属组名取决于组文件里排在前面的那个组,也就是组test。

-rw-r--r--. 1 test test   0 Apr  9 17:34 tt.txt

[root@pople ~]#

总结:

如果两个用户共享一个GID为基本组的ID,应该先检查任何具有旧组ID且必须继续属于组的文件,都必须手动更改其组ID,否则有可能会导致组ID不一致。

如果两个用户共享一个GID为基本组的ID,那么文件的属组名称都会优先选择组文件(/etc/group、/etc/gshadow)里排在前面的那个组

标签:pople,groupmod,定义,bashrc,rw,linux,test,root,anna

来源: https://www.cnblogs.com/yuelaoban/p/10678269.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值