Сценарии оболочки — ограниченная оболочка
Shell — один из самых важных и мощных инструментов, доступных в системах на базе GNU/Linux. При правильном использовании можно управлять всей системой, именно эта особенность делает оболочку обоюдоострым мечом. Потенциально это может нанести вред системе, если кто-то выполняет системную команду, не зная ее основных деталей и последствий. Чтобы предотвратить это, мы используем Restricted Shell .
Ограниченная оболочка — rbash
Ограниченная оболочка обеспечивает дополнительный уровень безопасности и ограничивает некоторые функции оболочки. Ограничение распространяется на команды и сценарии, которые выполняются с помощью оболочки. Можно запустить ограниченный сеанс оболочки с помощью команды rbash или с помощью флага -r, предоставленного во время вызова (возвращает 0 в случае успешного выполнения), это можно использовать для настройки более контролируемой среды, чем стандартная оболочка.
$ rbash
или же
$ bash -r
Наложенные ограничения
После активации ограниченного сеанса оболочки большая часть поддержки стандартных системных команд отменяется. Следующие операции не разрешены или отключены в ограниченной оболочке,
- изменение каталогов с помощью компакт-диска
- установка или отмена значений SHELL, PATH, ENV или BASH_ENV
- указание имен команд, содержащих /
- указав имя файла, содержащее / в качестве аргумента для . встроенная команда
- указание имени файла, содержащего косую черту, в качестве аргумента опции -p встроенной команды hash
- источник определения/псевдоним функции из среды оболочки при запуске
- анализ значения SHELLOPTS из среды оболочки при запуске
- перенаправление вывода с помощью операторов перенаправления >, >|, <>, >&, &> и >>
- используя встроенную команду exec, чтобы заменить оболочку другой командой
- добавление или удаление встроенных команд с параметрами -f и -d для включения встроенной команды
- используя встроенную команду enable, чтобы включить отключенную встроенную оболочку
- указание опции -p для команды встроенной команды
- отключение ограниченного режима с помощью set +r или set +o limited.
Давайте проверим несколько ограничений, находясь внутри ограниченной оболочки,
$ cd
$ unset PATH
$ /usr/bin/ping
$ source /home/onworks/.bashrc
$ echo "Hello" > /tmp/hello.txt
$ exec tail -f /var/log/messages
$ enable -d wait
1. Ограничение пользователя
Мы можем запретить пользователю использовать только ограниченную оболочку во время своих сеансов. Давайте создадим нового пользователя с именем «lucy» и установим его оболочку по умолчанию на rbash. Следующие команды можно использовать для создания нового пользователя, установки его пароля и создания его домашней папки.
$ sudo useradd lucy -s /bin/rbash $ sudo passwd lucy $ sudo mkdir -p /home/lucy/bin
Мы можем переключить пользователя с помощью команды su
$ su - lucy
Пользователь по-прежнему может выполнять команды, найденные в пути, этого можно избежать, изменив путь по умолчанию для пользовательской оболочки. Для этого нам нужно отредактировать файл bash_profile пользователя и защитить ограничения, это обсуждается в следующем разделе.
2. Усиление ограничений
Выполните следующую команду, чтобы открыть файл «bash_profile» в режиме редактирования.
$ sudo gedit /home/lucy/.bash_profile
добавьте следующую строку в файл bash_profile.
PATH=$HOME/bin
Далее мы изменим владельца и права доступа к файлу, чтобы только пользователь root мог редактировать файл.
$ sudo chown root:root /home/lucy/.bash_profile
$ sudo chmod 755 /home/lucy/.bash_profile
$ ls -l /home/lucy/.bash_profile
Во время следующего пользовательского сеанса большинство команд будут ограничены.
Мы можем связать пользовательские команды из каталога пользователя, чтобы исключить команды с ограниченным доступом. Здесь мы свяжем некоторые команды, чтобы пользователь lucy мог получить доступ к этим командам из среды rbash.
$ sudo ln -s /bin/clear /home/lucy/bin $ sudo ln -s /bin/neofetch /home/lucy/bin $ sudo ln -s /bin/ls /home/lucy/bin
Прежде чем связывать команды.
После связывания команд.
3. Ограничение уже существующих пользователей
Пользователь с именем 'debo' уже существует, теперь мы попытаемся ограничить оболочку debo rbash. Для этого можно использовать следующую команду.
sudo usermod -s /bin/rbash <username>
sudo usermod -s /bin/rbash debo
Эта команда изменит оболочку пользователя по умолчанию на rbash. В следующий раз, когда этот пользователь войдет в систему, он по умолчанию будет использовать ограниченную оболочку.
4. Ограничение скриптов
По умолчанию каждый исполняемый сценарий оболочки запускается в неограниченном режиме. Чтобы запустить сценарий в ограниченном режиме, set-r может заставить сценарий использовать ограниченную оболочку во время выполнения. Давайте создадим простой сценарий оболочки.
#FILENAME: gfg.sh set -r echo echo "## In restricted mode! ##" echo echo "Current directory: `pwd`" echo "Changing directory to /home/" cd /home echo "Still in directory: `pwd`"
Это заставит скрипт выполняться в ограниченной среде. Запуск приведенного выше скрипта даст следующий результат.
$ . gfg.sh
Преимущества ограниченной оболочки
- Может ограничить доступ к системе.
- Используется для создания ограниченной среды, которая более контролируема, чем стандартная оболочка.
- Обеспечивает безопасность.
Недостатки ограниченной оболочки
- Опытные пользователи могут легко выйти из ограниченного сеанса оболочки.
- Это не работает при работе со сценариями оболочки.