为什么即使我是 root 也无法更改 /proc/sys/kernel/pty/max 的模式?

为什么即使我是 root 也无法更改 /proc/sys/kernel/pty/max 的模式?

由于pty是有限的,我想修改 的内容/proc/sys/kernel/pty/max。max 中原来的值是 4096,现在我想将其修改为 10000。

[root@home pty]# pwd
/proc/sys/kernel/pty
[root@home pty]# ls -lh
total 0
-rw-r--r-- 1 root root 0 Aug 13 11:24 max
-r--r--r-- 1 root root 0 Aug 13 11:24 nr
vim max

我直接使用 root 编辑 max 文件,但失败了。我:w!在 vim 中使用,但随后我看到以下图片:

然后我直接使用 root 编辑 max 文件,但失败了,

所以我首先尝试chmod最大化,但也失败了:

[root@home pty]# chmod 666 max 
chmod: changing permissions of `max': Operation not permitted
[root@home pty]# whoami 
root

那么,我该如何改变的内容/proc/sys/kernel/pty/max

编辑

@jon-lin:

使用以下命令也失败sysctl

[root@home kernel]# sysctl -a | less | grep pty
kernel.pty.nr = 2
kernel.pty.max = 4096
[root@home kernel]# sysctl kernel.pty.max=10000
error: "Operation not permitted" setting key "kernel.pty.max"
[root@home kernel]# sysctl -p kernel.pty.max 10000
error: unable to open preload file "kernel.pty.max"
[root@home kernel]# sysctl -p kernel.pty.max = 10000
error: unable to open preload file "kernel.pty.max"

@AlanCurry:

使用 echo 也失败了:

[root@home pty]# cat max
4096
[root@home pty]# echo 10000 > max
bash: echo: write error: Operation not permitted
[root@home pty]# echo 10000 >> max 
bash: echo: write error: Operation not permitted
[root@home pty]# cat max 
4096

答案1

如果您想更改可以拥有的最大伪终端数量,请不要编辑 proc 文件。您应该进行更改/etc/sysctl.conf,然后重新运行sysctl -p以在运行时更改内核参数。具体来说,更改(或添加)以下行:

kernel.pty.max = <max>

更改<max>为您想要的数字。

答案2

我刚刚在我的环境中遇到了同样的问题。

显然,OpenVZ 在主机级别控制这些变量,即如果您想更改某些设置,则需要在主机上进行更改,并且它将应用于该物理服务器上运行的所有虚拟机。

相关内容