在 Linux系统中,除了用户手动创建的各种账号之外,还包括随系统或程序安装过程而生成的其他大量账号。除了超级用户
root 之外,其他大量账号只是用来维护系统运作、启动或保持服务进程,一般是不允许登录的,因此也称为非登录用户账号。
常见的非登录用户账号包括
bin、daemon、adm、lp、mail 等。为了确保系统安全,这些用户账号的登录Shell 通常是/sbin/nologin,表示禁止终端登录,应确保不被人为改动。
--------------------------------------------------------------------------------------------
root@localhost~]# grep "/sbin/nologin$" /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
......
//省略部分内容
--------------------------------------------------------------------------------------------
锁定用户
对于 Linux服务器中长期不用的用户账号,若无法确定是否应该删除,可以暂时将其锁定。例如,若要锁定、解锁名为
zhangsan 的用户账号,可以执行以下操作(passwd、usermod命令都可用来锁定、解锁账号)。
[root@localhost~]# usermod -L zhangsan //锁定账号
[root@localhost~]# passwd -S zhangsan //查看账号状态
zhangsan LK 2017-08-24 0 99999 7 -1 (密码已被锁定。)
[root@localhost~]# usermod -U zhangsan //解锁账号
[root@localhost~]# passwd -S zhangsan
zhangsan PS 2017-08-24 0 99999 7 -1 (密码已设置,使用 SHA512 算法。
锁定文件
如果服务器中的用户账号已经固定,不再进行更改,还可以采取锁定账号配置文件的方法。使用
chattr 命令,分别结合“+i”“-i”选项来锁定、解锁文件,使用 lsattr 命令可以查看文件锁定情况。
--------------------------------------------------------------------------------------------
[root@localhost~]# chattr +i /etc/passwd /etc/shadow //锁定文件
[root@localhost~]# lsattr /etc/passwd /etc/shadow //查看为锁定的状态
----i-----------/etc/passwd
----i-----------/etc/shadow
[root@localhost~]# chattr -i /etc/passwd /etc/shadow //解锁文件
[root@localhost~]# lsattr /etc/passwd /etc/shadow //查看为解锁的状态
----------------/etc/passwd
----------------/etc/shadow
--------------------------------------------------------------------------------------------
在账号文件被锁定的情况下,其内容将不允许变更,因此无法添加、删除账号,也不能
更改用户的密码、登录 Shell、宿主目录等属性信息。
--------------------------------------------------------------------------------------------
[root@localhost~]# chattr +i /etc/passwd /etc/shadow
[root@localhost~]# useradd billgate
useradd:无法打开/etc/passwd
--------------------------------------------------------------------------------------------
密码安全控制
执行以下操作可将密码的有效期设为 30 天(chage 命令用于设置密码时限)。
--------------------------------------------------------------------------------------------
[root@localhost~]# vi /etc/login.defs //适用于新建的用户
......
//省略部分内容
PASS_MAX_DAYS30
[root@localhost~]# chage -M 30 lisi //适用于已有的 lisi 用户
--------------------------------------------------------------------------------------------
用户下次登录时强制更改密码
在某些特殊情况下,如要求批量创建的用户初次登录时必须自设密码,根据安全规划统一要求所有用户更新密码等,可以由管理员执行强制策略,以便用户在下次登录时必须更改密码。例如,执行以下操作可强制要求用户zhangsan 下次登录时重设密码。
--------------------------------------------------------------------------------------------
[root@localhost~]# chage -d 0 zhangsan
Localhost
login: zhangsan
password:
Youare required to change your password immediately (root enforced)
Changingpassword for zhangsan.
(current)UNIX password:
New password:
Retype new password:
--------------------------------------------------------------------------------------------
命令历史、自动注销
命令历史
Bash终端环境中,历史命令的记录条数由变量 HISTSIZE 控制,默认为 1000 条。通过修改/etc/profile
文件中的 HISTSIZE 变量值,可以影响系统中的所有用户。
--------------------------------------------------------------------------------------------
[root@localhost ~]# vi /etc/profile //适用于新登录用户
HISTSIZE=200
[root@localhost~]# export HISTSIZE=200 //适用于当前用户
--------------------------------------------------------------------------------------------
除此之外,还可以修改用户宿主目录中的~/.bash_logout文件,添加清空历史命令的操作语句。这样,当用户退出已登录 Bash环境以后,所记录的历史命令将自动清空。
--------------------------------------------------------------------------------------------
[root@localhost~]# vi ~/.bash_logout
history
-c
clear
--------------------------------------------------------------------------------------------
自动注销
Bash终端环境中,还可以设置一个闲置超时时间,当超过指定的时间没有任何输入时即自动注销终端,这样可以有效避免当管理员不在时其他人员对服务器的误操作风险。闲置超时由变量TMOUT 来控制,默认单位为秒(s)
--------------------------------------------------------------------------------------------
[root@localhost~]# vi /etc/profile //适用于新登录用户
......
//省略部分内容
export
TMOUT=600
[root@localhost~]# export TMOUT=600 //适用于当前用户
--------------------------------------------------------------------------------------------
需要注意的是,当正在执行程序代码编译、修改系统配置等耗时较长的操作时,应避免设置 TMOUT变量。必要时可以执行“unset TMOUT”命令取消 TMOUT 变量设置。