pam_limits:不允许 sshd 操作

pam_limits:不允许 sshd 操作

Debian 8.0,pam 1.1.8-3.1,sshd 1:6.7p1-5。

我正在尝试永久增加打开文件的最大数量。

/etc/pam.d/有:

/etc/pam.d# grep pam_limits.so *
atd:session    required   pam_limits.so
common-session:session required pam_limits.so
common-session-noninteractive:session required pam_limits.so
cron:session    required   pam_limits.so
login:session    required   pam_limits.so
runuser:session         required        pam_limits.so
sshd:session    required     pam_limits.so
su:session    required   pam_limits.so         

/etc/security/limits.conf

*       hard    nofile  20000500
*       soft    nofile  20000500         

/etc/ssh/sshd_config

UsePAM yes

/etc/sysctl.conf

fs.file-max = 20000500

我重新启动了操作系统并且看到的/var/log/auth.log是:

sshd[807]: pam_limits(sshd:session): 无法将“nofile”的限制设置为 soft=20000500、hard=20000500: 操作不允许;uid=0,euid=0

尝试做同样ulimit -Hn 20000500的事情root

bash:ulimit:打开文件:无法修改限制:操作不允许

通过反复试验,我找到了可以给出的最大数字ulimit -Hn:1048576。为什么是这个数字,它又是从哪里来的?

PS 当它显示“不允许操作”时,我怎么知道是谁决定的?我假设 pam_limits.so 中的代码正在尝试设置限制,但实际上是谁拒绝的?是 PAM 系统可能接管操作系统中的整个安全系统吗?

答案1

不推荐,我想说,你不能那样做。如果你正在寻找这个其他答案。

当 /etc/security/limits.conf 中的 nofile 设置为 unlimited 时无法登录

man proc

   /proc/sys/fs/file-max
          This file defines a system-wide limit on the number of open files for all processes.  (See also setrlimit(2), which can be used by a process to set the per-
          process  limit,  RLIMIT_NOFILE,  on the number of files it may open.)  If you get lots of error messages in the kernel log about running out of file handles
          (look for "VFS: file-max limit <number> reached"), try increasing this value:

              echo 100000 > /proc/sys/fs/file-max

          The kernel constant NR_OPEN imposes an upper limit on the value that may be placed in file-max.

          If you increase /proc/sys/fs/file-max, be sure to increase /proc/sys/fs/inode-max to 3-4 times the new value of /proc/sys/fs/file-max, or you will  run  out
          of inodes.

          Privileged processes (CAP_SYS_ADMIN) can override the file-max limit.

ulimit是对一个用户的限制,不是正常情况下在全局设置中设置相同的数字,就像一个用户可以使用系统中的所有文件一样。

答案2

无需硬编码,只需通过 fs.nr_open=5242880 设置 sysctl_nr_open 并重新执行 sysctl -p/login,您的限制现在是 5m。file-max 需要是相同的值。

相关内容