如何在 Linux 中查找密码为空的用户?

met*_*t78 13 linux

如何在 Linux 中查找密码为空的用户?

Den*_*son 15

这是 AndreKR 答案的更短、更精确的版本:

sudo getent shadow | grep '^[^:]*:.\?:' | cut -d: -f1
Run Code Online (Sandbox Code Playgroud)

它只有一个调用cut并会找到以下任何形式的条目:

foo:!: ...
bar:*: ...
baz:: ...
Run Code Online (Sandbox Code Playgroud)

如果你只想要真正的空:

sudo getent shadow | grep '^[^:]*::' | cut -d: -f1
Run Code Online (Sandbox Code Playgroud)

如果你有 GNU grep,你可以cut完全消除:

sudo getent shadow | grep -Po '^[^:]*(?=:.?:)'
Run Code Online (Sandbox Code Playgroud)

或者

sudo getent shadow | grep -Po '^[^:]*(?=::)'
Run Code Online (Sandbox Code Playgroud)


And*_*eKR 8

getent shadow | cut -d: -f1-2 | grep ':$' | cut -d: -f1
Run Code Online (Sandbox Code Playgroud)


oos*_*hro 6

加密密码是 /etc/shadow 中的第二个字段。

如果第二个字段为空,则密码为空:

awk -F":" '($2 == "") {print $1}' /etc/shadow
Run Code Online (Sandbox Code Playgroud)

!并且*密码无效(用户无法登录):

awk -F":" '($2 == "!" || $2 == "*") {print $1}' /etc/shadow
Run Code Online (Sandbox Code Playgroud)