所有命令基于centos7系统
1.新建用户
#useradd testa
2.指定用户家目录
# useradd test2 -d /tmp/
3.指定用户shell
[root@localhost ~]# useradd test3 -d /tmp/
...
[root@localhost ~]# id test3
uid=1004(test3) gid=1004(test3) groups=1004(test3)
4.设置用户不可登录
[root@localhost ~]# usermod -s /sbin/nologin test3
新建用户
# useradd -s /sbin/nologin test4
...
test4:x:1005:1005::/home/test4:/sbin/nologin
5.修改用户shell
[root@localhost ~]# usermod -s /bin/bash test3
[root@localhost ~]# cat /etc/passwd | grep test3
test3:x:1004:1004::/tmp/:/bin/bash
6.新建用户并指定过期时间
useradd -e '2019-01-20' test5
...
[root@localhost ~]# chage -l test5
Last password change : Jan 17, 2019
Password expires : never
Password inactive : never
Account expires : Jan 20, 2019
Minimum number of days between password change : 0
Maximum number of days between password change : 99999
Number of days of warning before password expires : 7
7.修改用户过期时间
usermod -e "2019-01-23 00:00:00" test5
...
[root@localhost ~]# chage -l test5
Last password change : Jan 17, 2019
Password expires : never
Password inactive : never
Account expires : Jan 23, 2019
Minimum number of days between password change : 0
Maximum number of days between password change : 99999
Number of days of warning before password expires : 7
8.锁定用户、解锁用户
usermod -L test5 #锁
usermod -U test5 #解
#锁
[root@localhost ~]# passwd -l test5
Locking password for user test5.
passwd: Success
#解锁
[root@localhost ~]# passwd -u test5
Unlocking password for user test5.
passwd: Success
9.修改用户密码
[root@localhost ~]# passwd test5
Changing password for user test5.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
10.修改自己的密码(不包括root用户)
[test5@localhost ~]$ passwd
Changing password for user test5.
Changing password for test5.
(current) UNIX password:
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
注需要遵守系统定义的密码规则
11.指定用户组
[root@localhost yum.repos.d]# useradd -g testg test6
[root@localhost yum.repos.d]# id test5
uid=1006(test5) gid=1007(testg) groups=1007(testg)
...
[root@localhost yum.repos.d]# useradd -G testg1,testg2 test7
[root@localhost yum.repos.d]# id test7
uid=1008(test7) gid=1010(test7) groups=1010(test7),1008(testg1),1009(testg2)
ps: -g 指定主组(primary group)
-G 指定组列表(supplementary Groups)多个组中间用逗号分隔
12.修改用户组
[root@localhost yum.repos.d]# usermod -g testg1 test7
[root@localhost yum.repos.d]# id test7
uid=1008(test7) gid=1008(testg1) groups=1008(testg1),1009(testg2)
...
[root@localhost yum.repos.d]# usermod -G testg1,testg2 test6
[root@localhost yum.repos.d]# id test6
uid=1007(test6) gid=1007(testg) groups=1007(testg),1008(testg1),1009(testg2)
ps: -g 指定主组(primary group)
-G 指定组列表(supplementary Groups)多个组中间用逗号分隔
13.指定用户uid
[root@localhost yum.repos.d]# useradd -u 1234 test8
[root@localhost yum.repos.d]# id test8
uid=1234(test8) gid=1234(test8) groups=1234(test8)
14.修改用户uid
[root@localhost yum.repos.d]# usermod -u 1235 test8
[root@localhost yum.repos.d]# id test8
uid=1235(test8) gid=1234(test8) groups=1234(test8)
15.切换用户身份
su - test8
16.新建用户不建立家目录
useradd -M test9
17.修改密码复杂度(密码质量)
两种实现方式:最小长度9,密码包含数字、大小写字母、特殊字符,都是基于pam_pwquality模块
a. 使用authconfig命令
authconfig
# authconfig --passminlen=9 --passminclass=1 --passmaxrepeat=0 --passmaxclassrepeat=0 --enablerequpper --enablereqlower --enablereqdigit --enablereqother --update
--passminlen=
--passminclass=
--passmaxrepeat=
--passmaxclassrepeat=
--enablereqlower 使能密码中至少包含一个小写字母
--disablereqlower 失能密码中至少包含一个小写字母
--enablerequpper 使能密码中至少包含一个大写字母
--disablerequpper 失能密码中至少包含一个大写字母
--enablereqdigit 使能密码中至少包含一个数字
--disablereqdigit 失能密码中至少包含一个数字
--enablereqother 使能密码中至少包含一个特殊字符
--disablereqother 失能密码中至少包含一个特殊字符
命令执行的结果是把指定的规则更新到/etc/security/pwquality.conf文件中。所以第二种方式就是直接修改该文件
b. 修改/etc/security/pwquality.conf
在文件中加入下列内容可达到与a中命令实现的同样的效果
minlen = 9 #最小长度
minclass = 1 #最小字符长度
maxrepeat = 0 #不启用检测
maxclassrepeat = 0 #不检测
lcredit = -1 #小写字母
ucredit = -1 #大写字母
dcredit = -1 #数字
ocredit = -1 #特殊字符
注: 当值为0时表示该项目的检测为disable
18.设置ssh远程用户最大失败次数
修改pam下的插件内容 /etc/pam.d/sshd
#通过ssh登录时调用的验证模块
在第一行后面增加
auth required pam_tally2.so deny=3 unlock_time=300
失败三次锁定,锁定300s后自动解锁
19.设置本地登录用户失败次数,锁定时间
同样需要pam_tally2模块
修改/etc/pam.d/login
第一行后增加
auth required pam_tally2.so deny=3 unlock_time=300
20.查看及清除用户登录失败次数
使用pam_tally2 命令,用法如下:
pam_tally2: [-f rooted-filename] [--file rooted-filename]
[-u username] [--user username]
[-r] [--reset[=n]] [--quiet]
[root@host-192-168-40-105 pam.d]# pam_tally2 -u test9
Login Failures Latest failure From
test9 4 01/22/19 10:31:37 192.168.40.109
...
清除
[root@host-192-168-40-105 pam.d]# pam_tally2 -u test9 --reset=0
Login Failures Latest failure From
test9 0
21.密码更详细的操作
chage选项与参数:
-l :列出该账号的详细密码参数;
-d :后面接日期或天数,修改 shadow 第三字段(最近一次更改密码的日期),格式 YYYY-MM-DD,
-E :后面接日期,修改 shadow 第八字段(账号失效日),格式 YYYY-MM-DD
-I :后面接天数,修改 shadow 第七字段(密码失效日期)
-m :后面接天数,修改 shadow 第四字段(密码最短保留天数)
-M :后面接天数,修改 shadow 第五字段(密码多久需要进行变更)
-W :后面接天数,修改 shadow 第六字段(密码过期前警告日期)
chage -d 0 test9 #d后面跟0,则最后一次修改的时间会被置为1970年1月1日,那这个密码则被认为是有问题的需要立即修改
实现下面几个效果
新用户首次登录需要修改密码:
chage -d 0 test9
用户三个月修改一次密码:
chage -M 90 test9
22.查看当前登录用户
[root@host-192-168-40-105 pam.d]# whoami
root
...
23.查看所有登录用户
[root@host-192-168-40-105 pam.d]# who
root pts/0 2019-01-21 17:25 (192.168.7.20)
test9 pts/1 2019-01-22 11:25 (192.168.40.109)
24.查看当前用户登录信息
[root@host-192-168-40-105 pam.d]# w
11:37:03 up 10 days, 18:17, 2 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.7.20 Mon17 7.00s 0.61s 0.61s -bash
test9 pts/1 192.168.40.109 11:25 11:25 0.00s 0.00s -bash
25. 踢掉当前登录的某个用户
[root@host-192-168-40-105 pam.d]# w
11:45:06 up 10 days, 18:25, 2 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.7.20 Mon17 2.00s 0.62s 0.62s -bash
test9 pts/1 192.168.40.109 11:25 19:28 0.00s 0.00s -bash
...
[root@host-192-168-40-105 pam.d]# pkill -kill -t pts/1
...
[root@host-192-168-40-105 pam.d]# w
11:45:29 up 10 days, 18:25, 1 user, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.7.20 Mon17 1.00s 0.63s 0.63s -bash