描述

  • 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目录下的配置文件。

退出值

EXIT VALUES  说明
0
执行成功
2 
命令语法错误
3
无效的选项参数
4
指定的组不存在
9
组名已被使用。
10
无法更新组文件 

文件

  • /etc/group:组账户文件。
  • /etc/gshadow:安全的组账户文件
  • /etc/login.defs:创建用户和组的定义文件
  • /etc/passwd:用户账户信息文件

实例

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

 [root@pople ~]# id anna && id test
uid=(anna) gid=(anna) groups=(anna)
uid=(test) gid=(test) groups=(test)
[root@pople ~]# ls -la /home/anna/ /home/test/ |grep .bashrc
-rw-r--r--. anna anna Oct : .bashrc
-rw-r--r--. test test Oct : .bashrc
[root@pople ~]# groupmod -o -g 1002 test              # 指定anna的GID给test,即共享一个GID
[root@pople ~]# id anna && id test
uid=(anna) gid=(anna) groups=(anna)
uid=(test) gid=(anna) groups=(anna) # 可以看到用户test的GID已修改
[root@pople ~]# ls -la /home/anna/ /home/test/ |grep .bashrc
-rw-r--r--. anna anna Oct : .bashrc
-rw-r--r--. test 1003 Oct : .bashrc # 之前的文件的GID不会被修改,需要手动去修改
[root@pople ~]# chown test:anna /home/test/.bashrc        # 手动更改.bashrc文件的属组
[root@pople ~]# ls -la /home/anna/ /home/test/ |grep .bashrc  
-rw-r--r--. anna anna Oct : .bashrc
-rw-r--r--. test anna Oct : .bashrc # 已更正属组为anna
[root@pople ~]# chown test:test /home/test/.bashrc              # 更新文件属组为test,无报错,但文件的属组仍未改变???
[root@pople ~]# ls -la /home/anna/ /home/test/ |grep .bashrc
-rw-r--r--. anna anna Oct : .bashrc
-rw-r--r--. test anna Oct : .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不一致。
  • 如果两个用户共享一个GID为主组,那么新建的文件的属组名称都会优先选择组文件(/etc/group、/etc/gshadow)里排在前面的那个组

linux基础命令--groupmod 修改组定义的更多相关文章

  1. Linux基础命令---修改组信息grpmod

    groupmod      修改组的基本信息,包括组名称.组ID等信息.此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.openSUSE.Fedora. 1.语法 gr ...

  2. 常用的linux基础命令

    常用的linux基础命令 1.ls 显示目录属性 -l:(也可以简写成ll),列表显示权限等属性 -a:显示所有文件包括隐藏文件等 -d:只列出目录本身 2.chgrp 改变档案所属群组 eg:chg ...

  3. Linux基础命令小结(超全!!)

    Linux目录结构 1.bin 存放经常使用的指令比如ll,cp 2.sbin 系统管理员使用的系统管理指令 3.home 存放普通用户的住目录 4.root 系统管理员的用户主目录 5.boot 存 ...

  4. 【Python之路】第一篇--Linux基础命令

    pwd 命令 查看”当前工作目录“的完整路径 pwd -P # 显示出实际路径,而非使用连接(link)路径:pwd显示的是连接路径 .   表示当前目录 ..  表示上级目录 /  表示根目录 ls ...

  5. Linux基础命令和文件权限

    Linux命令与文件权限 Linux基础命令   reboot  重启   cd         切换目录   cd ..     回到上一级目录   cd ~      回到主目录   cd /  ...

  6. Linux基础命令-查看基本硬件信息

    Linux基础命令-查看基本硬件信息 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.查看CPU信息 [root@node101.yinzhengjie.org.cn ~]# l ...

  7. [转帖]linux常用命令大全(linux基础命令入门到精通+实例讲解+持续更新+命令备忘录+面试复习)

    linux常用命令大全(linux基础命令入门到精通+实例讲解+持续更新+命令备忘录+面试复习) https://www.cnblogs.com/caozy/p/9261224.html 总结的挺好的 ...

  8. Linux基础命令整合

    linux基础命令整理 1.系统相关命令 shutdown -h now 关闭系统(1) init 0 关闭系统(2) telinit 0 关闭系统(3) shutdown -h hours:minu ...

  9. day04 Linux基础命令

    day04 Linux基础命令 查看帮助信息命令 1.man命令:man命令的功能是查看指定命令的详细解释. 格式:man [具体需要被查看的命令] [root@localhost ~]# man r ...

随机推荐

  1. [51nod1965]奇怪的式子

    noteskey 怎么说,魔性的题目...拿来练手 min_25 正好...吧 首先就是把式子拆开来算贡献嘛 \[ANS=\prod_{i=1}^n \sigma_0(i)^{\mu(i)} \pro ...

  2. Java基础之中间件的初识

    java常用的中间件 一般本地开发的话建议使用tomcat.(小项目,或者是个人开发) linux系统建议使用jetty或apache hpptd 大型的项目或者商业项目就用JBOSS或webloig ...

  3. 末学者笔记--Linux中RAID磁盘阵列及centos7启动过程

    <一>RAID概念 磁盘阵列(Redundant Arrays of Independent Disks,RAID),有“独立磁盘构成的具有冗余能力的阵列”之意. 磁盘阵列是由很多价格较便 ...

  4. scrapy 通过FormRequest模拟登录再继续

    1.参考 https://doc.scrapy.org/en/latest/topics/spiders.html#scrapy.spiders.Spider.start_requests 自动提交 ...

  5. sklearn交叉验证3-【老鱼学sklearn】

    在上一个博文中,我们用learning_curve函数来确定应该拥有多少的训练集能够达到效果,就像一个人进行学习时需要做多少题目就能拥有较好的考试成绩了. 本次我们来看下如何调整学习中的参数,类似一个 ...

  6. 使用httpclient访问NLP应用接口例子

    参考网址: http://yuzhinlp.com/docs.html 接入前须知 接入条件 1.进入网站首页,点击注册成为语知科技用户 2.注册完成后,系统将提供语知科技用户唯一标识APIKey,并 ...

  7. SpringBoot启动tomcat源码解读

    一.SpringBoot自动拉起Tomcat 原文链接:http://www.studyshare.cn/blog-front/blog/details/1136 SpringBoot框架是当前比较流 ...

  8. Centos6.5部署vsftpd+mysql认证

    1.FTP传输原理 FTP,文件传输协议,是工作在应用层,基于TCP实现,依赖于互联网即可通讯. 1)连接模式 控制(命令)连接,用来通信,一直在线,客户端随机端口连接服务端TCP:21端口. 数据连 ...

  9. Petrozavodsk Summer-2017. Moscow IPT Contest

    A. A Place For My Head 留坑. B. New Divide 从高位到低位贪心,当这一位是$0$时,要尽量取$1$,维护高维后缀最小值进行判断即可. 时间复杂度$O((n+a)\l ...

  10. 最大子矩阵和问题dp

    给定一个矩阵 matrix,其中矩阵中的元素可以包含正数.负数.和0,返回子矩阵的最大累加和.例如,矩阵 matrix 为: 0 -2 -7 0 9 2 -6 2 -4 1 -4 1 -1 8 0 - ...