Если contacts.txt существует, то полномочия на contacts.txt должны быть изменены, вероятно, к 666. Если это не делает, то полномочия на каталоге Вы хотите, чтобы это было в потребностях, которые будут изменены, чтобы позволить веб-серверу писать в него.
Первым путем является способ, которым Вы хотите сделать это, особенно если существует что-либо еще в каталоге, который Вы не хотите позволять интернет-пользователям переписать.
htpasswd
generates MD5 hashes in the Apache format, which you can verify by seeing that they start with $apr1$
, but PAM only supports formats that your platform's implementation of crypt(3)
implements. For Glibc, the equivalent (MD5-based) would be $1$
. You just need to generate the passwords with a different tool. Here's an example:
sh$ openssl passwd -1
Password:
Verifying - Password:
$1$vhzHvIYn$2Ro.R0WdLnxrWjHcs5RbA/
You can copy this hash into your ftpd.passwd
file in the username:hash
format, and it should work.
Две отображаемые команды эквивалентны, потому что параметр -d
указывает htpasswd использовать crypt, который используется по умолчанию для большинства операционных систем.
Если вы хотите, чтобы пароли хешировались с помощью md5, вы должны использовать -m
sudo htpasswd -m /etc/vsftpd/vsftpd.passwd test
New password:
Re-type new password:
Adding password for user test
grep test /etc/vsftpd/vsftpd.passwd
test:$apr1$GTYtpKS1$Jyfgu42kDspxdJTPPzSOY.
, который показывает, что пароль теста был зашифрован с помощью md5.
Расширяя ответ @ bonsaiviking, вы можете сгенерировать пароль openssl md5 и добавить его в файл ftpd.passwd в одну строку, используя пакетный режим htpasswd -b и параметры открытого текста -p следующим образом:
htpasswd -c -p -b ftpd.passwd *username* $(openssl passwd -1 -noverify *password*)
В приведенном выше примере (Ubuntu) также создается новый файл ftpd.passwd, если он не существует, с использованием -c