username:sha256:<salt_hex>:<hash_hex>
Legacy plain-text lines (username:password) still work when reject_plaintext_passwords=false (default for backward compatibility).
In rsyncd.conf:
[auth]
enabled = true
method = password
password_file = /etc/simple-rsyncd/passwd
reject_plaintext_passwords = truePlain-text entries in the password file are skipped at load time when this flag is true.
Generate a hash with the daemon linked against OpenSSL (or any tool producing the same format):
# Example: hash password "secret" for user "backup"
# Use simple-rsyncd test helper or C++ PasswordHasher in a one-off tool.Recommended approach for operators:
- Copy
passwdtopasswd.bak - For each user, replace
user:plainwithuser:sha256:...using a small script that calls OpenSSL SHA-256 with random salt matchingPasswordHasherformat inauth.cpp - Set
reject_plaintext_passwords=true - Run
simple-rsyncd test --config /etc/simple-rsyncd/rsyncd.conf - Verify login before removing
passwd.bak
- Storage uses SHA-256 + salt, not bcrypt/argon2. Suitable for beta/staging; plan upgrade for high-threat environments (v0.5.0+).
- Passwords in environment variables or process listings remain an operator concern.