1

Есть ли команда не-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 ответа3

1

Нет, нет Будучи непривилегированным пользователем, это может быть потенциальной угрозой безопасности, поэтому такие пользователи могут получить доступ к /etc /shadow. Я считаю, что для всех современных дистрибутивов Linux хэши паролей и дополнительная информация об учетной записи были перемещены в /etc /shadow из /etc /passwd, чтобы устранить дыру в безопасности. Если ваша система использует теневые пароли, то "!msgstr "в начале пароля хеш будет виден и присутствует только в /etc /shadow и поэтому недоступен для обычного непривилегированного пользователя.

0

Вы можете добавить следующее в /etc/sudoers:

%admin   ALL = NOPASSWD: /usr/bin/chage -l *

Это даст любому пользователю в группе admin возможность запускать такие команды без запроса пароля:

sudo chage -l username

Если вы хотите запустить это из задания cron или чего-то подобного, вам нужно добавить следующее в /etc/sudoers:

Defaults:%admin   !requiretty

(Не редактируйте /etc/sudoers напрямую; вместо этого запустите sudo visudo)

-1

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .