Мне нужен пользователь на моей Linux-машине для выполнения некоторых команд в .bash_profile
. Но я не хочу, чтобы у этого пользователя был доступ к sftp
, ftp
и любые другие протоколы. Также никакие команды не могут быть выполнены, кроме некоторых в .bash_profile
.
Поэтому я хочу создать пользователя, который не может использовать какой-либо протокол, кроме ssh, и не может выполнять никакие команды, кроме команд из .bash_profile. Что я должен делать?
Обновить:
я пытался rbash
, но, похоже, я могу выйти из этого, набрав bash
.
[root@centos-7 ~]# which rbash
/usr/bin/rbash
[root@centos-7 ~]# ls
a anaconda-ks.cfg
[root@centos-7 ~]# cd a
[root@centos-7 a]# pwd
/root/a
[root@centos-7 a]# cd
[root@centos-7 ~]# rbash
[root@centos-7 ~]# cd a
rbash: cd: restricted
[root@centos-7 ~]# bash
[root@centos-7 ~]# cd a
[root@centos-7 a]# pwd
/root/a
1. Создайте оболочку с ограничениями.
cp / bin / bash / bin / rbash
При создании пользователя:
# useradd -s /bin/rbash localuser
Для существующего пользователя:
# usermod -s /bin/rbash localuser
Для получения более подробной информации об этом, пожалуйста, ознакомьтесь со статьей 8349 базы знаний.
Затем пользователь localuser получает chroot и не может получить доступ к ссылкам за пределами его домашнего каталога / home / localuser
Создайте каталог в / home / localuser /, например программы
mkdir / home / localuser / программы
Теперь, если вы проверите, пользователь localuser может получить доступ ко всем командам, которые он / она разрешил выполнять. Эти команды берутся из переменной окружения PATH, которая установлена в /home/localuser/.bash_profile. Измените его следующим образом.
кот /home/localuser/.bash_profile
.bash_profile
Получить псевдонимы и функции
если [-f ~ / .bashrc]; затем
. ~ / .bashrc
фи
Пользовательская среда и программы запуска
ПУТЬ = $ HOME / программы
экспорт ПУТЬ
Здесь переменная PATH установлена в каталог ~ / programs, так как / usr / local / bin привязан к / home / username / bin, а / bin привязан к / home / username / bin, поэтому замените это.
Теперь, после входа в систему с именем пользователя localuser, пользователь также не может выполнить простую команду. Результат будет таким,
[localuser @ example ~] $ ls
-rbash: ls: команда не найдена
[localuser @ example ~] $ less file1
-rbash: less: команда не найдена
[localuser @ example ~] $ clear
-rbash: clear: команда не найдена
[localuser @ example ~] $ date
-rbash: date: команда не найдена
[localuser @ example ~] $ ping redhat.com
-rbash: ping: команда не найдена
Теперь создайте программные ссылки команд, которые требуются для выполнения пользователем localuser в каталоге / home / localuser / programs.
ln -s / bin / date / home / localuser / programs /
ln -s / bin / ls / home / localuser / programs /
ll / home / localuser / programs /
всего 8
lrwxrwxrwx 1 root root 9 Oct 17 15:53 date -> / bin / date
lrwxrwxrwx 1 корень корень 7 октября 17 15:43 ls -> / bin / ls
Здесь взяты примеры команд date и ls
Снова войдите в систему с пользователем localuser и попробуйте выполнить команды.
[localuser @ example ~] $ date
Пн, 17 октября, 15:55:45 IST 2011
[localuser @ example ~] $ ls
файл1 файл10 файл2 файл3 файл4 файл5 файл6 файл7 файл8 файл9 программ
[localuser @ example ~] $ clear
-rbash: clear: команда не найдена
Можно добавить еще один шаг, чтобы запретить пользователю вносить какие-либо изменения в свой .bash_profile, поскольку пользователи могут его изменять.
Выполните следующую команду, чтобы сделать файл .bash_profile пользователя localuser неизменяемым, чтобы пользователь root / localuser не мог изменять его, пока root не удалит для него неизменяемые права.
# chattr +i /home/localuser/.bash_profile
Чтобы удалить неизменяемый тег,
# chattr -i /home/localuser/.bash_profile
Сделайте файл .bash_profile неизменяемым, чтобы пользователь localuser не мог изменять пути к среде.