银河麒麟系统中普通用户需同步调高ulimit -u至65535和kernel.pid_max至196608,并为自身systemd服务配置limitnproc,否则fork会因资源不足报“resource temporarily unavailable”;还需通过user=指定运行身份、禁用pkill -u *、限制kill命令acl权限来安全隔离进程管理。

银河麒麟系统中普通用户需管理自身启动的进程(如Java服务、Python后台脚本),但默认受ulimit限制无法查看或终止其他用户进程,也常因nproc超限导致fork失败,必须同步调整资源上限与权限边界。
提升普通用户的进程数限制
执行
第一步:用root权限编辑limits配置文件:sudo nano /etc/security/limits.conf。
第二步:在文件末尾追加两行(通配所有用户):
* soft nproc 65535
* hard nproc 65535
第三步:确认PAM模块已启用——执行grep pam_limits.so /etc/pam.d/common-session,若无输出,需手动在该文件末尾添加:
session required pam_limits.so
第四步:退出当前会话,重新SSH登录或console login,再执行
让普通用户能安全查看和管理自身进程
默认情况下,普通用户执行
方法一:启动时显式指定用户身份
在systemd服务中使用/etc/systemd/system/myapp.service:
[Service]
Type=simple
User=myuser
Group=myuser
ExecStart=/home/myuser/bin/start.sh
Restart=always
启用后执行sudo systemctl daemon-reload && sudo systemctl enable --now myapp,该进程将严格以myuser身份运行,myuser可直接
方法二:避免使用root启动再降权的错误路径
很多Shell脚本习惯先用sudo启动再su -c切换用户,这会导致进程PPID残留为root,
禁止普通用户误操作他人进程
无需额外封堵——Linux内核默认禁止非root用户向非同UID进程发送信号,这是硬性隔离。但需防止用户通过
执行命令:sudo chmod 750 /usr/bin/kill,再运行sudo setfacl -m u:root:rx /usr/bin/kill,最后执行sudo setfacl -m u:myuser:rx /usr/bin/kill。
此时只有root和myuser能执行kill命令,且myuser只能向自身进程发信号——因为kill本身不校验目标进程UID,真正拦截发生在内核send_signal()环节,ACL只是缩小攻击面的第一道门。











