Назад | Перейти на главную страницу

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

Мне нужен пользователь на моей 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

  1. Измените целевого пользователя для оболочки как ограниченную оболочку

При создании пользователя:

# useradd -s /bin/rbash localuser

Для существующего пользователя:

# usermod -s /bin/rbash localuser

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

Затем пользователь localuser получает chroot и не может получить доступ к ссылкам за пределами его домашнего каталога / home / localuser

  1. Создайте каталог в / home / localuser /, например программы

    mkdir / home / localuser / программы

  2. Теперь, если вы проверите, пользователь 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, поэтому замените это.

  1. Теперь, после входа в систему с именем пользователя 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: команда не найдена

  2. Теперь создайте программные ссылки команд, которые требуются для выполнения пользователем 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

  1. Снова войдите в систему с пользователем 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: команда не найдена

  2. Можно добавить еще один шаг, чтобы запретить пользователю вносить какие-либо изменения в свой .bash_profile, поскольку пользователи могут его изменять.

Выполните следующую команду, чтобы сделать файл .bash_profile пользователя localuser неизменяемым, чтобы пользователь root / localuser не мог изменять его, пока root не удалит для него неизменяемые права.

# chattr +i /home/localuser/.bash_profile

Чтобы удалить неизменяемый тег,

# chattr -i /home/localuser/.bash_profile

Сделайте файл .bash_profile неизменяемым, чтобы пользователь localuser не мог изменять пути к среде.