Как использовать ограниченную оболочку, чтобы ограничить возможности пользователя Linux

Окно терминала в системе Linux.Фатмавати Ахмад Дзэнури / ShutterstockОграниченная оболочка ограничивает возможности учетной записи пользователя в Linux. Пользователь с ограниченным доступом не может изменить свой каталог, и вы контролируете, к каким командам он имеет доступ. Вот как настроить ограниченную оболочку в Linux.

Оболочки с ограниченным доступом

Ограниченная оболочка — это не другая оболочка. Это другой режим стандартной оболочки. В Баш, Korn, Рыбы, и другие оболочки могут быть запущены в ограниченном режиме оболочки. В этой статье мы будем использовать Bash, но те же принципы применимы и к другим оболочкам.

Поскольку ограниченные оболочки — это просто еще один способ использования стандартной оболочки, их легко настроить. Нечего устанавливать, и они доступны везде, где есть Linux.

Ограниченные оболочки также могут применяться к скриптам. Это гарантирует, что любой ущерб, который они могут причинить, если они были написаны неправильно, ограничен пределами их ограниченного мира и что у них нет доступа ко всему вашему компьютеру.

Однако имейте в виду, что ограниченные оболочки не полностью защищают от побега. Кто-то, обладающий достаточными знаниями, может избежать ограниченной оболочки. Они отлично подходят для установления безопасных границ для обычного пользователя, но не полагаются на ограниченные оболочки для какой-либо реальной безопасности в производственной системе.

Ограниченный Баш

Когда вы запускаете Bash как ограниченную оболочку, у пользователя удаляются некоторые возможности. В частности, пользователь не можешь:

  • Используйте cd, чтобы изменить рабочий каталог.
  • Измените значения переменных среды $ PATH, $ SHELL, $ BASH_ENV или $ ENV (но они могут читать текущие значения).
  • Прочтите или измените параметры среды оболочки $ SHELLOPTS.
  • Перенаправить вывод команды.
  • Вызов команд, для поиска которых требуется путь. То есть вы не можете выполнить команду, содержащую одну или несколько косых черт «/».
  • Вызовите exec, чтобы заменить оболочку другим процессом.
  • Используйте любую из ограниченных функций в скрипте.

Вы можете вызвать ограниченную оболочку Bash, используя параметр -r (ограниченный). Запрещается пытаться выполнить простую задачу, например, сменить рабочий каталог. Краткое сообщение сообщает вам, что cd ограничен.
bash -r cd Документы

Оболочка Bash также может определять, когда она была вызвана, используя «rbash» вместо «bash». Это приводит к тому, что он также запускается как ограниченная оболочка. Это предоставляет удобный способ установить оболочку по умолчанию для конкретного пользователя, которую мы скоро будем использовать.

Если мы воспользуемся командой whereis в Ubuntu для поиска файлов rbash, мы увидим, что исполняемый файл находится в каталоге «usr / bin». Страница руководства находится в каталоге «/ usr / share / man / man1».

Использование команды ls с параметром -l (long) показывает, что rbash на самом деле является символической ссылкой на bash.
где rbash ls -l / usr / bin / rbash

В Manjaro и Fedora необходимо было создать символическую ссылку rbash. Это работает в обоих дистрибутивах:
где rbash sudo ln -s / bin / bash / bin / rbash, где rbash

Во второй раз, когда мы используем команду whereis, она находит rbash в каталоге «/ usr / bin».

Ограничение пользователя

Давайте создадим новую учетную запись пользователя с именем «Минни». Мы сделаем их оболочку ограниченной оболочкой, используя параметр -s (оболочка) команды useradd. Мы также установим пароль учетной записи с помощью команды passwd и создадим для них домашнюю папку.

Флаг -p (родители) в команде mkdir указывает mkdir создать целевой каталог и все родительские каталоги, которые ему необходимо создать. Итак, создавая каталог «/ home / minnie / bin», мы одновременно создаем каталог «/ home / minnie».
sudo useradd минни -s / bin / rbash sudo passwd minnie sudo mkdir -p / home / minnie / bin

Когда Минни входит в систему, она будет работать в ограниченной оболочке.
CD

Она не может вызывать команды, которые должны включать косую черту «/»:
/ usr / bin / пинг

Однако она по-прежнему может выполнять команды, найденные в пути.
пинг

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

Ужесточение ограничений

Когда мы создали домашний каталог Минни «/ home / minnie», мы также создали каталог «/ home / minnie / bin». Вот где в игру вступает этот каталог.

Мы собираемся отредактировать файл «.bash_profile» Минни и установить ее путь так, чтобы он указывал только на этот каталог. Мы также ограничим файл «.bash_profile» Минни, чтобы только root мог его редактировать. Это означает, что ни один другой пользователь не может редактировать этот файл и изменять свой путь.
sudo gedit /home/minnie/.bash_profile

Отредактируйте существующий «PATH =» или добавьте следующую строку:
ПУТЬ = $ HOME / bin

Сохраните файл. Что ж изменить владельца файла получить root-права с помощью команды chown и изменить права доступа к файлу с помощью команды chmod. Только пользователь root сможет редактировать файл.
sudo chown корень: root /home/minnie/.bash_profile sudo chmod 755 /home/minnie/.bash_profile ls -l /home/minnie/.bash_profile

В следующий раз, когда пользователь minnie войдет в систему, ее путь будет указывать на одну папку.

Наш ограниченный пользователь minnie может использовать только встроенные команды Bash, такие как echo, alias и logout. Она даже не может использовать ls!
ls

Нам нужно будет немного ослабить хватку, если мы хотим, чтобы они вообще могли делать что-нибудь полезное. Мы создадим несколько символических ссылок из каталога minnie «bin» на команды, которые мы хотим, чтобы Минни могла использовать.
sudo ln -s / bin / ls / home / minnie / bin sudo ln -s / bin / top / home / minnie / bin sudo ln -s / bin / uptime / home / minnie / bin sudo ln -s / bin / pinky / дом / минни / бин

Когда Минни в следующий раз войдет в систему, она обнаружит, что может использовать встроенные команды Bash, а также те команды, с которыми были связаны ссылки.
ls pinky dave uptime

Ограничение существующих пользователей

Мы создали Минни как нового пользователя. К изменить оболочку существующего user, мы можем использовать параметр -s (shell) команды usermod.
sudo usermod -s / bin / rbash Мэри

Вы можете использовать команду less в файле «/ etc / passwd», чтобы быстро увидеть, какая оболочка установлена ​​в качестве оболочки пользователя по умолчанию.
меньше / etc / passwd

Мы видим, что пользователь mary будет использовать ограниченную оболочку при следующем входе в систему.

Не забудьте применить другие изменения, чтобы ограничить их переменную среды $ PATH и установить команды, которые вы хотите, чтобы пользователь Мэри мог выполнять.

Ограничивающие скрипты

Обычный пользователь без ограничений может запускать сценарии, которые выполняются в оболочке с ограничениями. Скопируйте следующие строки и вставьте их в редактор. Сохраните файл как «limited.sh» и закройте редактор.
#! / bin / bash # скрипт запускается в обычной оболочке Bash echo «## В неограниченном режиме! ##» echo echo «Текущий каталог:pwd «echo» Изменение каталога «cd / usr / share echo» Теперь в каталоге: pwd» echo «Переход в домашний каталог» cd ~ echo «Теперь в каталоге:pwd «# Установка ограниченного режима set -r echo echo» ## В ограниченном режиме! ## «echo echo» Текущий каталог: pwd» echo «Изменение каталога на / home /» cd / home echo «Все еще в каталоге:pwd «echo echo» Попытка запустить другую оболочку «/ bin / bash echo echo» Попытка перенаправить вывод команды «ls -l $ ГЛАВНАЯ> my_files.txt cat my_files.txt echo exit 0
Нам нужно использовать команду chmod с флагом + x (выполнить), чтобы скрипт стал исполняемым.
chmod + x ограниченный.sh

Первая часть скрипта выполняется в обычной оболочке.
./restricted.sh

Вторая часть сценария — бит после строки «set -r» — выполняется в ограниченной оболочке.

Ни одно из предпринятых действий не увенчалось успехом в ограниченной части скрипта.

Можно запустить весь сценарий в ограниченной оболочке, добавив -r в первую строку:
! # / bin / bash -r

Помните Гудини

Оболочки с ограниченным доступом полезны, но не полностью безошибочны. Достаточно опытный пользователь может избежать их. Но при разумном использовании они являются полезным способом установить набор ограничений для конкретной учетной записи.

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *