Ви можете запустити обмежену оболонку , викликавши bash як bash -r. Я посилаюсь на посібник з bash для детального опису; основна ідея полягає в тому, що скрипт не може викликати команди, які не знаходяться, не $PATHможуть змінюватись $PATH, не можуть перенаправляти файли або з них та ще кілька обмежень. Це досить просто в налаштуванні, але якщо невідомий сценарій занадто складний для перегляду, ви, ймовірно, буде використовувати багато речей, заборонених у обмеженій оболонці.
Ви можете встановити в'язницю Chroot . Ідея полягає у створенні дерева каталогів /some/rootта запуску сценарію в середовищі, яке вважає, що /some/rootце вся файлова система ( chrootкоротка для кореня зміни). Після того, як дерево каталогів налаштоване, запустіть сценарій (скопійований у /some/root/myscript) як chroot /some/root /bin/bash /myscript. Наприклад, ви створили б каталог /some/root/binз командами, які ви хочете дозволити, і програма, що увімкнулася, побачила б цей каталог як /bin. Вам потрібно буде скопіювати все, що потрібно для виконання програми всередині chroot: бібліотеки, файли даних bash,, сам скрипт тощо. Сценарій може знадобитися /procвстановити всередині chroot; ви можете зробити це за допомогою такої команди mount -t proc proc /proc.
Якщо вам потрібно зробити ціле дерево каталогів доступним для сценарію, скажімо /var/example, у вас є кілька варіантів. Ви можете зробити копію під /some/root. Ви можете зробити жорсткі посилання (якщо вони працюють для вашої програми та chroot знаходиться в одній файловій системі). В Linux ви можете зробити mount --bind /var/example /some/root/var/example«прищеплення» /var/exampleвсередині хротону. Зауважте, що символічне посилання не може працювати, оскільки мета посилання визначається всередині chroot.
Зауважте, що chroot не забезпечує абсолютної безпеки, особливо проти процесів, що працюють як root. Наприклад, кореневий процес може створити файл пристрою всередині chroot і отримати доступ до всього диска через нього. Хротований процес все ще може здійснювати з'єднання з мережею (ви можете заборонити це, не включаючи будь-яку мережну програму всередині chroot і гарантуючи, що ненадійна програма не може створити файл і зробити його виконуваним або перезаписати наявний виконуваний файл).