Как ограничить доступ пользователя в Linux

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

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