Я прошу тип символов, поддерживаемых паролями пользователя ( passwd
управляйте точно),
Пробелы позволяются? Нулевые символы (\0)? подмножество ASCII или больше?
Если пробелам позволяют, я должен выйти из них?
На основе тестирования:
\0
рассматривается как маркировку конца пароля. $ 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