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