极北之地,兴安之雪,老骥伏枥转战Linux运维,关于用户组管理命令,看似简单,实际也简单,但应用起来,总会有力不从心之处,今天学习一下groupadd,groupdel,groupmod,gpasswd,newgrp等命令,拓展学习一下passwd等命令。
系统:CentOS 7
身份:管理员:root,一般用户satman、szp
本文没有使用sudo命令,大牛勿喷!!
用户组group:Linux系统每个用户都有一个基本的用户组,不同的操作系统可能不同,这点我还不清楚,目前只学过CentOS,该系统的默认,会给每个用户在默认情况下分配一个与用户名同名的group,作为基本组,附加组要用户自己指定。
所谓的组,在我看来,就像一个人,比如兴安雪本人,我自身属于一个用户,我的身份证就是这个用户的标识,但我还有户口本,在为结婚之前,我的户口本由于上学等原因迁出,户口本上只有我一个人,那这个户口本就是我的用户组,也是基本组,我结婚了,有了结婚证,那这个结婚证就是我的附加组,我结婚以后,岳父岳母等人也成了我的家人,那么岳父岳母家也是我的附加组,我工作了,同一个部门的同事也是我的附加组,总体来说,我的基本组只有一个,但附加组有很多,不知道这么理解对不对。
对于CentOS系统中的文件而言,由于系统是多用户多任务系统,有的文件不仅要给owner使用,还要与其他用户去分享,去合作,但又不能让所有人去浏览,否则,没哟秘密可言,这是文件的属组的作用就提现出来,你可以给文件设置一个属组group,并给属组赋予读写执行的不同权限,这样既保证了合作共享的流畅,又保证了文件的安全性。
下面进行组操作的学习,由于水平和认知有限,不足之处敬请理解!!!
一、组管理命令:
用户组相关配置文件:
/etc/group:组账户信息
/etc/passwd:用户及用户组相关信息
/etc/gshadow:组密码相关
/etc/login.defs shadow密码套件配置
1、groupadd命令:创建一个新组
位置:/usr/sbin/groupadd,系统管理员命令。
格式:groupadd [选项] group_name
常用选项:
-g :GID 指定GID,默认是上一个组的GID+1
-r: 创建系统系统组;
-p:给组设置密码
【例如】:添加一个名为testg的GID为的组,并给改组设置密码为345567456。
首先,使用命令:~]# groupadd -g -p "345567456" testg
然后观察/etc/group和/etc/gshadow两个文件,如箭头所示,发现目的已经基本实现。值得注意的是,在/etc/gshadow文件中,用户组的密码是看见的,为什么,是因为,这个密码,没有经过加密算法转换,如果想要经过加密算法,就需要如下命令设置:
~]# gpasswd testg,也就是gpasswd 直接对用户组testg进行手动设置,此密码是哈希加密密码。
为什么要对用户组进行密码设置,我们来看下面一个例子。
【例如】我现在有两个普通用户,satman和szp,加入szp想临时进入satman用户组,拥有satman用户组的临时权限,可以用newgrp命令来实现。
第一种情况,satman用户组没有密码。
由于satman用户组,没有密码,系统返回无效参数。
第二种情况,给用户组satman设置组密码。
设置密码后,发现该用户组密码为加密算法。
再使用newgrp命令后,输入satman组密码,执行成功,利用id命令查看,发现用户szp当前的临时组为satman,组密码的功能就在这里,不给用户组加密码,除了root之外的其他用户,谁也不能把satman设置为基本组,但如果加了密码,情况就不一样了,所以,除了工作需要,为安全着想,尽量不要给用户组加密码。
2、groupdel命令:删除一个用户组。
此命令位置:/usr/sbin/groupdel,为管理员命令。
格式:groupdel [选项] GROUP
此命令一般不加选项,后面直接接用户组名称,例如删除我刚刚建立的testg用户组。可以直接使用命令:
~]# groupdel testg
这个命令不能删除用户的基本组,例如szp用户组的基本组是szp,如果我们使用groupdel命令删除。
这个道理告诉我们,现实生活中,甩掉情人容易,甩掉老婆太难了,所以,男人好难!!!
3、groupmod命令:修改用户组属性
此命令位置:/usr/sbin/groupmod,为管理员命令。
格式:groupmod [选项] GROUP
常用选项:
-g GID:修改GID;
-n new_name: 修改组名
这个命令太简单,不举例,傻瓜命令。
4、gpasswd命令:组管理命令
此命令位置:/usr/sbin/gpasswd,为管理员命令。
格式:gpasswd [选项] group
常用选项:
-a USERNAME:向组中添加用户
-d USERNAME:从组中移除用户
-r :删除组用户密码
-A USERNAME:设置具有管理权限的用户列表,这个对于root来说,慎用。
不带选项时,给组设置密码
【例如】:向satman用户组添加szz用户,然后删除szz用户,在删除satman用户组密码,可以进行如下操作。
第一步:向satman添加szz用户
第二步:从satman删除szz用户
第三步:删除satman用户组密码
好了,此命令介绍到这里,有大牛说:你的操作太墨迹!好吧,我的特点就是墨迹。
5、newgrp命令:修改用户其他组为临时基本组
格式:newgrp [-] [group]
-:会模拟用户重新登录以实现初始化工作环境;
这个命令在上面的例子中已经用过,不举例。
6、关于几个配置文件,一起学习一下
/etc/group,/etc/login.defs:两个文件在上一篇日志里有介绍,有兴趣的朋友,可以点下面链接:
兴安雪学运维之:CentOS用户管理命令详解之一_兴安岭的雪的博客-CSDN博客
/etc/gshadow:组信息相关文件,此文件绝对不能让普通用户可读。
[root@cainiao ~]# cat /etc/gshadow
root:::
........................
docker:!::suselinux,TestLinux
此文件字段共分为4段,分别以“:”隔开,具体意义如下:
第一段:组名,例如上面所示的root用户组和docker用户组
第二段:组密码,有密码则显示密码,无密码则显示为空,!为密码锁定
第三段:组管理员,类似于root权限,现在很少用,因为sudo的命令太方便
第四段:组成员,不做过多介绍。
7、最后拓展学习一下passwd命令:来更改使用者的密码认证
位置:/usr/bin/passwd,部分功能,普通用户可用。
相关配置文件:
/etc/passwd, /etc/shadow
此命令可以说是Linux系统运维当中一个非常牛叉的命令,必须要牢牢掌握,时常练习。
格式:passwd 选项
常用选项:
-d USERNAME:删除指定用户密码,此功能只有root用户使用;
-f USERNAME:强迫用户下次登录时必须修改口令,root特权;
-w DAYS USERNAME:口令要到期提前警告的天数
-k 更新只能发送在过期之后
-l USERNAME:停止账号使用
-S USERNAME:显示密码信息
-u USERNAME:启用已被停止的账户,前提,该账户已经停用
-x DAYS USERNAME:指定口令最长存活期
-g GROUP_NAME:修改群组密码
-i 口令过期后多少天停用账户,-1,为禁用此项功能。
不加选项:设置用户密码,如果用户有密码,则为更改密码。
【例如】:设置ArchLinux账户密码,而后设置该账户密码参数为密码到期警告天数为7天,口令过期后不停用,而后显示该账户密码信息,而后再删除该账户密码信息。
第一步:设置ArchLinux账户密码
设置账户密码的前提是,此帐户必须存在,如果不存在,需要用useradd username新建。
第二步:更改该账户密码参数
第三步:显示该账户密码信息
第四步:删除密码,并重新显示账户密码信息
居然还显示密码已经设置,查看一下/etc/passwd,/etc/shadow文件
结果显示,ArchLinux用户的密码已经为空。
关于密码设置的几条原则:
1、密码长度,8位以上,随机字符,哈希算法还是很牛叉的。 2、大小写、数字合特殊字符中至少三类,出现个问你题,忘了密码咋办 3、定期修改密码,建议每周修改一次,最长不能超过半个月。
今天的命令就学到这里,本人是刚刚学习,过程中有很多瑕疵,希望各位能够谅解,海涵!