/etc/security/limits.conf 不生效的主因是未启用 PAM limits 模块或服务未走 login session 流程systemd 服务需在 unit 文件中显式配置 LimitNOFILESSH 需确保 /etc/pam.d/sshd 含 session required pam_limits.so图形界面则依赖显示管理器配置或 systemd user/system.conf。Linux 系统中 /etc/security/limits.conf 不生效的常见原因直接改了 /etc/security/limits.conf 却发现 ulimit -n 还是老样子大概率是没启用 pam limits 模块或者服务没走 login session 流程。systemd 服务默认不读 limits.conf得在 service 文件里显式加 LimitNOFILE65536 等字段SSH 登录需确认 /etc/pam.d/sshd 包含 session required pam_limits.so图形界面如 GDM、SDDM往往绕过 PAM limits得查对应显示管理器文档或改 /etc/systemd/user.conf 和 /etc/systemd/system.conf 中的 DefaultLimitNOFILE用户登录后新开的 shell比如终端里再 bash继承的是父进程限制不是重新读配置 —— 必须登出重进或用 su - $USER 触发新 session密码策略配置/etc/pam.d/common-password 里的关键控制项Ubuntu/Debian 系统改密码强度核心在 common-password而不是 /etc/login.defs —— 后者只管新建用户的默认值不干预校验逻辑。pam_pwquality.so旧版叫 pam_cracklib.so才是执行长度、复杂度、历史记录检查的模块常用参数retry3输错三次才拒绝、minlen12最小长度、lcredit-1 ucredit-1 dcredit-1 ocredit-1至少含大小写字母、数字、特殊字符各一个注意顺序同一行多个 pam_pwquality.so 实例会叠加生效若已有 required 行新加的得设成 sufficient 或调整顺序否则可能被跳过改完立刻生效但只对后续 passwd 命令起作用不影响已存在的弱密码账户如何让非交互式环境如 cron、systemd timer也应用用户级 limitscron 任务和 systemd timer 默认以 minimal environment 运行完全不加载 limits.conf 或 shell profile所以 ulimit 总是系统默认值。cron在 crontab 条目开头手动加 ulimit -n 65536;或封装成脚本并在脚本第一行写 #!/bin/bash -l带 login flag 才读 profilesystemd timer必须在对应 .service 文件里配资源限制例如 LimitNOFILE65536、MemoryLimit512M不能指望 ~/.bashrc 或 /etc/profile注意systemd 的 Limit* 配置只作用于该 unit 的主进程及其直系子进程fork 出来的后台进程若 daemonize可能脱离 cgroup 控制 —— 得配合 Delegateyes 和 TasksMax 细粒度约束profile 文件加载顺序混乱导致设置被覆盖用户登录时/etc/profile、/etc/profile.d/*.sh、~/.profile、~/.bashrc 的执行顺序和条件很关键一处写错就白配。 Cleanup.pictures 智能移除图片中的物体、文本、污迹、人物或任何不想要的东西