Проверьте, есть ли у пользователя набор паролей для своего аккаунта в скрипте

Гугление легко приводит к сообщению в списке рассылки Debian, которое на самом деле является ошибкой Debian #578704, предлагаемым дополнением к заметкам о выпуске (вырезано):

Поскольку переписанная версия имеет абсолютно нулевую совместимость с предыдущими версиями, она не будет обновляться на месте. Поэтому, хотя вновь установленные системы получат GDM 2.30 по умолчанию для сквида, те. обновившиеся с lenny, получат GDM 2.20. Версия 2.20 будет отменена после выхода squeeze.

1
29.08.2018, 10:42
3 ответа

Поскольку вывод passwd --statusуказывает, не имеет ли пользователь пароля ("нет пароля (NP )" ), можно проверить, что:

if [[ $(passwd --status "$i" | awk '{print $2}') = NP ]]
then
    echo "$i doesn't have a password."
fi

Или:

case $(passwd --status "$i" | awk '{print $2}') in
  NP)  echo "$i doesn't have a password."
       # set password here.
       ;;
  L)  echo "$i's account is locked." ;;
  P)  echo "$i has a password." ;;
esac
5
27.01.2020, 23:11

Мы также можем проверить /etc/password, если у нас есть доступ.

if [ `awk -F ':' '/^'$i':/ {print $2}' /etc/shadow` ] ; then 
   echo "User has passwd" ; 
else 
   echo "NO passwd";
fi
2
27.01.2020, 23:11

Как насчет:

if [ `passwd -S ${i} | cut -d" " -f2` == "P" ]; then do some stuff; fi
4
27.01.2020, 23:11

Теги

Похожие вопросы