Отключить логин пользователя без отключения аккаунта

87

Допустим, я создал пользователя с именем «фиктивный» с помощью adduserкоманды. Как я могу убедиться, что у этого пользователя НЕ будет жизнеспособной опции входа в систему, без отключения учетной записи. Короче говоря, я хочу, чтобы учетная запись была доступна через su - bogus, но я не хочу, чтобы она была доступна через обычное приглашение входа в систему.

В поисках, кажется, мне нужно отключить пароль этого пользователя, но это passwd -d bogusне помогло. На самом деле, все стало еще хуже, потому что теперь я мог войти в фальшивку, даже не вводя пароль.

Есть ли способ отключить регулярные входы в систему для данной учетной записи?

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

Malabarba
источник
2
Ваш -dфлаг для удаления пароля. Это отличается от его отключения (упоминается как блокировка, см. Ответ Чада).
Калеб
1
Вы, вероятно, хотите полностью отключить их: unix.stackexchange.com/questions/7690/… Также посмотрите этот вопрос Задать Ubuntu: askubuntu.com/questions/282806/how-to-enable-or-disable-a-user
Саймон Вудсайд

Ответы:

102
passwd -l user

это то, что вы хотите.

Это заблокирует учетную запись пользователя. Но вы все равно сможете

su - user

но вам придется su - userкак root.

В качестве альтернативы, вы можете сделать то же самое, добавив !пароль к паролю пользователя /etc/shadow(это все passwd -lделает за кулисами). И passwd -uотменит это.

Чад Феллер
источник
27
Используя эту passwd -lопцию, вы должны знать, что пользователь может войти в систему, используя другой токен аутентификации (например, ключ SSH).
pl1nk
2
Пожалуйста, смотрите мой ответ ниже о рекомендованном решении о том, как этого избежать.
Йорг Готтшлих
2
Это не работает на Ubuntu 16.04. Это изменит дату истечения срока действия и не позволит su-пользователю больше.
Мерлин
1
Это то же самое, что --disabled-passwordопция adduser? Достигает ли создание пользователя без него, --disabled-passwordа затем работает passwd -lна нем того же результата, что и работа adduserс --disabled-passwordпервым?
haridsv
39

Страница руководства passwd(1)говорит о passwd -l:

Обратите внимание, что это не отключает учетную запись. Пользователь все еще может войти в систему, используя другой токен аутентификации (например, ключ SSH). Чтобы отключить учетную запись, администраторы должны использовать usermod --expiredate 1 (при этом срок действия учетной записи устанавливается на 2 января 1970 г.).

Так

usermod --expiredate 1 [LOGIN]

мне кажется правильным способом отключить учетную запись, которую пользователь больше не сможет использовать (например, потому что он покинул компанию).

Йорг Готтшлих
источник
4
На моем CentOs 6.3 passwd -lблокирует sshсоединение для пользователя, и usermod --expiredate 1нет!
fduff
1
На моем CentOS 7.4 passwd -lбольше не блокирует sshсоединения для пользователя, а usermod --expiredate 1 userблокирует. За man passwdвы также можете использовать, chage -E 0 userчтобы заблокировать пользователя. После подачи заявки usermodили chageя могуsudo su user
user12345
usermod --expiredate 0 [LOGIN]также работает, он устанавливает дату истечения срока до 1 января 1970 года, тогда как 1 устанавливает это до 2 января 1970 года.
slm
«Значение 0 не должно использоваться, поскольку оно интерпретируется как учетная запись без срока действия или как срок действия с 1 января 1970 года». - shadow (5)
Йоханнес
28

Существует два способа запретить пользователю вход в систему:

  1. вы можете заблокировать пользователя путем редактирования /etc/passwd
  2. непосредственно выдав passwdкоманду с -lпереключателем

Во втором случае пользователь может войти в систему, используя другой токен аутентификации (например, ключ SSH).

Способ № 1

  1. Найти, где находится нологин: / bin / nologin или / bin / sbin / nologin
  2. Откройте терминал и войдите как root
  3. Тип vi /etc/passwd

Теперь вы находитесь в passwdфайле нажмите, Insчтобы редактировать файл.

Измените строку ниже с nologinпараметром ( /bin/bashозначает, что пользователь может войти в систему).

root:x:0:0:root:/root:/bin/bash

к этому. nologinозначает, что пользователь не может войти в систему.

root:x:0:0:root:/root:/bin/nologin

(или с / bin / sbin / nologin)

  1. Закройте ви Esc :wq

Способ № 2

Чтобы заблокировать пользователя: passwd -l username

Чтобы разблокировать пользователя: passwd -u username

Мансур Уль Хасан
источник
1
В системе Ubuntu 14.04 я нашел /usr/sbin/nologinвместо /bin/nologin.
Деннис Уильямсон
7

Это довольно простая задача, вам просто нужно внести некоторые изменения в /etc/passwdфайл.

Просто вы должны изменить оболочку, которая обычно используется по умолчанию, /bin/bashт.е. вы можете войти в систему, используя эту оболочку, изменив ее на /bin/nologinили /bin/false. Желательно, чтобы изменить его, /bin/nologinпотому что /bin/falseустарел.

ПРАБХАТ ПАРАШАР
источник
4

Установить /bin/falseкак оболочку в/etc/passwd

danadam
источник
18
Когда вы устанавливаете оболочку на /bin/false, вы не можете использовать su, чтобы действовать как этот пользователь. Кроме того, использование не /bin/falseприводит ни к ошибке, ни к другому намеку на то, что просто пошло не так - в тех случаях, когда кто-то хочет запретить использование даже su для получения оболочки от имени этого пользователя, оболочка должна быть заменена на /sbin/nologinошибку, вызывающую ошибку.
HedgeMage
8
Нет, suэто еще возможно для пользователей /bin/falseоболочек passwd- просто используйте опцию --shell: su - --shell /bin/sh bogus.
Матей Ковач
1
/usr/sbin/nologinимеет тот же эффект /bin/false, что и полезное информационное сообщение.
Рёрд
0

Когда мы блокируем пользователя с помощью passwd -l userкоманды, !!в /etc/shadowфайле указывается «» . Но мы все еще можем переключаться на пользовательскую оболочку из учетной записи root, но не можем переключаться на учетную запись пользователя с помощью оболочки входа других обычных пользователей.

Мы также можем отключить учетную запись, предоставив /bin/nologinили /bin/falseв /etc/passwdфайл. Таким образом, пользователь не может войти в систему.

Сушил Мусанде
источник
-1

Вы можете использовать команду

usermod -s /sbin/nologin username
Подарок Ричарда Чигонера
источник