Могу ли я ограничить доступ к определенным файлам для определенного процесса? - PullRequest
7 голосов
/ 23 декабря 2010

Можно ли запустить процесс в Linux и ограничить его доступ к определенным файлам / каталогам?Например:

$ start-process --enable-dir=./sandbox --exec="some-script.sh"

some-script.sh не сможет ничего сделать за пределами ./sandbox.

Ответы [ 2 ]

5 голосов
/ 23 декабря 2010

Вы можете использовать chroot, чтобы установить корневой каталог дерева процессов. Это означает, однако, что все зависимости этого процесса должны быть доступны в его новом корне.

Существует ряд пакетов, которые могут помочь вам настроить chroot-среды для ваших нужд. Гугл твой друг;)


Некоторые указания по созданию среды chroot

При создании chroot для какой-либо программы или демона вы должны иметь полное окружение для программы, которую вы хотите chroot . Это означает, что вы должны предоставить минимальную систему в каталоге. Это может содержать:

  • Оболочка и некоторые служебные программы оболочки или вариант busybox. (это также касается следующего шага, если вы не планируете развертывать один единственный статический исполняемый файл).
  • Libc и другие зависимые разделяемые библиотеки.
    • Вам необходимо проверить зависимости разделяемой библиотеки, используя ldd или objdump. Каждая отображаемая библиотека должна находиться в вашем корневом каталоге private . Этот шаг может повторяться несколько раз для каждого исполняемого файла и библиотеки, которые вам нужны. Обратите внимание, что некоторые библиотеки, которые явно связаны во время выполнения с использованием dlopen, необходимо проверять отдельно .
  • В зависимости от того, что вы планируете chroot минимальное /dev дерево.
    • Если вы планируете синхронизировать процесс демона, возможно, для этого потребуются минимальные файлы в /dev, такие как random или zero. Вы можете создать их с помощью команды mknod. Пожалуйста, обратитесь к mknod документации , а также к документации linux, на каких старших / младших номерах какое устройство должно иметь .
  • Также в зависимости от того, что вы планируете chroot - это минимальное /etc. Необходимые файлы:
    • Минимальный пароль и тень ( не пароль вашей системы / тень).
    • Минимальный mtab, содержащий /.
    • Минимальный group (опять же не файл вашей системной группы).

Вы должны начать где-нибудь, поэтому лучше начать с предварительных условий для вашей программы. Подробнее см. В документации .

1 голос
/ 23 декабря 2010

Обычно требуется chroot процесс, чтобы он мог обращаться только к каталогу и его подкаталогам и выполнять только некоторые определенные команды.

См. Как выполнить chroot .

...