[root@localhost ~]# chattr +i /etc/passwd /etc/shadow ##锁定passwd与shadow两个与账户相关的配置文件,使其不能被修改
[root@localhost ~]# lsattr /etc/passwd /etc/shadow ##查看两个文件的属性(发现有i)
----i----------- /etc/passwd
----i----------- /etc/shadow
[root@localhost ~]# chattr -i /etc/passwd /etc/shadow ##解锁两个配置文件
[root@localhost ~]# lsattr /etc/passwd /etc/shadow ##再次查看配置文件属性(发现i没有了)
---------------- /etc/passwd
---------------- /etc/shadow
#假设现在我们有个用户名为tom的普通用户账号,使用passwd命令可以锁定其用户密码,使之不能从终端登录。
[root@localhost ~]# passwd -l tom
锁定用户 tom 的密码 。
passwd: 操作成功
[root@localhost ~]# cat /etc/shadow
tom:!!$6$tbEutCW6$GwmMKaxNK.r0gsuB0CNuhrnYpvykPm8/a.pUd2Kf4iuxF5ZB8vSXMDy8xiMey8f12kkn3f8tAg8hNw6RXSAFF/:18444:0:0:7:::
#查看shadow文件看到用户tom用户的后面有两个感叹号,说明该用户密码已经锁定不能登录
#现在希望解锁该用户,使用以下命令:
[root@localhost ~]# passwd -u tom
解锁用户 tom 的密码。
passwd: 操作成功
#还是刚才的tom用户,我们这次使用usermod命令来操作。
[root@localhost ~]# usermod -L tom
[root@localhost ~]# cat /etc/shadow
tom:!$6$tbEutCW6$GwmMKaxNK.r0gsuB0CNuhrnYpvykPm8/a.pUd2Kf4iuxF5ZB8vSXMDy8xiMey8f12kkn3f8tAg8hNw6RXSAFF/:18444:0:0:7:::
#我们发现tom用户后面有一个感叹号,这时候使用tom用户无法登陆
#现在希望解锁该用户,使用以下命令:
[root@localhost ~]# usermod -U tom
举一反三:那么,既然passwd -l 与usermod -L 都可以锁定用户,那么在解锁用passwd锁定的账户时使用usermod命令呢?下面我们来实验:
#先使用passwd锁定用户密码
[root@localhost ~]# passwd -l tom
#再使用usermod命令解锁
[root@localhost ~]# usermod -U tom
#解锁后尝试登陆tom,发现可以登录,说明passwd与usermod的锁定与解锁是可以通用的。
vi /etc/login.defs
#找到 PASS_MAX_DAYS 这一行,将后面的9999 改成30
PASS_MAX_DAYS 30 #现在密码最长有效期从永不过期变成了30天
密码有效期:chage -M 30 tom
[root@localhost ~]# chage -d 0 tom #当tom用户重新登录时会提示强制修改密码后才能登录
[root@localhost /]# vi /etc/shadow
tom:!!$6$Str1t6ks$hk6otJqguzoA.v5bhf6AB1bsueoDiLIK3.Gm7Un1.4iQo20idkRIWoAdRCaOIiHwPSPuhJgCldn1VqzqqSlBn.:18445:0:99999:7:::
[root@localhost /]# touch /etc/nologin ##在etc目录下创建一个空白的nologin文件
【注意】:主要该文件存在,只能root用户登陆!该方法经常用于在服务器维护时使用
【小技巧】:我们可以编辑nologin文件在其中添加内容,这样别人在使用终端登录时页面就会提示。
例:echo "系统正在维护中,请稍后再试!" > /etc/nologin
[root@localhost /]# vi /etc/profile ##编辑配置文件
找到 HISTSIZE 这一行,默认是1000,我们可以修改成自己想要的值,编辑完后保存并退出
[root@localhost /]# vi ~/.bash_logout ##编辑配置文件
##添加如下两行:
history -c
clear
在root用户家目录下编辑.bash_profile文件,在最下面添加一行命令即可
vi ~/.bash_profile
export TMOUT=600 ##单位是秒
source .bash_profile ##重新加载配置文件
用途及用法
用途:Subsitute User,切换用户
格式:su -目标用户
密码验证
root→任意用户,不验证密码
普通用户→其他用户,验证目标用户的密码
[root@localhost ~]# su - tom ##从root用户切换到tom账户
[tom@localhost ~]$ su - ##从tom账号切换回root
密码:
gpasswd -a tom wheel #将tom用户添加到wheel组
选项:-a:添加用户到组
默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户(如root)的登录密码,带来安全风险。为了加强su命令的使用控制,可借助PAM认证模块,只允许极个别用户使用su命令进行切换
是一种高效而且灵活便利的用户级别的认证方式
也是当前Linux服务器普遍使用的认证方式
ls /etc/pam.d | grep su ##查看su命令是否支持PAM认证
查看su的PAM配置文件:cat /etc/pam.d/su
每一行都是一个独立的认证过程
每一行可以区分为三个字段:认证类型、控制类型、PAM模块及参数
1、required验证失败时仍然继续,但返回Fail
2、requisite验证失败则立即结束整个验证过程,返回Fail
3、sufficien验证成果则立即返回,不再继续。否则忽略结果并继续
4、optional不用于验证,只显示信息(通常用于session类型)
图1
su命令的缺点
sudo命令的用途及用法
用途:以其他用户身份(如root)执行授权的命令
sudo 授权命令
visudo 或者 vi /etc/sudoers
记录格式:用户 主机名列表=命令程序列表
查看sudo操作记录
需启用Defaults logfile 配置
默认日志文件:/var/log/sudo
使用sudo机制提升权限
su命令的缺点
sudo命令的用途及用法
用途:以其他用户身份(如root)执行授权的命令
sudo 授权命令
配置sudi授权
visudo 或者 vi /etc/sudoers
记录格式:用户 主机名列表=命令程序列表
查看sudo操作记录
需启用Defaults logfile 配置
默认日志文件:/var/log/sudo
查询授权的sudo操作:sudo -l