1

мне нужно сделать скрипт, который проверяет, есть ли у локальной учетной записи включенный пароль или просто пустой пароль. Я предполагаю, что это одно и то же, да?

я погуглил и попробовал пароль -S пользовательскую команду, но все, что я получил, это ошибка. мне нужно запустить это на консоли локального терминала или есть способ превратить это в сценарий?

Я супер новый, так что я все еще немного запутался с концепцией сценария в целом. в основном я должен написать скрипт в одном из текстовых редакторов, сохранить его как файл .sh, дать ему разрешение RWX, а затем запустить его через терминал, правильно?

1 ответ1

1

Пароль пользователя хранится в /etc/shadow . Файл состоит из : -разделенных полей. Второе поле - пароль. Если установлен пароль, отображается хеш. Если учетная запись отключена или не имеет пароля, она либо покажет ! или ничего.

Вы можете использовать такой скрипт:

#!/bin/bash

input="$1"
passwordField=$(cat /etc/shadow | grep "$1" | cut -d ':' -f 2)

echo "Password field contains: ${passwordField}"

if [[ "${passwordField}x" == "x" || "$passwordField" == '!' ]]; then
  echo "Password is not set or account is disabled"
else
  echo "Password is set"
fi

Сохраните этот текст в файле. Сделайте файл исполняемым с chmod +x filename и запустите файл от имени пользователя root с аргументом username:

root@frisbee:~# ./checkpw.sh test1
Password field contains: $6$WLmjys98$70x/mzE/syE4CGgK9GvcN0Bz1b9.6Ka.JsZQ7W9OFwvTx17MKtQegQKVweaRl5M3X.Wm/EDdBOEEfdalDR225/
Password is set
root@frisbee:~# passwd -d test1
passwd: password expiry information changed.
root@frisbee:~# ./checkpw.sh test1
Password field contains: 
Password is not set or account is disabled

Этот простой сценарий имеет ограничение: если указанный аргумент является частью двух или более имен пользователей, он не будет иметь надежного вывода.

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