zoukankan      html  css  js  c++  java
  • 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目录下的配置文件。

    退出值

    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 test anna 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不一致。
    • 如果两个用户共享一个GID为主组,那么新建的文件的属组名称都会优先选择组文件(/etc/group、/etc/gshadow)里排在前面的那个组
  • 相关阅读:
    Xcode下 gdb 调试命令
    Xcode 获取本地IP
    Linux终端提示符PS1设置(颜色)
    linux 客户端 Socket 非阻塞connect编程
    关于SIGPIPE导致的程序退出
    jQuery MiniUI开发系列之:数据验证
    支持Java Spring MVC
    支持ASP.NET MVC
    支持ASP.NET WebService
    jQuery MiniUI开发系列之:Ajax处理超时、服务端错误
  • 原文地址:https://www.cnblogs.com/yuelaoban/p/10678269.html
Copyright © 2011-2022 走看看