Как ограничить доступ пользователя к системе Linux
В этом кратком руководстве мы узнаем, что такое оболочка с ограниченным доступом и как ограничить доступ пользователей к системе Linux с помощью оболочки с ограниченным доступом.
Введение
Представьте себе этот сценарий.
Вы хотите разрешить пользователю выполнять только определенные задачи и выполнять определенные команды. Пользователь не должен изменять переменные/пути среды.
Пользователь не может посещать другие каталоги, кроме своего домашнего каталога, и не может переключаться на других пользователей и т. д. Пользователь может выполнять только несколько команд, назначенных системным администратором. Это возможно? Да! Здесь на помощь приходит Restricted Shell.
Restricted Shell используется для ограничения доступа пользователей к системе Linux. Как только вы переведете пользователей в ограниченный режим оболочки, им будет разрешено выполнять только ограниченный набор команд.
Я тестировал это руководство на минимальном сервере CentOS 7. Однако он будет работать в большинстве Unix-подобных дистрибутивов.
Что такое ограниченная оболочка?
Для начала позвольте мне прояснить, что такое Restricted Shell. Это не отдельная оболочка, такая как Bash, Korn Shell и т. д. Если вы запустите любую существующую оболочку с параметрами «rbash», «--restricted», «-r», она станет оболочкой с ограниченным доступом. Например, оболочку Bourne можно запустить как оболочку с ограниченным доступом с помощью команды bsh -r, а оболочку Korn с помощью команды ksh -r.
Ограниченная оболочка ограничивает пользователям выполнение большинства команд и изменение текущего рабочего каталога. Restricted Shell наложит на пользователей следующие ограничения:
- Это не позволит вам выполнить команду cd. Поэтому ты не можешь никуда идти. Вы можете просто остаться в текущем рабочем каталоге.
- Вы не сможете изменять значения ` PATH, $SHELL, < tt>$BASH_ENV или $ENV переменные среды.
- Это не позволит вам выполнить программу, содержащую символ /(косой черты). Например, вы не можете запустить команду /usr/bin/uname или ./uname. Однако вы можете выполнить команду uname. Другими словами, вам разрешено запускать команды только по текущему пути.
- Вы не можете перенаправить вывод, используя '>', '>|', '<>', '>&< Операторы перенаправления /samp>', '&>' и '>>'.
- Это не позволит вам выйти из ограниченного режима оболочки внутри скриптов.
- Вы не сможете отключить ограниченный режим оболочки с помощью Set +r или Set +o Restricted.
Это может быть очень полезно, когда большое количество пользователей используют общую систему. Итак, если вы хотите разрешить пользователям выполнять только определенные команды, Restricted Shell – один из способов сделать это.
Ограничьте доступ пользователя к системе Linux с помощью ограниченной оболочки
Сначала создайте символическую ссылку rbash из Bash, как показано ниже. Следующие команды следует запускать от имени пользователя root.
ln -s /bin/bash /bin/rbash
Затем создайте пользователя с именем "ostechnix" с rbash в качестве оболочки входа по умолчанию.
useradd ostechnix -s /bin/rbash
Установите пароль для нового пользователя.
passwd ostechnix
Создайте каталог bin внутри домашней папки нового пользователя.
mkdir /home/ostechnix/bin
Теперь нам нужно указать, какие команды может выполнять пользователь.
Здесь я позволю пользователю запускать только команды "ls", "mkdir" и "ping". Вы можете назначить любые команды по вашему выбору.
Для этого выполните следующие команды:
ln -s /bin/ls /home/ostechnix/bin/ls
ln -s /bin/mkdir /home/ostechnix/bin/mkdir
ln -s /bin/ping /home/ostechnix/bin/ping
Теперь вы понимаете, почему на предыдущем этапе мы создали каталог «bin». Пользователи не могут запускать какие-либо команды, кроме трех вышеперечисленных.
Затем запретите пользователю изменять .bash_profile.
chown root. /home/ostechnix/.bash_profile
chmod 755 /home/ostechnix/.bash_profile
Отредактируйте файл /home/ostechnix/.bash_profile:
vi /home/ostechnix/.bash_profile
Измените переменную PATH, как показано ниже.
[...]
PATH=$HOME/bin
[...]
Нажмите клавишу ESC и введите :wq, чтобы сохранить и закрыть файл.
Теперь, когда пользователь входит в систему, оболочка с ограниченным доступом (rbash) будет работать как оболочка входа по умолчанию и читать .bash_profile, что установит PATH в $HOME/bin, поэтому что пользователь сможет запускать только команды ls, mkdir и ping. Ограниченная оболочка не позволит пользователю изменять PATH, а разрешения для .bash_profile не позволят пользователю изменять среду, чтобы обойти ограничения во время следующего сеанса входа в систему. .
Проверка Рбаша
Теперь выйдите из системы от пользователя root и снова войдите в систему под новым пользователем, т. е. в нашем случае ostechnix.
Затем запустите несколько команд, чтобы проверить, работает это или нет. Например, я хочу очистить Терминал.
Для этого я запустил:
clear
Пример вывода:
-rbash: clear: command not found
Вы не можете использовать команду cd для перехода в другой каталог.
cd /root
Пример вывода:
-rbash: cd: restricted
Вы также не можете перенаправить вывод с помощью оператора >.
cat > file.txt
Пример вывода:
-rbash: file.txt: restricted: cannot redirect output
Пользователю «ostechnix» разрешено использовать только те команды, которые назначены вами (конечно, системным администратором). В нашем случае пользователь может выполнять команды ls, mkdir и ping.
ls
mkdir ostechnix
ping -c 3 google.com
Кроме этих трёх команд пользователь ничего выполнить не может. Он/она полностью под вашим контролем.
Рекомендуем прочитать:
- Как отслеживать активность пользователей в Linux
Разрешить пользователям новые команды
Если вы хотите назначить пользователю дополнительные команды, выйдите из системы текущего пользователя и снова войдите в систему root пользователя и назначьте команды, как показано ниже.
Например, чтобы разрешить пользователю (например, ostechnix) выполнять команду rm, выполните следующую команду от имени пользователя root.
ln -s /bin/rm /home/ostechnix/bin/rm
Теперь пользователь может использовать команду «rm».
Для получения более подробной информации обратитесь к справочным страницам по ссылке, приведенной ниже.
- Страницы руководства Rbash