用户和组管理
用户管理
用户配置文件和密码配置文件
用户配置文件/etc/passwd
# 打印passwd最后一行
[root@lwz ~]# tail -n 1 /etc/passwd
lwz:x:1000:1000:lwz:/home/lwz:/bin/bash
每一行代表一个用户信息,每一列用冒号分隔一共七列:
第一列:用户名
第二列:密码占位符,早期为用户的密码,后来因为安全问题,将密码保存在
/etc/shadow文件里第三列:用户的uid
第四列:用户的gid
第五列:用户的注释描述信息,没有实际作用
第六列:用户的家目录
第七列:用户的登录shell,默认是
/bin/bash
密码配置文件/etc/shadow
# 打印shadow最后一行
[root@lwz ~]# tail -n 1 /etc/shadow
lwz:$6$ln8kW5.8ArWsqx.q$ehOeZbPhdbH1PtCtOwGekwn1CNwSITlNxQXIzfRbVNDuaTbxd0ylwAPRWIW1vBRenGl2NHQEVxBsPiNpNFs5p1::0:99999:7:::
跟/etc/passwd对应,每一行代表一个用户信息,每一列用冒号分隔,一共九列:
第一列:用户名
第二列:加密后的密码
加密方式:
如果密码为星号,或者密码的第一位是星号,代表这个用户是禁用状态,不可登陆。
如果为空,用户登陆不需要密码。
!!:密码已经过期。!:密码开头第一位为!,用户被锁,无法登陆。$6$:开头,表示使用SHA-512算法加密。$1$:开头,表示使用MD5算法加密。$2$:开头,表示使用Blowfish算法加密。$5$:开头,表示使用SHA-256算法加密。
第三列:最近一次更改密码距离1970年1月1日总共多少天。
第四列:多少天后才可以更改密码,默认为0,不限制。
第五列:多少天内必须更改密码,否则密码过期,且无法登陆。
第六列:警告提醒,提示距离密码过期还有多少天。
第七列:不活动时间,用户没有登陆活动但账号仍能保持有效的最大天数。
第八列:用户距离1970年多少天后过期。
第九列:保留字段,没有实际作用。
查看用户id信息:id
id:可以查看用户用户的uid、gid和附加组的gid信息。
# root用户id信息
[root@lwz ~]# id
uid=0(root) gid=0(root) 组=0(root)
# 查看指定用户id信息
[root@lwz ~]# id lwz
uid=1000(lwz) gid=1000(lwz) 组=1000(lwz),10(wheel)
10(wheel):wheel组,是Linux系统中的一个特殊组,它包含所有允许登陆系统的用户。
语法:
id [选项] 用户名
选项:
-u:查看用户的uid信息。-g:查看用户的gid信息。-G:查看用户的附加组信息。-n:不显示用户名。可以和-u-g-G单独配合使用,只显示用户名、组名和附加组名。
添加用户useradd
语法
useradd [选项] 用户名
中括号表示内容可有可无。
选项:
-u:指定uid。root用户为0,centos7的普通用户从1000开始,并且不能重复。-g:指定gid。gid必须是已经存在的。-d:指定家目录。如果不指定,默认在/home目录下自己的用户名。-s:指定shell。如果不指定,默认是/bin/bash。如果指定为/sbin/nologin则不能登陆。-c:指定注释信息。-M:不创建家目录。一个用户没有家目录会出现很多问题,所以一般只在创建不可登陆的用户时使用。
删除用户:userdel
语法:
userdel [选项] 用户名
# 基本用法:直接删除一个用户,但是不会删除该用户的家目录。
[root@lwz ~]# userdel lwz1
[root@lwz ~]# ll /home/lwz1
总用量 0
选项
-r:删除用户的同时,删除家目录。
[root@lwz ~]# userdel -r lwz1
[root@lwz ~]# ll /home/
lwz/ pischi/
修改用户属性:usermod
语法
usermod 选项 用户名
使用
usermod命令至少需要一个选项
选项
-u:修改uid。-g:修改gid。可以指定组名,也可以指定gid。
[root@lwz ~]# usermod -g lwz lwz1
[root@lwz ~]# id lwz1
uid=1001(lwz1) gid=1000(lwz) 组=1000(lwz)
-d:修改家目录。如果更改用户的家目录不存在,需要将用户原有的家目录重命名为更改的家目录。或者复制系统的家目录模板/etc/skel/重命名到指定用户的家目录下。-s:修改shell。修改为/sbin/nologin则该用户无法登陆。-G:扩展组,可以指定多个组。
[root@lwz ~]# id lwz1
uid=1001(lwz1) gid=1000(lwz) 组=1000(lwz)
[root@lwz ~]# usermod -G lwz1,root lwz1
[root@lwz ~]# id lwz1
uid=1001(lwz1) gid=1000(lwz) 组=1000(lwz),1001(lwz1),0(root)
-L:锁定用户,即无法登陆。/etc/shadow文件中用户的密码首位会加上一个!。被锁用户只能从root用户下su 用户名登陆。-U:解锁用户。
用户切换:su
语法
su [选项] [参数]
su命令不加任何选项和参数,会默认切换到root用户,需要输入root的密码
选项
-:可以加载要切换到的用户的环境变量和配置等。-c:使用指定用户执行一条命令,且不会切换到该用户。
[lwz@lwz ~]$ su -c "mkdir /root/lwz" root
密码:
[root@lwz lwz]# ll -d /root/lwz
drwx------ 2 root root 4096 9月 7 15:55 /root/lwz
用户密码管理:passwd
语法
passwd [选项] [参数]
passwd命令不加任何选项和参数,则默认修改当前用户的密码。只有管理员才能指定修改其他用户的密码。普通用户修改自己的密码,需要先输入旧密码,再输入新密码和确认新密码。
新密码不能低于八位,也不能过于简单,且只能重试三次。
选项
-l:锁定用户。效果和usermod -L一样。-u:解锁用户。效果和usermod -U一样。-stdin:修改密码的另一种方式,将标准输出的内容作用于指定用户的密码。(只有管理员才能这样操作)
# 终端交互的方式,lwz的密码修改为123
[root@lwz lwz]# passwd --stdin lwz
更改用户 lwz 的密码 。
123
passwd:所有的身份验证令牌已经成功更新。
# 非交互的方式。将`echo`的标准输出`123123`作用于lwz的密码。
[root@lwz lwz]# echo "123123"|passwd --stdin lwz
更改用户 lwz 的密码 。
passwd:所有的身份验证令牌已经成功更新。
用户组管理
配置文件
用户组配置文件
[root@lwz ~]# tail -n 3 /etc/group
pesign:x:992:
lwz:x:1000:
lwz1:x:1001:lwz1
每一行代表一个组,每一列用:分隔,一共四列:
第一列:组名
第二列:密码占位符
x,密码信息保存在/etc/gshadow文件中。第三列:用户组的GID。
第四列:用户组的成员。
组密码配置文件
[root@lwz ~]# tail -n 3 /etc/gshadow
pesign:!::
lwz:!::
lwz1:!::lwz1
与/etc/group文件一一对应,每一行代表一个组,每一列用:分隔,一共四列:
第一列:组名
第二列:加密后的密码
第三列:组的管理员(多个用
,分隔)第四列:组内成员(多个用
,分隔)
创建用户组
语法
groupadd [选项] 组名
groupadd命令用于创建一个新的用户组,新用户组的信息将被添加到/etc/group文件。
选项
-g:指定新用户组的GID。
[root@lwz ~]# groupadd -g 1002 lwz2
[root@lwz ~]# tail -n 1 /etc/group
lwz2:x:1002:
修改用户组
语法
groupmod [选项] 组名
与
usermod用法类似
选项
-g:修改用户组的GID。-n:修改用户组的名字。
删除用户组
语法
groupdel 组名
mkpasswd - 随机字符串
mkpasswd可以生成一组随机的字符串。
使用前需要安装该命令。
$ yum install -y expect
语法
mkpasswd [选项]
不带选项默认生成9位的随机字符串。
[root@lwz ~]# mkpasswd
.Tp6taZa8
选项
-l:指定字符串的长度。-s:指定字符串中的特殊符号数量。
示例:一步到位创建用户密码
使用一条命令生成随机字符串,长度为10,包含特殊符号的数量为2,保存到文件中,使用这个字符串创建用户的密码。
# 一步到位创建用户并随机生成密码。"&&"符号代表前面的命令执行成功后,才会执行后面的命令。
[root@lwz ~]# mkpasswd -s 2 -l 10 >> passwd.txt && useradd lwz3 && tail -n 1 passwd.txt | passwd --stdin lwz3
更改用户 lwz3 的密码 。
passwd:所有的身份验证令牌已经成功更新。
# 给密码设置只有管理员可以读取,防止外泄。
[root@lwz ~]# chmod 600 passwd.txt