pure-authd is a daemon that forks an authentication program, waits for an authentication reply, and feed
them to an application server.
pure-authd listens to a local Unix socket. A new connection to that socket should feed pure-authd the
following structure:
account:xxx
password:xxx
localhost:xxx
localport:xxx
peer:xxx
end
(replace xxx with appropriate values) . localhost, localport and peer are numeric IP addresses and ports.
peer is the IP address of the remote client.
These arguments are passed to the authentication program, as environment variables:
AUTHD_ACCOUNT
AUTHD_PASSWORD
AUTHD_LOCAL_IP
AUTHD_LOCAL_PORT
AUTHD_REMOTE_IP
AUTHD_ENCRYPTED
The authentication program should take appropriate actions to fetch account info according to these
arguments, and reply to the standard output a structure like the following one:
auth_ok:1
uid:42
gid:21
dir:/home/j
end
auth_ok:xxx
If xxx is 0, the user was not found (the next authentication method passed to pure-ftpd will be
tried) . If xxx is -1, the user was found, but there was a fatal authentication error: user is
root, password is wrong, account has expired, etc (next authentication methods will not be tried)
. If xxx is 1, the user was found and successfully authenticated.
uid:xxx
The system uid to be assigned to that user. Must be > 0.
gid:xxx
The primary system gid. Must be > 0.
dir:xxx
The absolute path to the home directory. Can contain /./ for a chroot jail.
slow_tilde_expansion:xxx (optional,defaultis1)
When the command 'cd ~user' is issued, it's handy to go to that user's home directory, as expected
in a shell environment. But fetching account info can be an expensive operation for non-system
accounts. If xxx is 0, 'cd ~user' will expand to the system user home directory. If xxx is 1, 'cd
~user' won't expand. You should use 1 in most cases with external authentication, when your FTP
users don't match system users. You can also set xxx to 1 if you're using slow nss_* system
authentication modules.
throttling_bandwidth_ul:xxx (optional)
The allocated bandwidth for uploads, in bytes per second.
throttling_bandwidth_dl:xxx (optional)
The allocated bandwidth for downloads, in bytes per second.
user_quota_size:xxx (optional)
The maximal total size for this account, in bytes.
user_quota_files:xxx (optional)
The maximal number of files for this account.
ratio_upload:xxx (optional)radio_download:xxx (optional)
The user must match a ratio_upload:ratio_download ratio.
Onlyoneauthenticationprogramisforkedatatime.Itmustreturnquickly.