Поиск по сайту:

Как ограничить доступ пользователя к системе 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
[...]

Изменить переменную PATH

Нажмите клавишу 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

Ограничьте доступ пользователя к системе Linux с помощью ограниченной оболочки

Пользователю «ostechnix» разрешено использовать только те команды, которые назначены вами (конечно, системным администратором). В нашем случае пользователь может выполнять команды ls, mkdir и ping.

ls
mkdir ostechnix
ping -c 3 google.com

Ограниченная оболочка в CentOS

Кроме этих трёх команд пользователь ничего выполнить не может. Он/она полностью под вашим контролем.

Рекомендуем прочитать:

  • Как отслеживать активность пользователей в Linux

Разрешить пользователям новые команды

Если вы хотите назначить пользователю дополнительные команды, выйдите из системы текущего пользователя и снова войдите в систему root пользователя и назначьте команды, как показано ниже.

Например, чтобы разрешить пользователю (например, ostechnix) выполнять команду rm, выполните следующую команду от имени пользователя root.

ln -s /bin/rm /home/ostechnix/bin/rm

Теперь пользователь может использовать команду «rm».

Для получения более подробной информации обратитесь к справочным страницам по ссылке, приведенной ниже.

  • Страницы руководства Rbash

Статьи по данной тематике