Как запретить пользователю входить в систему, но разрешить "su - user" в Linux?

Как вы разрешаете пользователю войти в систему с помощью "su - user", но запретить пользователю вход в систему с использованием SSH?

Я пытался установить оболочку на /bin/false но когда я пытаюсь su это не работает

Есть несколько способов разрешить вход только su?

SSH AllowUser путь? (как бы я это сделал, если это путь)

11 ответов

Решение

Вы можете использовать AllowUsers / AllowGroups, если у вас есть только несколько пользователей / групп, которым разрешен вход через ssh или DenyUsers / DenyGroups, если у вас есть только несколько пользователей / групп, которым не разрешен вход. Обратите внимание, что это ограничивает вход только через ssh, другие способы входа (console, ftp,...) все еще возможны. Вам необходимо добавить эти опции в ваш файл / etc / ssh / sshd_config для большинства установок ssh.

Если вы установили оболочку входа в систему / bin / false, вы можете использовать su -s /bin/bash user (замените / bin / bash на выбранную вами оболочку)

Если вы все еще хотите, чтобы su работал, вы можете использовать sudo -u [username] или пройти -s /bin/bash Су как временная оболочка. Они оба делают то же самое в отсутствие оболочки в /etc/passwd,

Если у учетной записи нет пароля (passwd -d username), они не могут войти в систему в интерактивном режиме (консоль, SSH и т. Д.). Если у них есть корректная оболочка, su все равно будет работать. Обратите внимание на "в интерактивном режиме", хотя; если кто-то решит настроить пару ключей SSH для учетной записи, она будет работать!

В sshd_config добавьте строку DenyUser [username]

Обратите внимание, что это не помешает этому пользователю войти в систему через консоль.

В дополнение к тому, что было упомянуто выше (отключите и / или не устанавливайте пароль пользователя), модуль pam_access (посмотрите справочную страницу в pam_access и access.conf) можно использовать для управления доступом для входа в систему.

as others have said;

DenyUser username или же DenyGroup groupname в sshd_config would prevent keypair/password login via ssh.

though i usually do something like AllowGroup ssh or something along those lines, and explicitly add people who need ssh access to that group.

then, you can do as other's have said: passwd -d username удалить пароль пользователя, чтобы он не мог войти в систему с консоли или каким-либо другим способом. или еще лучше passwd -l username заблокировать учетную запись. Возможно, SSH запретит доступ к заблокированной учетной записи, даже с ключами, но я не уверен.

Знание того, какой механизм лучше, зависит от требований. Если вы знаете требования, вы можете выбрать подходящий механизм. Все приведенные выше ответы действительны для некоторого набора требований.

Вы хотите ограничить только доступ по SSH? Вам нужен доступ к почте или ssh? Доступ только из рута?

su - user потребует пароль для пользователя, если он запускается от имени пользователя, отличного от root. Тем не мение, sudo -u user -i не требует пароля для пользователя.

Как я уже упоминал в комментарии, я думаю, что вы все равно можете использовать su для учетной записи с неверной оболочкой. Поэтому, если вы установите для оболочки пользователя значение /dev/null или что-то вроде оболочки bin, вы сможете использовать su для этого пользователя... но любая попытка войти любым способом приведет к выходу из строя...

Отредактируйте /etc/shadow, добавив! к началу хэша пароля.

username:!<hash>:#####:#:#####:#:::

При обеспечении новой установки это первое, что я делаю после установки sudo, поэтому никто не может использовать пользователя root для входа в систему или входа в систему через ssh, пользователи sudo могут по-прежнему работать от имени пользователя root.

Не указывайте пароль для пользователя, которому запрещено входить в систему или удалять его.

# passwd -d myuser

Предполагая, что вы хотите только su пользователя от учетной записи root и отключить все другие доступ:

Используйте это (запустить от имени root):

usermod -e 1 -L user

Это отключает вход в систему с паролем (как советовали многие другие ответы), но также истекает срок действия учетной записи. Вы не можете войти в просроченную учетную запись, например, с помощью ключей SSH. Вы все еще можете su user, хотя он будет отображать уведомление о том, что срок действия учетной записи истек.

Другие вопросы по тегам