Как создать зашифрованный пароль

Да, если у Вас есть GNU find и GNU sed, попробуйте это в родительской папке:

find . -type f \( -iname "*.htm" -o -iname "*.html" \) -exec sed -i.bak 's#/contact/index\.html#/contact/index.php#' '{}' +

Это найдет все файлы, имя которых заканчивается в .html или .HTML или .htm или .HTM (или .HtM...) и выполненный это sed команда на них:

sed -i.bak 's#/contact/index\.html#/contact/index.php#g'

Это сделает замену, Вы хотите и создаете резервное копирование оригинала foo.htm названный foo.htm.bak. Если Вы не хотите резервные копии, просто удалите .bak.


Подробнее:

find команда, очевидно, находит файлы или папки. Это - синтаксис, может быть довольно сложным и объяснен подробно в man page часть из которого воспроизводится ниже:

Общий формат find [where] [what]. В примере я дал выше, where . что означает текущий каталог. what все файлы, которые имеют a html или подобное расширение, таким образом, я использую iname который является:

   -iname pattern
          Like -name, but the match is case insensitive.
          For example,  the  patterns  `fo*'  and  `F??'
          match  the  file  names  `Foo',  `FOO', `foo',
          `fOo', etc.   

Однако я хочу, чтобы это соответствовало обоим html и htm таким образом, я использую -o флаг, что означает:

  expr1 -o expr2
          Or; expr2 is not evaluated if expr1 is true.

Такие конструкции должны группироваться, который сделан круглыми скобками ( ) которого, однако, нужно оставить из оболочки, таким образом, мы используем \( и \).

Волшебство происходит в -exec часть:

   -exec command ;
          Execute command; true if 0 status is returned.
          All following arguments to find are  taken  to
          be  arguments to the command until an argument
          consisting of `;' is encountered.  The  string
          `{}'  is  replaced  by  the  current file name
          being processed everywhere it  occurs  in  the
          arguments  to  the  command, not just in argu‐
          ments where it is alone, as in  some  versions
          of  find.   [...] The specified command is
          run once for each matched file.   The  command
          is executed in the starting directory.   There
          are unavoidable security problems  surrounding
          use  of  the  -exec action; you should use the
          -execdir option instead.

Другими словами, учитывая команду как -exec ls {},find найдет все файлы, соответствующие условиям, которые Вы установили и выполняете итерации через них, заменяя {} с текущим именем файла и выполнением данной команды. Я также использую + вместо \; закончиться exec звоните, потому что это вызовет find чтобы попытаться выполнить как можно меньше команд, это - просто незначительная оптимизация, если у Вас нет тысяч файлов, когда это могло быть важно:

   -exec command {} +
          This variant of  the  -exec  action  runs  the
          specified  command  on the selected files, but
          the command line is built  by  appending  each
          selected  file name at the end; the total num‐
          ber of invocations of the command will be much
          less  than  the  number of matched files.  The
          command line is built in  much  the  same  way
          that xargs builds its command lines.  Only one
          instance of `{}' is allowed  within  the  com‐
          mand.  The command is executed in the starting
          directory.

Наконец, sed текстовый потоковый редактор командной строки, это применит команду, которую Вы даете ему каждой строке файла. В этом случае команда является заменой, основной формат:

s#pattern#replacement#flags

Разделители (# ) может быть любой специальный символ и традиционно / но я выбрал # потому что иначе я должен был бы выйти /. Обратите внимание, что ChrisDown в его ответе принял решение использовать |. Это - просто личный выбор, и эти два эквивалентны.

3
21.12.2017, 23:27
5 ответов
# echo -n admin123 | makepasswd --crypt-md5 --clearfrom -
admin123     $1$ZUNNSLzQ$XsViFC1bhucsr3f8AzMPt/

Как прокомментировано ниже, эта команда небезопасна. Истинный метод - записать пароль в файл с помощью текстового редактора, и прочитать пароль из файла.

5
27.01.2020, 21:10
[

] Ваш метод не работает, так как []makepasswd[] не принимает пароль в качестве аргумента, вместо этого нужно создать временный текстовый файл, чтобы сделать пароль, если вы хотите сгенерировать хэш на основе пароля:[

] [
➜  ~  makepasswd --crypt-md5 --clearfrom file
admin123   $1$iQd/ujH.$rMXZiYwQC1Rc/rgO3.FeX/  
] [

]Конечно, не используйте командную строку для хранения пароля, так как он будет доступен любому, кто может прочитать историю команд или аргументы процесса.[

].
3
27.01.2020, 21:10

Вместо этого вы можете использовать алгоритм AES (Advanced Enryption Standard), который является открытым исходным кодом и относительно надежно защищен для шифрования вашего пароля.

ссылки: https://www.aescrypt.com/

-1
27.01.2020, 21:10

Другой способ таков:openssl passwd -1 -stdin <<< password_here

Это не показывает пароль в списке процессов. Дополнительные параметры см. openssl passwd --help

.
7
27.01.2020, 21:10

Просто беги:

openssl passwd -6 -stdin

, а затем введите/вставьте свой пароль, затем ENTER , затем Ctrl+D("конец файла" ). Пароль не будет отображаться в списке процессов, и пароль не будет сохранен в истории оболочки.

Посмотреть другие алгоритмы паролей с помощью:

 % openssl passwd -help    
Usage: passwd [options]
Valid options are:
 -help               Display this summary
 -in infile          Read passwords from file
 -noverify           Never verify when reading password from terminal
 -quiet              No warnings
 -table              Format output as table
 -reverse            Switch table columns
 -salt val           Use provided salt
 -stdin              Read passwords from stdin
 -6                  SHA512-based password algorithm
 -5                  SHA256-based password algorithm
 -apr1               MD5-based password algorithm, Apache variant
 -1                  MD5-based password algorithm
 -aixmd5             AIX MD5-based password algorithm
 -crypt              Standard Unix password algorithm (default)
 -rand val           Load the file(s) into the random number generator
 -writerand outfile  Write random data to the specified file
2
25.12.2020, 13:51

Теги

Похожие вопросы