一、简述
在任何系统中,只要能正常登录系统的都算是系统中的用户。因为管理员的权限太大,容易造成不可逆的操作,所以我们系统上每一个进程都需要一个特定的用户来运行。
二、用户相关系统文件
/etc/passwd
~]# head -1 /etc/passwd root:x:0:0:root:/root:/bin/bash | ||||||
root | x | 0 | 0 | root | /root | /bin/bash |
用户名称 | 密码占位符 | 用户UID | 用户GID | 注释信息 | 家目录 | 登录Shell |
/etc/shadow
~]# tail -1 /etc/shadow zy:!!:19745:15:9999:3:1:19775: |
第一列:用户名称 |
第二列:加密后的密码 |
第三列:最后一次变更密码的时间。从1970年到现在的天数。 |
第四列:密码最少保留的天数 |
第五列:密码有效期 |
第六列:修改密码到期前的警告天数 |
第七列:修改密码过期后的宽限天数 |
第八列:修改账号失效日期,从1970年到现在的天数。 |
第九列:保留字段。 |
如何更改用户密码属性?
#语法
chage [用户名称] [参数]
#参数说明:
-l:列出用户的详细密码状态。
-d:修改指定用户密码信息的第3个字段,也就是最后一次修改密码的日期。
-m:修改密码最短保留的天数,也就是第4个字段。
-M:修改密码的有效期,也就是第5个字段。
-W:修改密码到期前的警告天数,也就是第6个字段。
-i:修改密码过期后的宽限天数,也就是第7个字段。
-E:修改账号失效日期,也就是第8个字段。
#例
~]# chage test -E 19775
三、用户UID的含义
用户UID | 系统中的含义 |
0 | 超级系统管理员,拥有系统最高权限 |
1-200 | 系统用户,用来运行系统自带的进程 |
201-999 | 系统用户,用来运行用户安装的程序进程,此类用户无需登录系统 |
1000+ | 普通用户,可以正常登录系统的用户,权限比较小 |
四、用户相关指令
1.创建用户及用户组
#语法
用户:useradd [用户名称] [参数]
#参数
-u 指定要创建用户的UID,唯一。
-g 指定要创建用户的默认分组,(基本组,主要的组)
-G 指定要创建用户的附加组,逗号隔开可添加多个附加组
-d 指定要创建用户的家目录
-s 指定要创建用户的shell(/bin/bash & /sbin/nologin)
-c 指定要创建用户的注释信息。
-M 给创建的用户不创建家目录
-r 创建系统用户,默认无家目录
#例
##创建 csdn 用户,UID:2001,基本用户组:C,附加组:S,注释信息:2024,shell:/bin/bash,不创建家目录
~]# groupadd C
~]# groupadd S
~]# useradd csdn -u 2001 -g C -G S -c 2024 -s /bin/bash -M
~]# id csdn
uid=2001(csdn) gid=1000(C) groups=1000(C),1001(S)
2.修改用户
#语法
usermod [用户名称] [参数]
#参数
-u 指定要修改用户的UID
-g 指定要修改用户的基本组
-G 指定要修改用户的附加组,使用逗号隔开多个附加组,覆盖原有的附加组。(-aG 追加一个附加组)
-d 指定要修改用户的家目录。(-md 把原有家目录一起带到要修改的家目录)
-s 指定要修改用户的bash shell
-c 指定要修改用户的注释信息
-l 指定要修改用户的登录名
3.删除用户
#语法
userdel [用户名称] [参数]
#参数
-r 清空用户的家目录以及邮件
五、用户密码
1.为用户添加密码
交互式设定密码:passwd 加用户名
非交互式设定密码: echo “初始密码” | passwd --stdin 用户名
交互式shell:等待用户输入执行指令,有提示
非交互式shell:不需要等待用户输入执行指令,没有提示shell执行结束会自动退出
登录式shell:需要输入用户名和密码才可以进入shell
非登录式shell:不需要输入用户名和密码就可以进入shell,比如运行bash会开启一个新的会话窗口
2.设置复杂的密码
#系统自带方式
echo $RANDOM :(随机生成字符串)
echo $RANDOM | md5sum (随机生成复杂数字串)
#使用工具mkpasswd
##安装
yum install -y expect
#用法
mkpasswd参数:-l(字符数)-d(几个数字)-c(几个小写字母)-C(几个 )-s(几个特殊符号)
六、用户组相关指令
1.创建用户组
#语法
groupadd [用户组名称] [参数]
#参数
-g 指定用户组的GID
-r 创建一个系统组
2.修改用户组
#语法
groupmod [用户组名称] [参数]
#参数
-g 指定用户组的GID
-n 用户组名称
3.删除用户组
#语法
groupdel [用户组名称] [参数]
#参数
-r 删除用户组所有信息