加固linux新用户默认shell环境的核心是同步管控/etc/skel模板、useradd行为及pam全局策略:锁死skel权限为755且属主root,精简保留.bashrc/.bash_logout/.profile并设umask 027;通过useradd -d或adduser.conf强制安全shell与模板路径;配置pam_pwquality.so密码复杂度、pam_tally2账户锁定及tmout超时登出。

新手配置Linux系统账户的默认Shell环境及权限加固,核心是让每个新用户从创建那一刻起就处于安全、可控、最小权限的状态。这不是装完系统点几下就能完成的事,而是要同时管好模板(/etc/skel)、创建行为(useradd配置)和全局策略(PAM、密码规则等)三方面。
一、先锁死账户模板目录 /etc/skel
这是所有新用户的“出生地”,它一旦被篡改,所有后续用户都会继承风险。
- 检查权限:运行
ls -ld /etc/skel,确认输出为drwxr-xr-x 2 root root ... /etc/skel;如果不是,立即修复:sudo chown root:root /etc/skel && sudo chmod 755 /etc/skel - 清空无关文件:删除
.bash_history、.vimrc、.ssh/等预置项——这些不是必需的,反而可能带漏洞或泄露信息 - 只保留三个精简文件:
•.bashrc:开头加set -o ignoreeof防误退出,不加载远程脚本
•.bash_logout:仅含clear或留空
•.profile:设置umask 027(新建文件默认权限640,目录750),PATH仅包含/usr/local/bin:/usr/bin:/bin - 所有文件属主必须是
root,权限统一设为644(.bashrc不需要可执行位)
二、统一新用户创建行为
光改模板不够,还要确保 useradd 命令按你设定的方式工作。
- 查看当前默认配置:
RHEL/CentOS系:运行useradd -D
Debian/Ubuntu系:运行cat /etc/adduser.conf | grep -E "(DSHELL|SKEL|CREATE_HOME)" - 强制指定安全Shell:
RHEL/CentOS:sudo useradd -D -s /bin/bash
Debian/Ubuntu:编辑/etc/adduser.conf,确保DSHELL="/bin/bash"且该shell在/etc/shells中 - 明确模板路径:
RHEL/CentOS:执行sudo useradd -D -K SKEL=/etc/skel
Debian/Ubuntu:确保SKEL="/etc/skel"未被注释 - 禁用本地邮件池(减少攻击面):
RHEL/CentOS:sudo useradd -D -K CREATE_MAIL_SPOOL=no
Debian/Ubuntu:在/etc/adduser.conf中设CREATE_MAIL_SPOOL=false
三、用PAM和系统参数固化基础安全
这部分决定用户登录后的行为是否受控,比如密码强度、失败锁定、超时退出等。
- 设置密码复杂度(以RHEL/CentOS为例):
编辑/etc/pam.d/system-auth,找到pam_pwquality.so行,改为:password requisite pam_pwquality.so try_first_pass retry=3 minlen=8 dcredit=-1 ucredit=-1 lcredit=-1 ocredit=-1 difok=3
(要求8位以上,含大小写字母、数字、特殊字符各至少1个,且与旧密码至少3处不同) - 启用账户锁定机制:
在/etc/pam.d/sshd和/etc/pam.d/system-auth中添加:auth [default=die] pam_tally2.so deny=3 unlock_time=300 even_deny_root root_unlock_time=600
表示普通用户输错3次密码锁定5分钟,root输错3次锁定10分钟 - 限制会话超时:
编辑/etc/profile,末尾追加:export TMOUT=900(15分钟无操作自动登出)export HISTSIZE=100(命令历史最多保存100条) - 禁止root远程登录:
编辑/etc/ssh/sshd_config,确保PermitRootLogin no,然后重启服务:sudo systemctl restart sshd
四、验证与持续维护
加固不是一次性的动作,而是一个闭环。
- 创建测试用户验证:
sudo useradd -m -c "test user" test01 && sudo passwd test01
切换过去,检查umask是否为0027、HISTSIZE是否生效、~/.bashrc是否干净 - 定期复查:
每次系统更新、部署新镜像前,重新运行ls -ld /etc/skel和useradd -D核对 - 锁定关键配置文件(可选但推荐):
sudo chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow
后续如需新增用户,先chattr -i解锁,操作完再锁上











