Оболочка только для смены пароля

Вопрос или проблема

Мне нужно ограничить весь доступ пользователя на системе RHEL 8 и позволить ему только менять свой собственный пароль. Я думал, что смогу сделать это так:

[root]$ usermod <имя пользователя> -s /bin/passwd

но это не сработало. Что я упустил?

Обновление:

Чтобы было ясно, поведение такое: как только машина загружается (multi-user.target) и вы видите экран, где сначала вводите свое имя пользователя, а затем подсказка меняется, чтобы спросить пароль, если вы вводите пользователя, для которого я установил оболочку либо на /bin/passwd, либо на /usr/bin/passwd (и либо через vipw прямо в /etc/passwd, либо через usermod), экран сбрасывается, и в течение доли секунды он снова запрашивает имя пользователя, как будто ничего не произошло. Все остальное остается неизменным; с root все продолжает работать как обычно.

Вам нужно заменить оболочку в файле /etc/passwd на /usr/bin/passwd или какой-либо другой путь к вашей команде passwd. Вы можете сделать это, используя команду vipw. Я не уверен, позволит ли chsh изменить на бинарный файл, не являющийся оболочкой, в этом поле.

usermod -s также ищет одобренную оболочку, и /bin/passwd явно не является одобренной оболочкой.

Вы можете создать скрипт, который будет действовать как оболочка.

  1. Создайте скрипт
  2. Добавьте путь к скрипту в файл /etc/shell
  3. Права для скрипта 755
    Например: chmod 755 /usr/local/bin/shell-passwd.sh

Теперь, если вы выполните su – user, вы должны попасть в оболочку, которая позволяет выполнять только команду passwd для этого пользователя.

Пример скрипта:

#!/bin/bash
while true; do
    echo -n "Ограниченная оболочка> "
    read -r cmd
    if [ "$cmd" == "passwd" ]; then
        exec /usr/bin/passwd
    else
         echo "Доступ запрещен. Вам разрешено только менять свой пароль."
    fi
done

Ответ или решение

Для реализации ограничения доступа к учетной записи пользователя в системе RHEL 8, позволяя ему только менять собственный пароль, необходимо создать специальный скрипт, который будет исполнять функции командной оболочки. Это решение позволит избежать проблем с тем, что стандартная команда passwd не может быть установлена в качестве оболочки, так как она не является одобренной оболочкой в системе.

Этапы реализации

  1. Создание скрипта:
    Создайте файл, который будет выводить приглашение и принимать команды, предоставляя пользователю возможность лишь вызывать команду passwd.

    #!/bin/bash
    while true; do
       echo -n "Restricted shell> "
       read -r cmd
       if [ "$cmd" == "passwd" ]; then
           exec /usr/bin/passwd
       else
           echo "Access denied. You are only allowed to change your password."
       fi
    done
  2. Сохранение скрипта:
    Сохраните созданный скрипт в каталоге, доступном для выполнения. Например, вы можете сохранить его как /usr/local/bin/shell-passwd.sh.

  3. Установка прав на исполнение:
    Убедитесь, что скрипт имеет права на исполнение:

    chmod 755 /usr/local/bin/shell-passwd.sh
  4. Добавление скрипта в список оболочек:
    Добавьте путь к вашему скрипту в файл оболочек в системе, который обычно находится по адресу /etc/shells. Это гарантирует, что система признает ваш скрипт как допустимую оболочку.

    Откройте файл /etc/shells с помощью текстового редактора (например, vim или nano) и добавьте строку:

    /usr/local/bin/shell-passwd.sh
  5. Изменение оболочки пользователя:
    Измените оболочку для необходимого пользователя, указав путь к созданному вами скрипту:

    usermod -s /usr/local/bin/shell-passwd.sh <username>

Проверка функциональности

После выполнения всех указанных шагов выполните вход в систему под учетной записью пользователя, для которого была изменена оболочка. Введите имя пользователя и пароль. Вы должны увидеть приглашение Restricted shell>, после которого можно ввести команду passwd для изменения пароля. Все остальные команды будут отклонены с сообщением об ошибке.

Заключение

Данная реализация обеспечивает необходимый уровень безопасности, позволяя пользователю менять лишь свой пароль, без возможности доступа к другим функциям системы. Подобное решение может быть полезно в ситуации, когда необходимо ограничить доступ к системе, сохранив возможность для изменения пароля. Следуйте вышеуказанным шагам для успешной настройки вашей системы.

Оцените материал
Добавить комментарий

Капча загружается...