出于管理目的,用掩码文本替换/ etc / shadow中的密码

鉴于阴影文件已被复制到其他位置

sudo cp /etc/shadow ~

要检查用户是否有密码,我们可以cat。但是,为了不使人们担心复制其/etc/shadows的行为,我需要掩盖密码哈希。这肯定需要正则表达式......。

john:$6$iTEFbMTM$CXmxPwErbEef9RUBvf1zv8EgXQdaZg2eOd5uXyvt4sFzi6G4lIqavLilTQgniAHm3Czw/LoaGzoFzaMm.YwOl/:17707:0:90:14:::
jane:*:99999:0:90:14:::

有人能帮助我解决用sed或awk命令替换密码哈希的正则表达式吗?

编辑:忘记添加不替换那些以*作为密码字段的密码(因为它们始终不是密码)。

sed -i 's/REGEX/MASKINGTEXT/g' ~/shadow

预期结果:

john:MASKINGTEXT:17707:0:90:14:::
jane:*:99999:0:90:14:::
hufengguang 回答:出于管理目的,用掩码文本替换/ etc / shadow中的密码

如果它始终是第二字段,那么为什么不通过awk仅更改第二字段本身来保持简单。

sudo awk 'BEGIN{FS=OFS=":"} {$2="your_new_value_here"} 1' Input_file

第二个警告:就像@David先生的评论一样:请不要使用就地编辑,您可以在终端上打印输出,然后可以使用适当的工具来编辑/创建新的/ etc / shadow文件。

第一个警告: 首先运行上述命令,如果对结果满意,则可以将输出保存到Input_file本身。如果您有最新版本的gawk,也可以将gawk -i inplace用于上述代码,以将输出保存到Input_file本身。

,

使用sed

sudo cat /etc/shadow | sed -E 's/^([^:]+:)([^:]+)(..+)$/\1redacted\3/g'

编辑(不必要的cat命令):

sudo sed -E 's/^([^:]+:)([^:]+)(..+)$/\1redacted\3/g' /etc/shadow
本文链接:https://www.f2er.com/3155040.html

大家都在问