gpt4 book ai didi

linux - 对于 jailed Linux 用户,forkpty 失败

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:36:21 35 4
gpt4 key购买 nike

我在服务器上安装了 Ubuntu 12.04。每个注册用户也被注册为 linux 用户,并通过/etc/security/limits.conf 被限制访问系统资源。

我尝试以注册用户之一的身份运行服务器。该应用程序是一个 nodejs 应用程序 - http://github.com/pocha/terminal-codelearn .它使用 https://github.com/chjj/pty.js为每个使用 nodejs 应用程序的用户创建一个伪终端。

应用程序失败,“forkpty(3) 失败”错误指向 https://github.com/chjj/pty.js/blob/65dd89fd8f87de914ff1814362918d7bd87c9cbf/src/unix/pty.cc 的第 184 行

pid_t pid = pty_forkpty(&master, name, NULL, &winp);

if (pid) {
for (i = 0; i < argl; i++) free(argv[i]);
delete[] argv;
for (i = 0; i < envc; i++) free(env[i]);
delete[] env;
free(cwd);
}

switch (pid) {
case -1:
return ThrowException(Exception::Error(
String::New("forkpty(3) failed.")));

我能够在 http://nitrous.io 上成功部署该应用程序.他们可能有类似的方式来监禁用户。我尝试运行 ulimits -a 并匹配除挂起信号之外的每个值。不知何故,在我的服务器上,最大挂起信号值不超过 90k 左右,而在 Nitrous 服务器上为 584k。

下面是 ulimit -a Nitrous 服务器的输出

ulimit -a

core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 548288
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 512
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 256
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited

该应用程序在 heroku 上失败并出现完全相似的错误。

任何人都可以帮助如何使应用程序像在 nitrous.io 上一样在我的服务器上运行

最佳答案

我知道 heroku 无法 forkpty,因为它们实际上并没有运行 POSIX,只是非常像 posix。所以有些东西,比如 forkpty,就是行不通。我认为没有办法解决这个问题 :( 但愿有。

关于linux - 对于 jailed Linux 用户,forkpty 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17783592/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com