- Список пользователей.
- Как заблокировать и разблокировать пользователя в Linux
- 3 способа блокировки и разблокировки учетных записей пользователей в Linux
- Способ 1: блокировка и разблокировка пользователей с помощью команды passwd
- А как насчет входа через SSH?
- Способ 2: блокировка и разблокировка пользователей с помощью команды usermod
- Способ 3: блокировка и разблокировка пользователей с помощью команды chage
- Как я могу перечислить всех заблокированных пользователей в Linux?
- 3 ответа 3
Список пользователей.
Каким образом можно получить список всех пользователей, добавленных человеком (т.е. root’ом)?
Эта команда выводит всех пользователей.
Да, я знаю. А ты не можешь среди них отличить созданные человеком? 🙂
Я могу. Мне нужно чтобы скрипт мог.
Ну можно посмотреть, тех, что в /home.
Универсального решения наверно нету, только косвенно. В gentoo у пользователей созданных при установке софта в описание «added by portage for . »
Вам с UID>1000, что ли?
Facepalm. Вот я тормоз 😀
Можно ещё выбрать тех у кого UID=GID и тех у кого GID соответствует группе users.
Можно ещё выбрать тех у кого UID=GID и тех у кого GID соответствует группе users.
От дистрибутива зависит. А еще от того, как пользователь добавлялся. Попробуй-ка угадать, кого я добавлял сам, а кто «самостоятельно добавился»:
Там выше уже говорили про UID>1000. Плюс (спасибо за то, что напомнил) можно отфильтровать тех, у кого nologin.
А UID==500 у меня еще с эпохи ASP.
Не надо на 1000 ориентироваться.
Я, например, могу и пользователей с UID==100 начать создавать. Отфильтровывать nologin — тоже верно, но не совсем: на примере выше у «пользователя» proxy стоит /bin/sh в шелле, да и у nobody то же самое. Вот только физически зайти они не смогут.
Во! Помню же, что на «А» начинается. 😀
В общем, автоматом это сделать не получится. Надо вручную парсить /etc/passwd и /etc/shadow. Предварительно, конечно, повыкидывав всяких псевдопользователей с /sbin/nologin и /bin/false.
Хотя, нет: брешу. Можно сделать автоматом: достаточно распарсить /etc/shadow.
А если у юзера zsh стоит по умолчанию? Или sh? Или еще что?
Прям ты не догадаешься, что поправить.
Надо открыть /etc/login.defs, найти там UID_MIN и UID_MAX. Все пользователи, uid которых не меньше UID_MIN и не больше UID_MAX — не системные. Обычно они являются добавленными человеком, хотя теоретически человек может добавить пользователя с любым UID.
Я выше сказал уже простейшее решение: искать в shadow пользователей, имеющих хеши паролей.
— «А если админом добавлен пользователь без пароля?»
А пример своего passwd я выше приводил ☺
Ладно. Остается один-единственный надежный вариант: делать все вручную.
спасибо, я в курсе, вопрос был: зачем cat тут
ну мало ли, может из zsh: « ( 27.05.12 21:12:09 )
Что-бы вывести содержимое файла /etc/passwd, очевидно же.
А пример своего passwd я выше приводил ☺
То, что какой-то не совсем адекватный пользователь логинится в систему системным пользователем, никого не волнует. UID_MIN и UID_MAX для того и придумали, чтобы отличать системных пользователей от несистемных. Все программы полагаются на это, и KDE в том числе, и это единственный правильный способ.
Я тоже могу внезапно логиниться в систему пользователем tty, класть исполняемые в /usr/share, а библиотеки в /boot, но это не значит, что так правильно делать.
Источник
Как заблокировать и разблокировать пользователя в Linux
Главное меню » Операционная система Linux » Как заблокировать и разблокировать пользователя в Linux
3 способа блокировки и разблокировки учетных записей пользователей в Linux
Может быть несколько причин, по которым вы хотите отключить пользователя в вашей многопользовательской среде Linux. Возможно, сотрудник покинул организацию и вместо того, чтобы полностью удалить пользователя, заблокирует учетную запись для архивных целей.
В этой статье мы покажем вам три способа блокировки пользователя в командной строке Linux. Мы также расскажем, как разблокировать пользователя.
Способ 1: блокировка и разблокировка пользователей с помощью команды passwd
Команда passwd в Linux работает с паролями учетной записи пользователя. Вы также можете использовать эту команду для блокировки учетной записи пользователя.
Команда в основном работает с файлом /etc/passwd. Вы можете вручную изменить этот файл, но мы не советуем этого делать.
Чтобы заблокировать пользователя с помощью команды passwd, вы можете использовать опцию -l или –lock следующим образом:
Проверьте статус пользователя с помощью команды passwd
Вы можете узнать, заблокирован или разблокирован пользователь, используя опцию -S или –status команды passwd.
passwd -S user_name
Посмотрите на второе поле в выводе. Вот что это значит:
– P или PS: пароль установлен (пользователь разблокирован)
– L или LK: пользователь заблокирован
– N или NP: пароль не требуется пользователю
Вот пример вывода команды passwd:
standard P 10/14/2019 0 99999 7 -1
Чтобы разблокировать пользователя с помощью команды passwd, вы можете использовать опцию -u или –unlock:
В Ubuntu вы увидите такой вывод как для блокировки, так и для разблокировки пользователя:
А как насчет входа через SSH?
Существует серьезная проблема с блокировкой пользователей таким способом. Поскольку он работает только с файлом /etc/passwd, заблокированный пользователь все равно сможет войти через ключи SSH (если установлен вход через ключ SSH). Мы покажем вам, как с этим бороться в следующем разделе.
Способ 2: блокировка и разблокировка пользователей с помощью команды usermod
Вы также можете использовать команду usermod. Команда в основном используется для изменения учетных записей пользователей в Linux. Вы также можете изменить состояние пользователя, заблокировав или разблокировав его с помощью usermod.
Чтобы заблокировать пользователя, вы можете использовать опцию -L следующим образом:
Чтобы разблокировать пользователя, вы можете использовать опцию -U:
Как проверить, заблокирован ли пользователь или нет? Команда usermod также работает с файлом /etc/passwd, поэтому вы можете использовать команду passwd -S user_name для проверки статуса пользователя.
Но usermod также работает с файлом /etc/passwd, так что заблокированный пользователь все еще может войти в систему через ключи SSH, верно? Верно. Но есть способы преодоления этой проблемы.
Например, вы можете изменить оболочку пользователя на nologin, и это не позволит пользователю войти в оболочку.
Другой метод заключается в блокировке пользователя и предоставлении даты истечения в прошлом. Что он делает, так это то, что он отключает учетную запись в прошлую дату, а затем блокирует ее.
Убедитесь, что прошедшая дата находится между 1970-01-02 и текущей датой.
Вы можете отменить это с помощью этой команды:
Существует аналогичный способ блокировки пользователя в Linux с помощью команды chage. Давайте посмотрим на это в следующем разделе.
Способ 3: блокировка и разблокировка пользователей с помощью команды chage
Команда chage используется для изменения информации об истечении срока действия пароля пользователя. Его можно использовать для автоматической блокировки неактивного пользователя после определенного количества дней бездействия.
По сути, то, что вы сделали с помощью команды usermod в предыдущем разделе, может быть достигнуто с помощью команды chage:
По сути, вы установили дату истечения срока действия 1970-01-02. Вы можете увидеть детали, как это:
Вы можете удалить дату истечения срока действия и, таким образом, разблокировать пользователя следующим образом:
Как всегда, есть разные способы выполнить задачу в командной строке Linux. Мы показали здесь три способа блокировки и разблокировки пользователей в Linux. Вы знаете лучший способ или у вас есть рекомендации по блокировке пользователей? Поделитесь в разделе комментариев.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Источник
Как я могу перечислить всех заблокированных пользователей в Linux?
Как я могу перечислить всех заблокированных пользователей в Linux?
Эта команда блокирует конкретного пользователя. Есть ли в Linux какая-либо команда, которая выводит список заблокированных пользователей?
3 ответа 3
passwd -S -a | grep LK | cut -d » » -f1 и / или passwd -S -a |awk ‘/LK/
(если вы заинтересованы)
Обе эти иллюстрации демонстрируют очень распространенную технику, которая используется в Unix/Linux: то, что я буду называть командным конвейером.
В этих примерах выходные данные одной команды (такой как ls) передаются другой команде, которая эффективно фильтрует ее ввод и отправляет ее по линии.
Обратитесь к LinuxQuestions.org для получения дополнительной информации.
Еще один способ для локальных пользователей.
Существующие ответы неточны: они получат ложные отрицания на учетных записях, которые заблокированы с использованием другой техники, отличной от того, как это делает usermod -L , и они получат ложные срабатывания на учетных записях, в которые можно войти с помощью ключа SSH, но не с помощью пароля. ,
Чтобы выполнить комплексную работу в системе с локальными файлами passwd и shadow и активным демоном SSH, вы должны проверить все эти случаи:
Сначала посмотрите на поле оболочки в /etc/passwd ; если это один из /bin/false , /sbin/nologin или /usr/sbin/nologin , учетная запись безоговорочно блокируется. (В принципе, вы можете использовать все, что не является допустимой программой оболочки, но нет простого способа определить «действительную программу оболочки», и учетные записи специального назначения с необычными программами в этой области довольно распространены, вы не хотите предполагать, что заблокированы.)
Для учетных записей, которые имеют действительную оболочку, затем проверьте, существует ли
user/.ssh/authorized_keys2 , непусто и имеет соответствующие права доступа. (Файл и все его родительские каталоги должны принадлежать как пользователю, так и пользователю root, и должны быть недоступны для записи для всех других учетных записей.) Если это так, в учетную запись можно войти, используя какой-нибудь SSH-ключ, даже если пароль отсутствует. В зависимости от конфигурации PAM и sshd такие учетные записи можно отключить, используя поле «срок действия учетной записи» в /etc/shadow , но безопаснее предположить, что это невозможно.
Для учетных записей, которые имеют действительную оболочку и не имеют authorized_keys , проверьте следующее /etc/shadow . Есть три возможности для поля пароля: если оно пустое, учетная запись может использоваться без указания пароля. (PAM можно настроить для блокировки доступа к этому типу учетной записи, но я бы никогда не предположил, что это было сделано.) Если это действительный хэш crypt(3) какого-либо пароля, то доступ к учетной записи можно получить с помощью этого пароля. Любая другая строка означает, что к учетной записи нельзя получить доступ с помощью пароля. Условно вы увидите один из * ! или *LK* используется.
К сожалению, не существует простого способа решить, является ли строка действительным хешем crypt(3) какого- либо пароля. Здесь я рекомендую обрабатывать любую строку, начинающуюся с * или ! как указание, что учетная запись не может быть авторизована с использованием пароля, и любая другая строка, указывающая, что это возможно.
Технически поля «максимальный срок действия пароля», «период бездействия пароля» и «дата истечения срока действия учетной записи» в /etc/shadow также могут использоваться для отключения учетной записи пользователя, но я не хотел бы полагаться на них как на единственное средство блокировки учетная запись, и поэтому я не буду смотреть на них при принятии решения, заблокирована ли учетная запись, либо.
Технически поле пароля записи /etc/passwd может содержать что-то иное, кроме магического токена x (что означает «посмотрите в /etc/shadow »), но в настоящее время это указывает на катастрофически неверно настроенную операционную систему. Если бы я когда-либо увидел это, я бы предположил, что ящик был свернут, и перешел в режим аварийного восстановления.
Этот скрипт Python (его нужно запускать с правами root, так как он читает /etc/shadow и вставляет в домашний каталог каждого пользователя), будет печатать логин всех разблокированных пользователей. Это обычно более полезно, чем список всех заблокированных пользователей, поскольку в него входит множество неинтересных системных учетных записей.
Это еще сложнее, если вам нужно беспокоиться об учетных записях, предоставляемых службой сетевой аутентификации (например, NIS, LDAP, Kerberos). Я не знаю, как расширить этот ответ, чтобы охватить их.
Источник