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 需要是相同的值。