Я создаю сценарий, которому SA должны следовать при выполнении определенной задачи. Эта задача требует добавления пользователя в систему, который может подключаться к системе только по SSH (с использованием ключа) и не может входить в систему с паролем. Я хочу, чтобы SA выполнила команду adduser с соответствующими флагами одновременно, чтобы создать пользователя.
Я не хочу делать adduser ... тогда usermod -L, username. (что полностью блокирует пользователя), или установите для оболочки значение / sbin / nologin (что делает то же самое, что и usermod -L.
Я также не хочу, чтобы SA вручную редактировала / etc / passwd.
Я ищу единственное решение для командной строки. Я знаю, что могу написать сценарий, но для этого потребовалось бы, чтобы SA загрузила сценарий и запустила его, что является моим последним средством.
Что касается однострочного решения, то его нет. Подобная сложная логика требует манипулирования стеком PAM. Тем не менее, я не думаю, что это правило PAM должно быть слишком сложным ... так что это действительно зависит от того, есть ли у вас стратегия управления конфигурацией, чтобы управлять этой конфигурацией PAM для вас, а не помещать ее в SE. Если вы это сделаете, это может быть не слишком болезненно.
Это факт, о котором часто забывают, но аутентификация ssh на основе ключей обходит auth
стек ПАМ. Если у вас есть способ идентифицировать людей, которые должны входить в систему только с помощью ключей SSH, вы можете установить ловушку в auth
стек, который не выполняет попытку аутентификации, если эта характеристика видна. Я предлагаю создать группу для этой цели, поскольку она масштабируется лучше, чем жесткое кодирование имен пользователей в конфигурации PAM.
Собирая все это вместе и предполагая, что 65536
это gid рассматриваемой группы:
groupadd -g 65536 sshonly
auth
стек:auth required pam_succeed_if.so gid ne 65536
useradd -u $SOMEUID -g $SOMEGID somename
usermod -a -G sshonly somename
На самом деле ответ Андрея не совсем правильный. Хотя создание отдельной группы и изменение стека аутентификации являются хорошими рекомендациями, шаги 3 и 4 фактически могут быть объединены в одну строку. Основываясь на примере Эндрю, вот однострочник (и немного ближе к завершению):
useradd -u $SOMEUID -g $SOMEGID -G sshonly -s $SHELL -c comment -d $HOMEDIR somename
При необходимости для вашей среды могут быть добавлены дополнительные флаги. Надеюсь это поможет!