代码之家  ›  专栏  ›  技术社区  ›  Timothy Wong

出于管理目的,将/etc/shadow中的密码替换为屏蔽文本

  •  0
  • Timothy Wong  · 技术社区  · 5 年前

    sudo cp /etc/shadow ~
    

    为了检查用户是否有密码,我们可以 cat 它。但是,不要用抄袭他们的行为来警告人们 /etc/shadows ,我需要屏蔽密码哈希。这肯定需要regex。。。。。。。

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

    忘了加那个吗 *

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

    预期结果:

    john:MASKINGTEXT:17707:0:90:14:::
    jane:*:99999:0:90:14:::
    
    0 回复  |  直到 5 年前
        1
  •  2
  •   RavinderSingh13 Nikita Bakshi    5 年前

    如果它总是第二个字段,那么为什么不通过只改变第二个字段本身来保持简单呢 awk .

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

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

    第一次警告: 首先运行上面的命令,如果您对结果满意,那么可以将输出保存到输入_文件本身。如果你有最新的版本,你可以使用 gawk -i inplace

        2
  •  1
  •   Kamoo    5 年前

    sed :

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

    cat 命令):

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