一、账号安全
1.1系统帐号清理
#查看/sbin/nologin结尾的文件并统计
[root@root@localhost ~]# grep '/sbin/nologin$' /etc/passwd |wc -l
40
#查看apache登录的shell
[root@root@localhost ~]# grep 'apache' /etc/passwd
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
#改变apache的登录的shell
[root@root@localhost ~]# usermod -s /sbin/bash apache
#查看更改结果
[root@root@localhost ~]# grep '/sbin/bash$' /etc/passwd
apache:x:48:48:Apache:/usr/share/httpd:/sbin/bash
1.1.1锁定账户和解锁账户
1.usermod -L 和 usermod -U
#锁定xiewei账号
[root@root@localhost ~]# usermod -L xiewei
#查看谢伟账号
[root@root@localhost ~]# passwd -S xiewei
xiewei LK 1969-12-30 0 99999 7 -1 (Password locked.)
#解锁谢伟账号
[root@root@localhost ~]# usermod -U xiewei
#查看谢伟账号状态
[root@root@localhost ~]# passwd -S xiewei
xiewei PS 1969-12-30 0 99999 7 -1 (Password set, SHA512 crypt.)
2.passwd -l 和 passwd -u
#先查看状态
[root@root@localhost ~]# passwd -S xiewei
xiewei PS 1969-12-30 0 99999 7 -1 (Password set, SHA512 crypt.)
#锁账户
[root@root@localhost ~]# passwd -l xiewei
Locking password for user xiewei.
passwd: Success
#查看账户
[root@root@localhost ~]# passwd -S xiewei
xiewei LK 1969-12-30 0 99999 7 -1 (Password locked.)
#解锁账户
[root@root@localhost ~]# passwd -u xiewei
Unlocking password for user xiewei.
passwd: Success
#查看账户状态
[root@root@localhost ~]# passwd -S xiewei
xiewei PS 1969-12-30 0 99999 7 -1 (Password set, SHA512 crypt.)
3.usermod 和 passwd 两个锁账户的命令比较
①passwd -l
[root@root@localhost ~]# passwd -l xiewei
Locking password for user xiewei.
passwd: Success
#查看passwd -l结果
[root@root@localhost ~]# grep 'xiewei' /etc/passwd
xiewei:x:1000:1000:xiewei:/home/xiewei:/bin/bash
xiewei1:x:1005:1005::/home/xiewei1:/bin/bash
[root@root@localhost ~]# grep 'xiewei' /etc/shadow
xiewei:!!$6$cE/PcSfzNmXqILGt$3x7ix5gmYqeqwkvEuqVq6cllhN3sxZco4Ez1L5E6i0DjssRC9gBp/Ds/0YqOgzYLJdsdvlhAAaVY5EE2h1BAy.::0:99999:7:::
xiewei1:$6$Y0MLY/PCRfQ/BZUN$rjGc5tm9njGip2L5zAi8LYAyz5/pEgQzB6kr/0w41uhA3L1dpS.xsGrUtmJV05P7mnG816l/lZ1OcDkRKONtf0:19894:0:99999:7:::
②usermod -l
[root@root@localhost ~]# usermod -L xiewei
[root@root@localhost ~]# ls
[root@root@localhost ~]# grep 'xiewei' /etc/shadow
xiewei:!$6$cE/PcSfzNmXqILGt$3x7ix5gmYqeqwkvEuqVq6cllhN3sxZco4Ez1L5E6i0DjssRC9gBp/Ds/0YqOgzYLJdsdvlhAAaVY5EE2h1BAy.::0:99999:7:::
xiewei1:$6$Y0MLY/PCRfQ/BZUN$rjGc5tm9njGip2L5zAi8LYAyz5/pEgQzB6kr/0w41uhA3L1dpS.xsGrUtmJV05P7mnG816l/lZ1OcDkRKONtf0:19894:0:99999:7:::
[root@root@localhost ~]# grep 'xiewei' /etc/passwd
xiewei:x:1000:1000:xiewei:/home/xiewei:/bin/bash
xiewei1:x:1005:1005::/home/xiewei1:/bin/bash
通过以上不难发现,/etcpasswd现实的结果都是一样的,在信息描述之间出现了一个xiewei,但是再shadow文件中。我们也不难看出,使用usermod命令后,passwd密码位前面只有一个“ !”号,而使用passwd命令后,passwd文件中密码位前面有两个"!!"。
但是两者锁定的严密性和效果基本相同。而且两者的解锁命令不可互调。
1.1.2删除账号
userdel -r 用户名
#查看并过滤有哪些xiewei账号
[root@root@localhost ~]# grep 'xiewei' /etc/passwd
xiewei:x:1000:1000:xiewei:/home/xiewei:/bin/bash
xiewei1:x:1005:1005::/home/xiewei1:/bin/bash
xiewei2:x:1006:1006::/home/xiewei2:/bin/bash
xiewei3:x:1007:1007::/home/xiewei3:/bin/bash
xiewei4:x:1008:1008::/home/xiewei4:/bin/bash
xiewei5:x:1009:1009::/home/xiewei5:/bin/bash
xiewei6:x:1010:1010::/home/xiewei6:/bin/bash
xiewei7:x:1011:1011::/home/xiewei7:/bin/bash
xiewei8:x:1012:1012::/home/xiewei8:/bin/bash
xiewei9:x:1013:1013::/home/xiewei9:/bin/bash
xiewei10:x:1014:1014::/home/xiewei10:/bin/bash
xiewei11:x:1016:1016::/xiewei11/:/bin/bash
xiewei12:x:1017:1017::/xiewei12:/bin/bash
xiewei13:x:1018:1018::/xiewei13:/bin/bash
#删除账号
[root@root@localhost ~]# userdel -r xiewei13
#查看并过滤有哪些xiewei账号
[root@root@localhost ~]# grep 'xiewei' /etc/passwd
xiewei:x:1000:1000:xiewei:/home/xiewei:/bin/bash
xiewei1:x:1005:1005::/home/xiewei1:/bin/bash
xiewei2:x:1006:1006::/home/xiewei2:/bin/bash
xiewei3:x:1007:1007::/home/xiewei3:/bin/bash
xiewei4:x:1008:1008::/home/xiewei4:/bin/bash
xiewei5:x:1009:1009::/home/xiewei5:/bin/bash
xiewei6:x:1010:1010::/home/xiewei6:/bin/bash
xiewei7:x:1011:1011::/home/xiewei7:/bin/bash
xiewei8:x:1012:1012::/home/xiewei8:/bin/bash
xiewei9:x:1013:1013::/home/xiewei9:/bin/bash
xiewei10:x:1014:1014::/home/xiewei10:/bin/bash
xiewei11:x:1016:1016::/xiewei11/:/bin/bash
xiewei12:x:1017:1017::/xiewei12:/bin/bash
注意: 加-r选项和不加-r选项是有区别的
userdel 用户名
:仅删除用户账户,保留用户的所有文件。userdel -r 用户名
:删除用户账户,并删除用户的主目录和邮件目录,连同所有内容一起删除。
且要注意用户在删除时候没有 正在运行的进行,否则可能会操作失败
1.2密码安全控制
1.2.1修改密码配置文件
vim /etc/login.defs
PASS_MAX_DAYS 99999 #设置密码有效期99999天。 默认99999天
PASS_MIN_DAYS 0 #表示自上次修改密码以来,最少隔多少天后用户才能再次修改密码,默认值是 0
PASS_MIN_LEN 5 #密码最小长度,对于root无效 18位包含密码复杂性 大写 、小写、字符、数字
注解:指定密码的最小长度,默认不小于 5 位,但是现在用户登录时验证已经被 PAM 模块取代,所以这个选项并不生效。
PASS_WARN_AGE 7 #指定在密码到期前多少天,系统就开始通过用户密码即将到期,默认为 7 天。
1.2.2更改密码
[xiewei@root@localhost ~]$ passwd
Changing password for user xiewei.
Changing password for xiewei.
(current) UNIX password:
New password:
BAD PASSWORD: The password is too similar to the old one
①:不能太相似,这里设置的新密码是1234567,它则提示太相似(原密码123456)
New password:
BAD PASSWORD: The password is shorter than 8 characters
②:不能低于8位(root不受限制),这里设置了abcde
[xiewei@root@localhost ~]$ passwd
Changing password for user xiewei.
Changing password for xiewei.
(current) UNIX password:
passwd: Authentication token manipulation error
③:密码不能为空
[xiewei@root@localhost ~]$ passwd
Changing password for user xiewei.
Changing password for xiewei.
(current) UNIX password:
passwd: Authentication token manipulation error
④:密码不能设置太简单
1.2.3 查看用户密码有效期
用于查看指定用户账户的密码有效期信息。它显示了与用户密码相关的各种设置,包括密码上次更改的日期、密码过期的时间、密码最小/最大有效期等。
chage -l 用户名
[xiewei@root@localhost ~]$ chage -l xiewei
Last password change : never
Password expires : never
Password inactive : never
Account expires : never
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
1.Last password change:
- 说明:最后一次更改密码的日期。
- 值:
never
- 解释:密码从未更改过。这意味着自账户创建以来,用户从未修改过密码。
2.Password expires:
- 说明:密码过期的日期。
- 值:
never
- 解释:密码永不过期。用户可以一直使用当前密码,不需要定期更改。
3.Password inactive:
- 说明:密码失效的日期。
- 值:
never
- 解释:密码永不失效。即使用户长时间不登录,密码也不会被自动锁定。
4.Account expires:
- 说明:账户过期的日期。
- 值:
never
- 解释:账户永不过期。用户可以一直使用这个账户,不会因为过期而被锁定或禁用。
5.Minimum number of days between password change:
- 说明:两次密码更改之间的最小天数。
- 值:
0
- 解释:用户可以随时更改密码,没有任何限制。用户可以在同一天内多次修改密码。
6.Maximum number of days between password change:
- 说明:两次密码更改之间的最大天数。
- 值:
99999
- 解释:用户可以长达 99999 天(约 273 年)不更改密码。实际上,这意味着密码永不过期,因为这一期限极长。
7.Number of days of warning before password expires:
- 说明:密码过期前警告用户的天数。
- 值:
7
- 解释:如果设置了密码过期日期,系统会在密码过期前 7 天警告用户需要更改密码。然而,由于上述设置显示密码永不过期,因此这一警告不会实际触发。
1.3历史命令
历史命令可能会有隐私,比如密码什么的,所以我们要管理好我们的历史命令
history 查看历史命令
1.3.1临时清理历史命令
[root@root@localhost ~]# history -c
[root@root@localhost ~]# history
35 history
重启后可恢复,或者使用history -r
我们的历史命令会保存在一个文件中,history -c只能临时清理,重启后还会将该文件中的内容加载到history命令中。history -r这个命令,则是将该文件中内容重新都取到history中。
简单点说
- 在当前 shell 会话中,命令历史记录保存在内存中。可以使用
history
命令查看这些历史记录。 - 使用
history -w
命令可以强制将当前内存中的历史记录写入~/.bash_history
文件。
history
命令展示的是当前 shell 会话中的命令历史记录,包括内存中的未写入文件的记录以及从 ~/.bash_history
文件中读取的记录。严格来说,这些内容不是缓存,而是内存中的记录和磁盘文件的结合。
history -c && history -w
则会将shell 会话中的命令历史记录,还有文件中的命令历史记录清除
拓展
关于环境变量的读取顺序:
用户登录 ->> 加载~/.bash_profile --> bash_profile中配置了首先是使~/.bashrc生效。.bash_profile”文件中的命令将在该用户每次登录时被执行。.bashrc”文件中的命令会在每次加载“/bin/bash。
# 清除历史命令
vim ~/.bashrc
# 添加以下内容
echo '' > ~/.bash_history
在~/.bash_profile
和 ~/.bashrc
中添加以上内容,就会开机自动删除历史命令
我们可以将history -c && history -w这个命令加入到配置文件中,使其开机加载时候自动生效。我们还可以在/etc/skel/.bash_logout文件中添加下面这行rm -f $HOME/.bash_history 。这样,当用户每次注销时,.bash_history文件都会被删除.