regex - 出于管理目的将 /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:::
解决方案
如果它始终是第二个字段,那么为什么不通过仅更改第二个字段本身来保持简单awk
。
sudo awk 'BEGIN{FS=OFS=":"} {$2="your_new_value_here"} 1' Input_file
第二个警告:也根据@David sir 的评论:请不要使用就地编辑,您可以在终端上打印输出,然后可以使用适当的工具来编辑/创建新的 /etc/shadow 文件。
第一个警告:首先运行上面的命令,如果您对结果感到满意,那么您可以将输出保存到 Input_file 本身。如果你有最新版本的 gawk,你也可以使用gawk -i inplace
上面的代码,将输出保存到 Input_file 本身。
推荐阅读
- html - Dompdf在页面之间生成空白页
- python - 检查屏幕输入字符串中是否存在单元格内容 - Python Pandas
- hyperledger-fabric - Hyperledger Fabric 交易速度
- android - 如何在android中动态地从数据库值填充AnyChart?
- c# - C# WPF datagrid 查找和删除行
- javascript - 无法从列表项中的已提交表单中获取表单值
- react-native - 嵌套导航不适用于本机反应
- android - 如何解决 Android 10 上的 KeyStoreConnectException?
- android - Android 对话框显示进度阶段并取消
- perl - 如何使用 perl 中的私钥和密码通过 sftp 连接?