Вимкніть вхід користувача, не вимикаючи обліковий запис


87

Скажімо, я створюю користувача під назвою "bogus" за допомогою adduserкоманди. Як я можу переконатися, що цей користувач НЕ буде доступним для входу, не вимикаючи обліковий запис. Коротше кажучи, я хочу, щоб обліковий запис був доступний через su - bogus, але я не хочу, щоб він був доступний через звичайне запит на вхід.

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

Чи є спосіб відключити регулярні входи для даного облікового запису?

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


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як корінь.

Крім того, ви можете зробити те ж саме, попередньо !встановивши пароль користувача в /etc/shadow(це все passwd -lробиться за кадром). І passwd -uскасуємо це.


27
Використовуючи цю passwd -lопцію, ви повинні знати, що користувач може увійти, використовуючи інший маркер аутентифікації (наприклад, ключ SSH).
pl1nk

2
Будь ласка, дивіться мою відповідь нижче щодо рекомендованого рішення, як цього уникнути.
Йорг Готчлих

2
Це не працює на ubuntu 16.04. Це змінить термін придатності та більше не дозволить користувачеві користувача.
мерлін

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блокує. Per man passwdви можете також використовувати chage -E 0 userдля блокування користувача. Після подання заяви usermodабо chageя в змозіsudo su user
користувач12345

usermod --expiredate 0 [LOGIN]також працює, він встановлює термін придатності до 1 січня 1970 року, тоді як 1 встановлює це 2 січня 1970 року.
slm

"Значення 0 не слід використовувати, оскільки воно трактується як рахунок без закінчення терміну дії, або як термін дії 1 січня 1970 року." - тінь (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


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, але також показує корисне інформаційне повідомлення.
Rörd

0

Коли ми блокуємо користувача за допомогою passwd -l userкоманди, !!у /etc/shadowфайлі вказується " " . Але ми все ще можемо переключитися на оболонку користувача з кореневого облікового запису, але не можемо перейти на акаунт користувача іншими звичайними оболонками для входу в систему.

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


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.