Замена паролей в / etc / shadow маскирующим текстом для административных целей - PullRequest
0 голосов
/ 06 ноября 2019

Учитывая, что теневой файл был скопирован в другое место

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:::

Ответы [ 2 ]

2 голосов
/ 06 ноября 2019

Если это всегда 2-е поле, то почему бы не сделать его простым, изменив только 2-е поле на awk.

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

2-е предупреждение: Согласно комментарию @David sir: НЕ делайтеиспользуйте редактирование на месте, вы можете распечатать вывод на терминале, а затем использовать подходящий инструмент для редактирования / создания нового файла / etc / shadow.

1-е предупреждение: сначала запустите вышеуказанную команду, и если вы довольны результатами, вы можете сохранить вывод в самом файле Input_file. Если у вас gawk с последней версией, вы можете использовать gawk -i inplace и для вышеприведенного кода, чтобы сохранить вывод в самом файле Input_file.

1 голос
/ 06 ноября 2019

С sed:

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

Редактировать (ненужная команда cat):

sudo sed -E 's/^([^:]+:)([^:]+)(..+)$/\1redacted\3/g' /etc/shadow
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...