SuSE Linux 15 SP5下sudo切换用户执行ulimit -c unlimited失败
解决思路
1. 检查sudo的PAM与环境配置
- 查看
/etc/pam.d/sudo文件,确认是否包含session required pam_limits.so行。如果缺失,添加该行后重启sudo服务,确保sudo切换用户时加载limits.conf的配置。 - sudo默认会重置环境变量,可尝试在sudo命令中添加
-E参数保留原有环境:sudo -E -u sisis -g sisis /tmp/ulimit.sh,注意需确保jenkins用户的环境无安全风险。
2. 验证sudo切换后的实际限制
- 先执行命令确认切换用户后的core限制状态:
sudo -u sisis -g sisis sh -c 'ulimit -c',如果输出为0,说明limits.conf的配置未被应用,需重点排查PAM或sudoers的配置问题。
3. 调整脚本执行环境
- 检查脚本的shebang(如
#!/bin/sh)是否与sisis用户默认shell一致,若不一致可修改为对应shell(如#!/bin/bash)。 - 非交互式shell可能不会加载用户配置,可在脚本开头添加
source ~sisis/.bashrc或source /etc/profile,确保加载完整的环境与限制配置。
4. 通过sudoers直接配置限制
- 在
/etc/sudoers或/etc/sudoers.d/下的文件中添加规则:Defaults:sisis rlimit_core=unlimited,让sudo切换到sisis时自动应用core文件大小无限制的配置。
5. 排查安全模块限制
- SuSE默认启用AppArmor,可临时停止服务测试:
systemctl stop apparmor,若问题解决,需调整AppArmor对sudo或sisis进程的规则,允许修改core限制。
内容的提问来源于stack exchange,提问作者guru
相关产品推荐
相关产品推荐

