Я создаю процесс с моего сервера узла, который находится в /tmp/running/username (это процесс узла, загруженный пользователем)

Как мне предотвратить чтение (или знание о существовании) чего-либо, кроме /tmp/running/username?

Я могу вызвать процесс любым необходимым способом.

1
Ari Porad 6 Апр 2013 в 18:57
Какая операционная система? Linux?
 – 
Joachim Isaksson
6 Апр 2013 в 19:05
Unix или Linux, а не Windows.
 – 
Ari Porad
6 Апр 2013 в 19:12
1
Может быть, запустить процесс с помощью chroot? spawn('chroot', ['/tmp/running/username', 'yourprocess', 'arg1', ...]) (или используйте node-posix).
 – 
robertklep
6 Апр 2013 в 21:00
Нужна ли пользователю вся мощь node.js? Не могли бы вы просто создать виртуальную машину для пользователя? nodejs.org/api/vm.html Вы можете передать им только то, что им нужно.
 – 
generalhenry
6 Апр 2013 в 21:38
@robertklep: укажите это в ответе
 – 
Ari Porad
7 Апр 2013 в 01:23

1 ответ

Лучший ответ

Вы можете запустить процесс как аргумент для chroot, который изменит корневой каталог вашего процесса:

spawn('chroot', ['/tmp/running/username', 'yourprocess', 'arg1', ...]);

В качестве альтернативы можно использовать функцию chroot из модуля node-posix. (но для предотвращения chroot-процесса процесса Node, из которого вы создаете свою внешнюю программу, вам может потребоваться сначала выполнить fork и вызвать chroot из дочернего процесса).

2
robertklep 7 Апр 2013 в 09:21