Linux账户安全与sudo授权
账号安全控制
常用命令
更改用户登录shell,禁止用户登录系统
usermod -s /sbin/nologin 用户名
usermod -s /bin/false 用户名
锁定账号
usermod -L 用户名 锁定用户账户 (在选用户界面隐藏)
passwd -l 用户名 锁定用户密码
passwd -S 用户名 查看用户状态
清空账号密码
passwd -d 用户名 清空账户密码
chattr 锁定账户文件
chattr 可用锁定账户文件/etc/passwd 、账户密码文件/etc/shadow ,
使得无法创建新用户、无法修改密码
chattr +i /etc/passwd /etc/shadow 锁定文件
chattr -i /etc/passwd /etc/shadow 解锁文件
lsattr /etc/passwd /etc/shadow 查看文件状态
由这两个图可用得出,
锁定文件 | 新建用户 | 更改密码 |
---|---|---|
/etc/passwd | 禁止 | 允许 |
/etc/shadow | 禁止 | 禁止 |
新建用户时,需要在账户文件中添加内容,再将新用户密码信息添加到密码文件中
一旦禁止账户文件,就无法新建用户,但仍可以更改其他用户的密码;
禁止密码文件后,不但不能更改密码,还无法新建用户,因为新用户的密码信息无法存到密码文件中
chage 密码安全控制
chage -M 日期 用户 设置用户密码有效期
chage -E 年-月-日 设置过期日期
如果不想每次新建用户都要进行设置更改 可以进入
/etc/login.defs
密码配置文件进行修改
里面还可以看到GID和UID的最大最小值,权限默认掩码等
命令历史限制
在 Linux 里可以使用 history命令查看用户的所有历史操作,同时 shell 命令操作记录默认保存在用户目录的.bash_history 文件中
[root@hbh ~]# history
1 cd
2 cd /etc/home
3 cd /etc/hosthome
……
639 vim /etc/login.defs
640 histroy
641 history
echo $HISTSIZE命令查看当前默认的记录数量
可以在 /etc//profile 文件中修改默认记录数量
history -c 命令只可以临时清除记录,重启后记录还在
重启后
我们可以使用echo ’ ’ > ~/.bash_history 清空存放命令操作记录的文件
更是可以将改命令 存放到 ~/.bashrc 中,使得登陆时自动清空历史命令
su与sudo
su 限制普通用户使用su
su 切换用户
su - 用户 切换到目标用户的家目录
由root切换到其他用户时,不用验证密码
而由普通用户切换到其他用户时,需要验证目标用户的密码
而这样就有了一定风险
su使得每个用户都具有反复尝试其他用户的登陆密码的机会,若是root用户,则风险更大
所以需要加强su命令的使用控制,可以借助PAM认证模块,仅允许极个别指定用户可使用su命令进行切换
可以在 /etc/pam.d/su 文件里设置禁止普通用户使用su命令
auth sufficient pam_rootok.so
#auth required pam_wheel.so use_uid
重点看这两行内容
开头无#,则表示开启
有#,则表示仅注释,不启动
当前状态为默认状态,2开启,6注释
状态 | 含义 |
---|---|
2开启,6注释,默认状态 | 所有用户之间都可以使用su命令进行切换;root到普通用户无需密码 |
2开启,6开启 | 只有root和wheel组内的用户可以使用su命令 |
2注释,6开启 | 仅wheel组内用户使用su |
2注释,6注释 | 所有用户都能使用su命令,root到普通用户需要输入密码 |
第2行的pam_rootok.so模块的主要作用是使uid为0的用户,即 root用户能够直接通过认证而不用输入密码
示例
现在有两个普通用户buyaojin,shiyan,且都设置了密码
限制成功
sudo 授权命令
作用:
以其他用户身份(如root)来执行授权的命令
visudo
或
vim /etc/sudoers
在修改 /etc/sudoers 文件中,因为该文件的权限是 440,只读权限,所以在保存时,需要 wq! 强制保存
编写格式
用户 主机名=自定义命令程序列表
用户 主机名=(用户) 自定义命令程序列表
用户:直接授权指定的用户名,或采用“%组名”的形式(授权一个组的所有用户)
主机名:使用此规则的主机名,没配置过主机名时可用localhost,有配过主机名则用实际的主机名,ALL则代表所有主机
(用户):用户能够以何种身份来执行命令。此项可省略,缺省时以root用户的身份来运行命令
命令程序列表:允许授权的用户通过sudo方式执行的特权命令,需填写命令程序的完整路径,多个命令之间以逗号“,”进行分隔;
ALL则代表系统中的所有命令
示例
也可以在/etc/sudoers中,启用如下行
表示在wheel组中的用户在执行sudo命令时,无需输入密码即可执行