【一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义】
**开源地址:https://docs.qq.com/doc/DSmxTbFJ1cmN1R2dB **
1)将非登录用户的 Shell 设为 /sbin/nologin
(/sbin/nologin
:禁止终端登录)
[root@localhost ~]# grep “/sbin/nologin$” /etc/passwd | wc -l
[root@localhost ~]# grep “/sbin/nologin$” /etc/passwd | awk -F: ‘{print $1}’ > nologin.txt
[root@localhost ~]# cat nologin.txt
2)锁定长期不使用的账号(例如一些用户长期不使用,但不确认是否删除)
[root@localhost ~]# useradd zhangsan
[root@localhost ~]# echo “123123” | passwd --stdin zhangsan
[root@localhost ~]# usermod -L zhangsan
[root@localhost ~]# passwd -S zhangsan
[root@localhost ~]# usermod -U zhangsan
[root@localhost ~]# passwd -S zhangsan
3)锁定账号文件 /etc/passwd
/etc/shadow
- 例如:服务器账户已固定,不再进行更改。可锁定
[root@localhost ~]# chattr +i /etc/passwd /etc/shadow #锁定
[root@localhost ~]# lsattr /etc/passwd /etc/shadow #查看文件状态
[root@localhost ~]# useradd wangwu #创建用户测试
[root@localhost ~]# chattr -i /etc/passwd /etc/shadow #解锁
[root@localhost ~]# useradd wanguw #再次创建用户测试
[root@localhost ~]# echo “123123” | passwd --stdin wangwu
1)设置密码有效期(默认天数为 99999)
- 适用于新建用户,密码有效期 30 天:
[root@localhost ~]# vim /etc/login.defs
找到:
PASS_MAX_DAYS 99999
改为:
PASS_MAX_DAYS 30
- 适用于已有用户:
[root@localhost ~]# chage -M 30 zhangsan
2)强制在下次登录时更改密码
[root@localhost ~]# chage -d 0 zhangsan
重新打开一个终端使用 zhangsan 用户登录
1)减少记录的命令条数(默认条数是 1000 条)
[root@localhost ~]# vim /etc/profile
找到:
HISTSIZE=1000
改为:
HISTSIZE=5
[root@localhost ~]# source /etc/profile #执行脚本
[root@localhost ~]# history #查看历史记录
2)终端自动注销
- 在 Bash 终端环境中可以设置一个限制超时时间,当超过指定时间没有任何操作自动注销终端。
[root@localhost ~]# echo “export TMOUT=30” >> ~/.bash_profile #终端30秒不做任何操作将自动注销
[root@localhost ~]# source ~/.bash_profile #使其生效
[root@localhost ~]# 等待输入超时:自动登出
- 验证完后,将终端自动注销时间改为 600 秒。
============================================================================
1)用途及用法
- 用途:Substitute User,切换用户。
格式:su - 目标用户 # 带 - 选项表示将使用目标用户的登录 Shell 环境
2)密码验证
-
root
-->
任意用户, 不验证密码。 -
普通用户
-->
其他用户,验证目标用户的密码。
[root@localhost ~]# whoami # 查看当前登录用户名
3)限制使用 Su 命令的用户
- 默认都可以使用 Su 命令,防止密码穷举危险,只允许少量用户使用。
启用 pam_wheel
认证模块:
[root@localhost ~]# vim /etc/pam.d/su
#%PAM-1.0
auth sufficient pam_rootok.so # 默认就有
auth required pam_wheel.so use_uid # 将前面 # 去掉
[root@localhost ~]# grep wheel /etc/group
[root@localhost ~]# su - zhangsan
[zhangsan@localhost ~]$ su -
[zhangsan@localhost ~]$ exit
不能切换到 root 用户,需要将用户 tom
加入到 wheel
组中:
[root@localhost ~]# gpasswd -a ajbn wheel
[root@localhost ~]# su - ajbn
[zhangsan@localhost ~]$ su -
4)查看 Su 操作记录
- 安全日志文件:
/var/log/secure
[root@localhost ~]# tail /var/log/secure
5)Su 命令的缺点
- 知道 root 密码的用户越少越安全。
sudo
:普通用户拥有一部分管理权限,又不需要知道 root 密码。
1)Sudo 命令的用途及用法
- 用途:以其他用户身份(如 root)执行授权的命令。
格式:sudo 执行的授权命令
2)配置 Sudo 授权 /etc/sudoers
- 因为该文件的默认权限为 440,所以在编辑(
visudo
或vi /etc/sudoers
)完后需在输入模式中使用w!
保存。
记录格式:用户 主机名=命令程序列表
-
用户:用户名或
%组名
(组内所有用户) -
主机名:一般为 localhost 或实际主机名。
-
命令列表:命令的绝对路径,多命令用
,
号分割。
分别使用 zhangsan 用户和 wangwu 用户进行测试:
[root@localhost ~]# su - wangwu
[wangwu@localhost ~]$ sudo /bin/df -hT | grep ‘/$’
[wangwu@localhost ~]$ exit
[root@localhost ~]# su - zhangsan
[zhangsan@localhost ~]$ sudo /bin/df -hT | grep ‘/$’
[zhangsan@localhost ~]$ sudo -l # 查看用户对应权限
使 wheel 组成员不需验证密码即可执行任何命令:
[root@localhost ~]# vim /etc/sudoers
将:
%wheel ALL=(ALL) NOPASSWD: ALL
改为:
%wheel ALL=(ALL) NOPASSWD: ALL
使 wangwu 可使用 df
命令:
wamgwu localhost=/bin/df # 加上这个表示可以执行 /bin/df 命令