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 ...
随机推荐
- Django ----- app 和 ORM的操作和介绍
创建APP ORM 介绍 ORM的操作 说明一下 GET 和 POST 的区别: , GET ①获取一个页面 ②提交数据 数据显示在URL ?user=alex&pwd=alexdsb ,PO ...
- Java并发编程的4个同步辅助类
Java并发编程的4个同步辅助类(CountDownLatch.CyclicBarrier.Semphore.Phaser) @https://www.cnblogs.com/lizhangyong/ ...
- 做GUI的随笔
用的SDL库 官方网站是:https://littlevgl.com/ 改网站需要FQ 字库制作网站: https://debugdump.com/t_771.html
- (四)Knockout 表单
click <div> You've clicked <span data-bind="text: numberOfClicks"></span> ...
- 继承了AppCompatActivity的全屏设置
v7下全屏设置:getSupportActionBar().hide();getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN ...
- scrapy相关:splash 实践
0. 1.参考 https://github.com/scrapy-plugins/scrapy-splash#configuration 以此为准 scrapy相关:splash安装 A javas ...
- Cordova IOT Lesson003
bot index.html <!DOCTYPE html> <html> <head> <title>Arduino蓝牙机械昆虫控制器</tit ...
- Linux中jdk安装及配置
第一步:准备好jdk安装包:
- Beta(4/7)
鐵鍋燉腯鱻 项目:小鱼记账 团队成员 项目燃尽图 冲刺情况描述 站立式会议照片 各成员情况 团队成员 学号 姓名 git地址 博客地址 031602240 许郁杨 (组长) https://githu ...
- Vue自定义标签
<!DOCTYPE html><html> <head> <meta charset="utf-8" /> <title> ...