linux基础命令--groupadd 创建新的群组
描述
- groupadd命令用于创建一个新的群组。
- groupadd命令默认会根据命令行指定的值和系统下的/etc/login.defs文件定义的值去修改系统下的/etc/group和/etc/gshadow文件,添加新的群组。
语法
- groupadd [选项] group
选项列表
选项(常用的已加粗) | 说明 |
-f, --force | 如果指定的组已经存在,使用-f选项会以成功状态退出。当和-g选项一起使用时,且指定的GID已经存在,则选择另一个唯一的GID(系统默认选择的一个GID) |
-g, --gid GID |
指定的GID必须是唯一的,除非使用-o选项。从系统管理角度GID取值范围:其他组GID最大值≤指定的GID≤60000,若不使用-g指定GID则系统默认使用:其他组GID最大值+1 |
-K, --key KEY=VALUE | 覆盖/etc/login.defs文件的GID_MIN、GID_MAX或其他的默认值,可指定多个-K选项。例如:-K GID_MIN=100 -K GID_MAX=499;注意:-K GID_MIN=10,GID_MAX=499不支持 |
-o, --non-unique | 需和-g选项一起使用,允许指定一个已存在的GID,即共享一个GID,使该GID不再具备唯一性。 |
-p, --password PASSWORD | 指定组密码(默认不设密码) |
-r, --system |
创建一个系统组。系统组的GID一般是为安装到系统的应用保留的。(系统组GID的值在/etc/login.defs文件定义的SYS_GID_MIN-SYS_GID_MAX范围内:201~999) 注意:使用-r选项时且不使用-g选项指定GID时,系统默认以GID_MIN-1的方式生成GID,比如系统已经存在编号为999和998的GID,则默认创建下一个GID为997的组 |
-R, --root CHROOT_DIR | 指定在CHROOT_DIR(改变后的根目录)下更改生效以及使用CHROOT_DIR目录下的配置文件 |
实例
分别使用-f和-fg选项测试一个已经存在的组
[root@pople ~]# tail -1 /etc/group && tail -1 /etc/gshadow # 先检查两个组文件
anna:x:1002:
anna:!::
[root@pople ~]# id anna
uid=1002(anna) gid=1002(anna) groups=1002(anna)
[root@pople ~]# groupadd -f anna # 创建一个存在的组,echo $?返回上一个命令的退出码,显示为0表示命令以成功状态退出
[root@pople ~]# echo $?
0
[root@pople ~]# tail -1 /etc/group && tail -1 /etc/gshadow # 对比可看到两个组文件信息无变化
anna:x:1002:
anna:!::
[root@pople ~]# groupadd -fg 1002 test
[root@pople ~]# tail -2 /etc/group && tail -2 /etc/gshadow # 对比可以看到-f选项和-g一起使用时,若指定的GID已存在,则GID默认选取:其他组GID最大值+1
anna:x:1002:
test:x:1003:
anna:!::
test:!::
[root@pople ~]# groupadd -g 1003 test1 # 单独-g选项无法跳过已存在的GID而强制创建新组
groupadd: GID '1003' already exists
- 使用-o和-g选项为指定的组添加一个已存在的GID,即此GID将被共享,不再具备唯一性。
- 使用-r选项创建一个系统组(system group),若不指定GID,则默认选取:其他系统组GID最小值-1。
[root@pople ~]# groupadd -o -g 1003 test1
[root@pople ~]# tail -2 /etc/group && tail -2 /etc/gshadow # 组test和组test1具备相同的GID--1003,此时该GID不再具备唯一性
test:x:1003:
test1:x:1003:
test:!::
test1:!::
[root@pople ~]# cat /etc/group |grep 99
nobody:x:99:
input:x:999:
polkitd:x:998:
ssh_keys:x:997:
cockpit-ws:x:996:
[root@pople ~]# groupadd -r sys_account # 新系统组GID = 已存在的系统组GID最小值:996 -1 = 995
[root@pople ~]# cat /etc/group |grep 99
nobody:x:99:
input:x:999:
polkitd:x:998:
ssh_keys:x:997:
cockpit-ws:x:996:
sys_account:x:995:
[root@pople ~]# groupadd -g 800 test2 && tail -2 /etc/group # 系统GID和普通的GID并没有界限上的限定,所以选取GID的范围不一定要按照系统默认的范围设置。
sys_account:x:995:
test2:x:800:
[root@pople ~]#
总结:
- 系统GID和普通用户的GID并没有界限上的限定,所以可灵活搭配-g选项和其他选项任意指定一个GID。当不搭配-g选项,则系统以默认定义好的配置来创建组,无须关心GID,只需设置组名即可,安全又省事。
- 组名不能超过32个字符长度。
linux基础命令--groupadd 创建新的群组的更多相关文章
- linux基础-第六单元 用户、群组和权限
用户及passwd文件 /etc/passwd文件的功能 /etc/passwd文件每个字段的具体含义 shadow文件 /etc/shadow文件的功能 /etc/shadow文件每个字段的具体含义 ...
- linux基础-第七单元 用户、群组及权限的深入讨论
怎样查看文件的权限 ls命令详解 root用户及文件的安全控制 什么是root用户 用户分类 文件操作权限 文件操作权限的字符表示 chown chgrp 使用符号表示法设定文件或目录上的权限 chm ...
- Linux基础(2)- 用户、群组和权限
一.用户.群组和权限 1) 新建用户natasha,uid为1100,gid为555,备注信息为“master” 2) 修改natasha用户的家目录为/Natasha 3) 查看用户信息配置文 ...
- Linux基础命令---htpasswd创建密码文件
htpasswd htpasswd指令用来创建和更新用于基本认证的用户认证密码文件.htpasswd指令必须对密码文件有读写权限,否则会返回错误码. 此命令的适用范围:RedHat.RHEL.Ubun ...
- Linux(CentOS6.5)下创建新用户和组,并制定用户和组ID
相关命令: groupadd -g 888 comexgroup useradd comex -d /comexHome -g comexgroup -u 888 cp /etc/skel/.* /c ...
- Linux基础命令---添加组groupadd、删除组groupdel
groupadd 指定群组名称来建立新的群组账号,需要时可以从系统中取得新的群组值. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.openSUSE.Fedora. ...
- 【Python之路】第一篇--Linux基础命令
pwd 命令 查看”当前工作目录“的完整路径 pwd -P # 显示出实际路径,而非使用连接(link)路径:pwd显示的是连接路径 . 表示当前目录 .. 表示上级目录 / 表示根目录 ls ...
- 常用的linux基础命令
常用的linux基础命令 1.ls 显示目录属性 -l:(也可以简写成ll),列表显示权限等属性 -a:显示所有文件包括隐藏文件等 -d:只列出目录本身 2.chgrp 改变档案所属群组 eg:chg ...
- [转帖]linux常用命令大全(linux基础命令入门到精通+实例讲解+持续更新+命令备忘录+面试复习)
linux常用命令大全(linux基础命令入门到精通+实例讲解+持续更新+命令备忘录+面试复习) https://www.cnblogs.com/caozy/p/9261224.html 总结的挺好的 ...
随机推荐
- Django目录
app和ORM的操作与介绍 框架简介 中间件 form介绍 Django自带用户认证 cookie和session 模版 模板2 ORM操作 所有ORM操作(第二版) Django请求生命周期 Dja ...
- Linux -- Centos6 yum安装相关问题与处理
Centos6 yum安装相关问题与处理 由于要使用yum下载文件,突然yum下载不了想要的文件,想更换yum源,结果得重新安装yum 来自本人GitHub地址https://github.com/m ...
- js小方法,获取知道公历生日 (‘1992-01-19’),获取阴历生日日期,属相,非简单根据年份判断-----------声明:整理自网络!!
let lunar = { tg: '甲乙丙丁戊己庚辛壬癸', dz: '子丑寅卯辰巳午未申酉戌亥', number: '一二三四五六七八九十', year: '鼠牛虎兔龙蛇马羊猴鸡狗猪', mont ...
- RabbitMQ的Java API编程
1.创建Maven工程,pom.xml引入依赖: <dependency> <groupId>com.rabbitmq</groupId> <artifact ...
- 浅析Memcache和Redis
想必开发的小伙伴们对Memcache和Redis都不陌生吧,最近正好在整理它们,于是就写一下博客吧!一方面是分享,另一方面便于自己查找. 首先,来说说Memcache和Redis是什么? 说得简单一点 ...
- 《剑指offer》数组中出现一半次数的数字
本题来自<剑指offer> 反转链表 题目: 思路: C++ Code: Python Code: 总结:
- Pygal之世界地图绘制from pygal.i18n import COUNTRIES 报错的解决办法
在<Python编程:从入门到实践>书中的一个项目用到pygal.i18n获取国别码, 问题描述: 在学习<python编程:从入门到精通>的pygal绘制世界地图时,遇到了这 ...
- elasticsearch-5.2.1在windows下的安装方法
elasticsearch-5.2.1安装方法 1. 安装java 下载安装java jdk 1.8 以上 配置java环境变量 右击[我的电脑]---[属性]-----[高级系统设置]---[环境变 ...
- 【转】win10哪个版本最好用,推荐win10企业版LTSC
https://msdn.itellyou.cn/ win10企业版LTSC又被称为win10企业版2019长期服务版本,这个版本小编认为是目前最好用的win10版本,在win10企业版2016长期服 ...
- 单元测试如何覆盖internal的方法
在类的设计中经常会有类或者方法要设置成private或者internal等方式,在使用中这么做无可厚非,但是对单元测试的影响也颇大 对于private方法,那只有做一个副本然后改成internal或p ...