23.用户管理-useradd+usermod
用户管理
用户分类
Linux用户有三种角色:
超级用户:root,拥有对系统的最高的管理权限,它的ID=0
普通用户:系统用户,它的UID:1-999(centos/Redhat7版本)UID:1-499(centos/Redhat6版本);本地用户,它的UID:1000+(centos/Redhat7版本)UID:500+(centos/Redhat6版本)
虚拟用户:伪用户,一般不会用来登录系统,它主要是用于维持某个服务的正常运行,如ftp、Apache等。
用户和组的关系
一对一:一个用户可以存在在一个组中;
一对多:一个用户可以存在在多个组中;
多对一:多个用户可以存在在一个组中;
多对多:多个用户可以存在在多个组中;
用户配置文件
用户的配置文件有三种:
|
名 称 |
路径及文件 |
说 明 |
|
用户配置文件 |
/etc/passwd |
记录了每个用户的一些基本属性,并且对所有用户可读,每一行记录对应一个用户,每行记录通过冒号进行分隔 |
|
用户组文件 |
/etc/group |
用户组的所有信息存放位置,并且组名不能重复 |
|
用户对应的密码信息 |
/etc/shadow |
因为passwd文件对所有用户是可读的,为安全起见把密码从passwd中分离出来放入这个单独的文件,该文件只有root用户拥有读权限,从而保证密码安全性 |
用户命令
useradd=adduser
注意:
useradd用法及作用与adduser相同!!!
作用:添加用户
语法:useradd -d 用户主目录路径 -u UID –g 初始组 -G 附加组 -s 登录的shell 用户名
参数:
-d:可以指定用户的家目录
-M:不创建用户的主目录
-g:设置用户初始组的名字或数字ID;该组必须是存在的;如果没有设置该选项useradd会根据/etc/login.defs文件中的USERGROUPS_ENAB环境变量进行设置。默认USERGROUPS_ENAB会使用和用户名相同的名字创建群组,GID等于UID。
-G:用户要加入的附件组列表;使用逗号分隔多个组,不要添加空格;如果不设置,用户仅仅加入初始组。(一个用户只允许有一个主组,可以有多个附加组)
-s:用户默认登录shell的路径;启动过程结束后,默认启动的登录shell在此处设定;请确保使用的shell已安装,默认是Bash。有时候需要禁止某些用户执行登录操作,例如用来执行系统服务的用户。将shell设置成/sbin/nologin就可以禁止用户登录。
useradd 用户名
[root@localhost ~]# useradd wangbin
[root@localhost ~]# tail -1 /etc/passwd
wangbin:x:1001:1001::/home/wangbin:/bin/bash
解释:
此命令会自动创建wangbin组,并成为wangbin用户的默认组,同时默认的登录shell是bash。
useradd -u 自定义UID号 用户名
[root@localhost ~]# useradd -u 1111 changmengka
[root@localhost ~]# tail -1 /etc/passwd
changmengka:x:1111:1111::/home/changmengka:/bin/bash
解释:
指定用户的UID
useradd -d 用户家目录用户名
[root@localhost ~]# useradd -d ~/Desktop/test_home liuzhiwei
[root@localhost ~]# tail -1 /etc/passwd
liuzhiwei:x:1113:1113::/root/Desktop/test_home:/bin/bash
解释:
指定用户的家目录
useradd –g 所属组 用户名
[root@localhost ~]# useradd -g wangbin weifangchao
[root@localhost ~]# id weifangchao
uid=1117(weifangchao) gid=1001(wangbin) groups=1001(wangbin)
解释:
指定用户的所属组,通过“id 用户名”可以看到weifangchao用户在wangbin组中(指定的属组必须存在,否则报错)
useradd -G 附加组1,附加组2,…… 用户名
[root@localhost ~]# useradd -G wangbin,changmengka wangquanzizhan
[root@localhost ~]# id wangquanzizhan
uid=1118(wangquanzizhan) gid=1118(wangquanzizhan) groups=1118(wangquanzizhan),1001(wangbin),1111(changmengka)
解释:
指定用户附加组,附属组也可以称为补充组,用户可以有0个或多个附加组
userdel
语法:userdel [选项] 用户名
参数:
-r:删除的时候,同时会删除用户的家目录和/var/mail下的目录
举例:
[root@localhost home]# userdel -r wangquanzizhan
id 用户名
[root@localhost home]# id wangbin
uid=1001(wangbin) gid=1001(wangbin) groups=1001(wangbin)
解释:
查看用户的UID、GID、GROUPS、属组等信息。
passwd 用户名
为用户添加密码。
方法一
交互式为用户添加密码
[root@localhost home]# passwd wangzhibin
Changing password for user wangzhibin.
New password: #输入密码
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: #输入密码二次确认
passwd: all authentication tokens updated successfully.
方法二
免交互式为用户设置密码
[root@localhost home]# echo wfc123 | passwd --stdin weifangchao
Changing password for user weifangchao.
passwd: all authentication tokens updated successfully.
passwd说明

wangbin:用户名
x:密码占位符
1001:用户的UID,用数字表示
1001:用户所属组的GID,用数字表示
/home/wangbin:用户的主目录
/bin/bash:用户登录系统后使用的shell
shadow说明

详细解释:
|
name |
登录名称,这个必须是系统中的有效账户名 |
|
password |
已加密密码,分为三个部分,第一部分是表示使用哪种哈希算法;第二部分是用于加密哈希的salt;第三部分是已加密的哈希 |
|
哈希算法:$1表示MD5 ; $6 表示SHA-512 ; $5 SHA-256 |
|
|
查看帮助说明: |
|
|
man 5 passwd |
|
|
man 5 shadow |
|
|
man 5 group |
|
|
man 3 crypt |
|
|
lastchange |
最近一次更改密码的日期,以距离1970/1/1的天数表示 |
|
min-age |
不能更改密码的最少天数,最近更改过后几天才可以更改;如果为0表示“最短期限要求” |
|
maxage |
密码过期时间,必须更改密码前的最多天数 |
|
warning |
密码即将到期的警告期,以天数表示,0表示“不提供警告” |
|
inactive |
宽限天数,密码到期后 |
|
expire |
账号过期时间,以距离1970/1/1的天数计算 (千年虫) |
|
blank |
预留字段 |
group说明

用户组:用户组名称
密码占位符:密码的占位符
GID:用户的GID号
其他用户:用户组下包括的其他用户
控制用户规则
控制添加用户规则的文件有两个:/etc/default/useradd和/etc/login.defs
/etc/default/useradd文件
[root@localhost home]# cat /etc/default/useradd
# useradd defaults file
GROUP=100 #表示创建普通组。users组ID为100 。(如果没有这一条,或者你把users这个组删除了,当你再创建用户时,将提示:useradd: group '100' does not exist)
HOME=/home #表示设置用户的家目录存放位置。(如果不想让用户家目录存储在/home下,可以修改这个地方)
INACTIVE=-1 #是否启用账号过期。(密码过期后是否会失效的设置,“INACTIVE= ”表示无效;“INACTIVE=-1”表示启用)
EXPIRE= #设置账号终止日期。(可以直接设定账号在哪个日期后就直接失效)
SHELL=/bin/bash #设置添加用户时默认使用的shell
SKEL=/etc/skel #设置模板目录
CREATE_MAIL_SPOOL=yes #是否创建邮箱文件
/etc/login.defs文件
使用egrep去除无用数据
[root@localhost home]# egrep -v "^$|^#" /etc/login.defs
MAIL_DIR /var/spool/mail #新建用户的默认邮箱位置
PASS_MAX_DAYS 99999 #密码的有效期
PASS_MIN_DAYS 0 #密码每隔多长时间修改
PASS_MIN_LEN 5 #密码最小长度
PASS_WARN_AGE 7 #密码到期前几天警告
UID_MIN 1000 #用户ID开始的数值
UID_MAX 60000 #用户ID结束的数值
SYS_UID_MIN 201
SYS_UID_MAX 999
GID_MIN 1000 #组ID开始的数值
GID_MAX 60000 #组ID结束的数值
SYS_GID_MIN 201
SYS_GID_MAX 999
CREATE_HOME yes #是否为用户创建home目录
UMASK 077 #用户家目录默认权限
USERGROUPS_ENAB yes #userdel删除用户时,是否删除用户的初始组
ENCRYPT_METHOD SHA512 #shadow文件的加密算法,默认是sha512
chage修改用户密码信息
chage [参数] 数值/日期 用户名
参数:
-m:密码可更改的最小天数。为0时代表任何时候都可以更改密码
-M:密码保持有效的最大天数
-W:用户密码到期前,提前收到警告信息的天数
-E:帐号到期的日期。过了这天,此帐号将不可用
-d:上一次更改的日期,为0表示强制在下次登录时更新密码
-I(大写i):停滞时期。如果一个密码已过期这么多天,那么这个账号不可用
-l(小写L):列出当前的设置,由非特权用户来确定他们的账号或密码何时过期
[root@localhost home]# chage -m 2 caoxiaoming
[root@localhost home]# cat /etc/shadow | grep caoxiaoming
caoxiaoming:!!:18599:2:99999:7:::
[root@localhost home]# chage -M 3 caoxiaoming
[root@localhost home]# cat /etc/shadow | grep caoxiaoming
caoxiaoming:!!:18599:2:3:7:::
[root@localhost home]# chage -W 4 caoxiaoming
[root@localhost home]# cat /etc/shadow | grep caoxiaoming
caoxiaoming:!!:18599:2:3:4:::
[root@localhost home]# chage -E 2020-12-04 caoxiaoming
[root@localhost home]# cat /etc/shadow | grep caoxiaoming
caoxiaoming:!!:18599:2:3:4::18600:
[root@localhost home]# chage -d 2020-11-04 wangzhibin
[root@localhost home]# cat /etc/shadow | grep caoxiaoming
caoxiaoming:!!:18599:2:3:4::18600:
[root@localhost home]# chage -I 10 wangzhibin
[root@localhost home]# cat /etc/shadow | grep caoxiaoming
caoxiaoming:!!:18599:2:3:4::18600:
[root@localhost home]# chage -l wangzhibin
Last password change : Nov 04, 2020
Password expires : Nov 07, 2020
Password inactive : Nov 17, 2020
Account expires : never
Minimum number of days between password change : 2
Maximum number of days between password change : 3
Number of days of warning before password expires : 20
查看用户相关命令
id 用户名
查看用户和组的信息
[root@localhost home]# id qiyongkang
uid=1117(qiyongkang) gid=1117(qiyongkang) groups=1117(qiyongkang),1114(wangzhibin),1115(caoxiaoming)
whoami
查看当前登录用户
[root@localhost home]# whoami
root
who
查看目前登录系统的用户信息
[root@localhost home]# who
root :0 2020-12-03 14:11 (:0)
root pts/0 2020-12-03 14:11 (192.168.234.1)
root pts/1 2020-12-03 15:58 (192.168.234.1)
w
查看已经登录的用户列表
[root@localhost home]# w
17:03:58 up 3:01, 3 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root :0 :0 14:11 ?xdm? 2:11 0.84s /usr/libexec/gn
root pts/0 192.168.234.1 14:11 18:46 1.06s 1.06s -bash
root pts/1 192.168.234.1 15:58 6.00s 0.28s 0.00s w
users
查看当前登录系统的所有用户的用户列表
[root@localhost home]# users
root root root
修改用户信息
usermod [参数] 用户名
参数:
-u:UID
-d:家目录
-g:初始组
-G:附加组
-s:登录shell
-L:锁定
原始信息
[root@localhost home]# useradd niaoshi
[root@localhost home]# id niaoshi
uid=1118(niaoshi) gid=1118(niaoshi) groups=1118(niaoshi)
修改UID
将用户niaoshi的UID改为2000
[root@localhost home]# usermod -u 2000 niaoshi
[root@localhost home]# id niaoshi
uid=2000(niaoshi) gid=1118(niaoshi) groups=1118(niaoshi)
修改shell
将用户niaoshi的shell改为/sbin/nologin
[root@localhost home]# usermod -s /sbin/nologin niaoshi
[root@localhost home]# cat /etc/passwd | grep niaoshi
niaoshi:x:2000:1118::/home/niaoshi:/sbin/nologin
修改家目录
将用户niaoshi的家目录改为/home/test
-m 选项会自动创建新目录并且移到内容到新目录里
[root@localhost test]# usermod -m -d /home/test niaoshi
[root@localhost home]# cat /etc/passwd | grep niaoshi
niaoshi:x:2000:1118::/home/test:/sbin/nologin
添加说明信息
给用户添加ceshi说明信息
[root@localhost home]# usermod -c "ceshi" niaoshi

浙公网安备 33010602011771号