Мне нужно написать небольшой скрипт Linux, чтобы различать учетную запись service
и учетную запись normal user
, помимо печати других данных о пользователях.
У меня все работает хорошо, за исключением того факта, чтоЯ сомневаюсь, что мой способ определения, является ли это учетная запись пользователя или службы, является полным доказательством.
Это то, что я делаю до сих пор с простой проверкой в моем сценарии:
awk -F":" '{OFS=":";print $2,$6,$NF}' /etc/passwd | sort | uniq > passwd_processed
reg=".*/[nologin|false]"
while IFS=":" read -r user dir lshell;do
if [[ "$lshell" =~ $reg ]]; then
utype="Service"
else
utype="User"
fi
....
...
done < passwd_processed
...
В общем, проверка входа в оболочку.Если он содержит nologin
или false
(учитывая, что учетные записи служб не имеют фактических оболочек для входа в систему и, следовательно, это либо /[usr]/bin/false
, либо /[usr]/bin/nologin
), в поле оболочки объявите их как Service
учетные записи, иначеUser
account.
Достаточно ли этого чека?Или есть еще какой-то определенный способ узнать и использовать в сценарии для различения учетных записей Service
и User
в Linux?