awk '/\$1|\$6/{print $1}' /etc/shadow
awk '/$1|$6/{print $1}' /etc/shadow
中文版
awk '/$1|$6/{print $1}' /etc/shadow 查询远程登录的用户信息
答案 0 :(得分:3)
awk中的$expr
这样的表达式引用expr
返回的字段号。因此,动作{print $1}
将打印第一个字段。 (请参见awk POSIX standard)
在扩展的正则表达式中使用时,
ef$
将匹配字符串abcdef
,但不匹配字符串abcdefgh
ef$g
永远不会匹配任何内容,因为结尾后无法匹配g
。同样,当以\$
转义时,/\$1|\$6/
和/$1|$6/
:
/\$1|\$6/
将匹配$1
或$6
/$1|$6/
永远不会匹配任何内容 /etc/shadow
是一个文件,其中包含系统帐户的密码信息和可选的老化信息。该文件的每一行包含9个字段,以冒号(:
)分隔。在第一个字段代表用户名的情况下,此处是第二个字段。第二个字段包含以下格式的加密密码(
$id$salt$encrypted
此处$id
告诉您密码使用哪种加密方式:
ID | Method ───────────────────────────────────────────────────────── 1 | MD5 2a | Blowfish (not in mainline glibc; added in some | Linux distributions) 5 | SHA-256 (since glibc 2.7) 6 | SHA-512 (since glibc 2.7)
来源:
man crypt 3
和man shadow 5
从本质上讲,awk行
awk '/\$1|\$6/{print $1}' /etc/shadow
将搜索MD5或SHA-512编码的帐户。
但是生产线有问题。 salt
和encrypted
中的字符来自集合[a–zA–Z0–9./]
。这意味着如果$1
以$6
或salt
开头(1
的同上),则可以在字符串中遇到6
或encrypted
。该行应显示为:
awk -F: '$2 ~ /^\$[1,6]/{print $1}' /etc/shadow
有关此信息的更多信息,
man shadow 5
man crypt 3