Linux: Существует ли команда не-root, чтобы узнать, включена учетная запись пользователя или нет?
Есть ли команда не-root, которая может сказать мне, отключена ли учетная запись пользователя или нет?
Обратите внимание, что между блокировкой и отключением существует тонкое различие:
- БЛОКИРОВКА - это место, где вы готовы
!
или же*
или же!!
в поле пароля файла / etc / passwd. В системах Linux, которые скрывают пароли, этот маркер может быть помещен в / etc / shadow вместо / etc / passwd. Блокировка паролем может быть выполнена (по приглашению оболочки) черезpassword -l username
(как root) для блокировки учетной записи имени пользователя и использования опции-u
разблокирует это. - ОТКЛЮЧЕНИЕ учетной записи выполняется путем установки срока действия учетной записи пользователя до определенного момента в прошлом. Это может быть сделано с
chage -E 0 username
, который устанавливает дату истечения 0 дней после эпохи Unix. Установка его в -1 отключит использование срока годности.
Эффект блокировки, позволяющий процессу входа в систему использовать предоставленный пароль для правильного хеширования против сохраненного хеша (в силу того факта, что предварительно добавленные маркерные символы не являются действительными выходными символами для хеша, таким образом, никакие возможные входные данные не могут быть использованы для генерации хеша, который бы соответствовал ему). Эффект отключения состоит в том, что любой процесс не может использовать учетную запись, поскольку срок действия учетной записи уже истек.
В моей ситуации использование блокировки недостаточно, поскольку пользователь все еще может войти в систему, например, используя токены аутентификации ssh, а процессы под этим пользователем могут порождать другие процессы. Таким образом, у нас есть учетные записи, которые включены или отключены, а не просто заблокированы. Мы уже знаем, как отключить и включить учетную запись - для этого требуется root-доступ и использование chage
, как показано выше.
Повторяю мой вопрос: есть ли команда оболочки, которая может быть запущена без привилегий root, которая может выводить информацию о состоянии этой учетной записи для данного пользователя?
Если это поможет, это предназначено для использования в системе Red Hat Enterprise 5.4. Вывод возвращается в Java-процесс, который затем может анализировать вывод по мере необходимости или использовать код возврата.
3 ответа
Вы можете добавить следующее к /etc/sudoers
:
%admin ALL = NOPASSWD: /usr/bin/chage -l *
Это даст любому в admin
Сгруппируйте возможность запускать такие команды без запроса пароля:
sudo chage -l username
Если вы хотите запустить это из задания cron или чего-то подобного, вам нужно добавить следующее в /etc/sudoers
:
Defaults:%admin !requiretty
(Не редактировать /etc/sudoers
непосредственно; вместо этого беги sudo visudo
)
Нет, нет Будучи непривилегированным пользователем, это может представлять потенциальную угрозу безопасности, поскольку такие пользователи могут получить доступ к / etc / shadow. Я считаю, что для всех современных дистрибутивов Linux хэши паролей и дополнительная информация об учетной записи были перемещены в / etc / shadow из / etc / passwd, чтобы устранить дыру в безопасности. Если ваша система использует теневые пароли, то "!" в начале пароля хеш будет виден и присутствует только в / etc / shadow и поэтому недоступен для обычного непривилегированного пользователя.
Вы можете использовать файл /etc/passwd в текстовом редакторе, чтобы узнать, чьи учетные записи заблокированы.