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给目标组
[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 修改组定义的更多相关文章
- Linux基础命令---修改组信息grpmod
groupmod 修改组的基本信息,包括组名称.组ID等信息.此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.openSUSE.Fedora. 1.语法 gr ...
- 常用的linux基础命令
常用的linux基础命令 1.ls 显示目录属性 -l:(也可以简写成ll),列表显示权限等属性 -a:显示所有文件包括隐藏文件等 -d:只列出目录本身 2.chgrp 改变档案所属群组 eg:chg ...
- Linux基础命令小结(超全!!)
Linux目录结构 1.bin 存放经常使用的指令比如ll,cp 2.sbin 系统管理员使用的系统管理指令 3.home 存放普通用户的住目录 4.root 系统管理员的用户主目录 5.boot 存 ...
- 【Python之路】第一篇--Linux基础命令
pwd 命令 查看”当前工作目录“的完整路径 pwd -P # 显示出实际路径,而非使用连接(link)路径:pwd显示的是连接路径 . 表示当前目录 .. 表示上级目录 / 表示根目录 ls ...
- Linux基础命令和文件权限
Linux命令与文件权限 Linux基础命令 reboot 重启 cd 切换目录 cd .. 回到上一级目录 cd ~ 回到主目录 cd / ...
- Linux基础命令-查看基本硬件信息
Linux基础命令-查看基本硬件信息 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.查看CPU信息 [root@node101.yinzhengjie.org.cn ~]# l ...
- [转帖]linux常用命令大全(linux基础命令入门到精通+实例讲解+持续更新+命令备忘录+面试复习)
linux常用命令大全(linux基础命令入门到精通+实例讲解+持续更新+命令备忘录+面试复习) https://www.cnblogs.com/caozy/p/9261224.html 总结的挺好的 ...
- Linux基础命令整合
linux基础命令整理 1.系统相关命令 shutdown -h now 关闭系统(1) init 0 关闭系统(2) telinit 0 关闭系统(3) shutdown -h hours:minu ...
- day04 Linux基础命令
day04 Linux基础命令 查看帮助信息命令 1.man命令:man命令的功能是查看指定命令的详细解释. 格式:man [具体需要被查看的命令] [root@localhost ~]# man r ...
随机推荐
- js 中arguments,call,apply,bind的使用
//对于 arguments和this, 每个函数都有自己独有的arguments和this, 且不进行链式查找 //arguments是什么? //答:1:arguments是收到的实参副本 //2 ...
- js-检测字符串出现次数最多,并返回
function validateStr(val){ let obj = {}; let maxNum = -1; let maxStr; for(let i=0;i<val.length;i+ ...
- 基于netty的socket服务端触发了channelInactive方法,但实际连接没有断开的问题
背景: 一个中小型H5游戏,后端使用基于 netty 的socket服务 服务端 分为 分发服务器 & 业务服务器,业务服务器可负载 用户客户端与分发服务器连接 分发服务器再作为客户端与每台业 ...
- Emacs Org-mode 1 下载、安装、基本使用
1.1 总述 Org 是一种帮助我们做笔记.日常事件或者项目计划的快速高效的文本格式系统. Org 有以下特点: Org mode 基于组织结构(outline-mode)对文本进行组织.具有良好的快 ...
- docker 搭建以太坊私有链搭建
最近区块链,火得不行,身边也有朋友准备玩这个,说是搭了一个星期,没有把环境搭建起来,叫我帮忙看看环境怎么搭建 于是我找到了官方的地址 https://github.com/ethereum/go-et ...
- ionic 3 热更新 Hot Code Push
最近用ionic 3 做的app业务做的差不多了,突然想到以后app如果有更新该怎么搞?想到我们的app后期更新应该不大,,最多就是改改bug和增加下用户体验,如果只有一些小的更新,然后提交各个应用商 ...
- Matlab将多项式的系数设为0
符号运算时有些多项式的系数值接近于0,像这样 fun = 3.5753839759325595498222646101085e-49*x + 1.836709923159824231201150839 ...
- Codeforces Round #443 (Div. 1) C. Tournament
题解: 思路挺简单 但这个set的应用好厉害啊.. 我们把它看成图,如果a存在一门比b大,那么a就可以打败b,a——>b连边 然后求强联通分量之后最后顶层的强联通分量就是能赢的 但是因为是要动态 ...
- 关于ajax请求数据,并将数据赋值给全局变量的一些解决方法
在使用ajax请求数据是,开始的时候是打算将ajax的数据取出,并赋予给全局变量,但是在实际编码过程中发现并不能将数据赋予给最开始定义的全局变量,出现这个问题的原因是由于ajax异步加载的原因,所以只 ...
- sql防止注入
使用PreparedStatement的参数化的查询可以阻止大部分的SQL注入.在使用参数化查询的情况下,数据库系统不会将参数的内容视为SQL指令的一部分来处理,而是在数据库完成SQL指令的编译后,才 ...