Каковы допустимые символы для пароля?

Я прошу тип символов, поддерживаемых паролями пользователя ( passwd управляйте точно),

Пробелы позволяются? Нулевые символы (\0)? подмножество ASCII или больше?

Если пробелам позволяют, я должен выйти из них?

4
задан 15 October 2014 в 20:14

1 ответ

На основе тестирования:

  • \0 рассматривается как маркировку конца пароля.
  • Пробелы позволяются. Хотя это не показывают в выводе ниже, при помощи Ctrl V , я смог использовать , Входят , Esc и другие ключи в пароле.
<час>
$ pwgen 10 1
Pohhei8sai 
$ passwd 
Changing password for muru.
(current) UNIX password: 
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully
$ printf 'Pohhei8sai\n\0\b\n\0\b' | passwd
Changing password for muru.
(current) UNIX password: Enter new UNIX password: Retype new UNIX password: No password supplied
Enter new UNIX password: Retype new UNIX password: passwd: Authentication token manipulation error
passwd: password unchanged
$ pwgen 10 1
Uuxohv9moo 
$ printf 'Pohhei8sai\nUuxohv\09moo\nUuxohv\09moo\n' | passwd
Changing password for muru.
(current) UNIX password: Enter new UNIX password: Retype new UNIX password: Bad: new password is too simple
Enter new UNIX password: Retype new UNIX password: passwd: Authentication token manipulation error
passwd: password unchanged
$ printf 'Pohhei8sai\nUuxohv9moo\nUuxohv9moo\n' | passwd
Changing password for muru.
(current) UNIX password: Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully
$ printf 'Uuxohv9moo\ntesting 1\ntesting 1' | passwd
Changing password for muru.
(current) UNIX password: Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully
<час>

От моего чтения источник , passwd команда использует (устаревший) getpass функция, которая ведет себя в значительной степени как read -s (и отмечает конец строки пароля с \0). Это не ограничивает применимые символы кроме некоторой проверки повторного использования и сложности. \0 не может использоваться, так как это рассматривают как нормальный маркер конца строки в струнах до, но в значительной степени что-либо еще может, такие как звонок:

$ printf 'testing 1\nUuxohv\a9moo\nUuxohv\a9moo\n' | passwd
Changing password for muru.
(current) UNIX password: Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully
3
ответ дан 17 November 2019 в 15:03

Другие вопросы по тегам:

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