Я использую ProFTPD Version 1.3.5e
на Ubuntu 18.04 LTS
сервер. Я пытаюсь настроить SFTP для работы так же, как FTP в моей конфигурации. В частности, я хочу сначала использовать pam-mysql для аутентификации, а затем метод аутентификации пароля. Аутентификация работает правильно. Директива CreateHome - нет.
Когда я впервые отправляю FTP на свой сервер с новым пользователем, который существует только в базе данных MySQL, меня просят пройти аутентификацию. После того, как я предоставлю учетные данные, ProFTPD использует CreateHome
директива и создаст каталог пользователя, если он не существует. После аутентификации пользователю разрешается сразу же загружать данные в новый каталог, не зная, что каталог не существовал до первой аутентификации. Это очень гладко и хорошо работает.
Я хочу воспроизвести это поведение при использовании SFTP. Но это не работает. я считать что у меня проверка подлинности работает правильно, потому что, когда я пытаюсь использовать нового пользователя, который находится только в базе данных MySQL, я не получаю ошибки аутентификации в журналах. Но я получаю сообщение об ошибке «Нет такого файла или каталога».
Я получаю сообщение об ошибке отказа в разрешении в командной строке клиента SFTP.
Вот записи журнала и конфигурации ProFTPD.
Журналы SFTP:
2020-06-11 18:18:49,843 ftp-server proftpd[13246] 0.0.0.0 (ftp-client[10.0.0.10]): SSH2 session opened.
2020-06-11 18:18:52,548 ftp-server proftpd[13246] 0.0.0.0 (ftp-client[10.0.0.10]): notice: unable to use DefaultRoot ~/ (resolved to '/home/ftpusers/btw-1-face/'): No such file or directory
2020-06-11 18:18:52,548 ftp-server proftpd[13246] 0.0.0.0 (ftp-client[10.0.0.10]): chroot to '~/' failed for user 'btw-1-face': No such file or directory
2020-06-11 18:18:52,548 ftp-server proftpd[13246] 0.0.0.0 (ftp-client[10.0.0.10]): unable to set DefaultRoot directory '~/'
2020-06-11 18:18:52,719 ftp-server proftpd[13246] 0.0.0.0 (ftp-client[10.0.0.10]): SSH2 session closed.
Журналы FTP (корректно работают):
2020-06-11 19:20:43,262 ftp-server proftpd[14081] ftp-client[10.0.0.10]: FTP session opened.
2020-06-11 19:20:56,883 ftp-server proftpd[14081] ftp-client[10.0.0.10]: USER btw-1-face: Login successful.
2020-06-11 19:21:16,608 ftp-server proftpd[14081] ftp-client[10.0.0.10]: FTP session closed.
2020-06-11 19:21:23,489 ftp-server proftpd[14090] ftp-client[10.0.0.10]: FTP session opened.
2020-06-11 19:21:32,304 ftp-server proftpd[14090] ftp-client[10.0.0.10]: USER btw-1-face: Login successful.
2020-06-11 19:21:42,778 ftp-server proftpd[14090] ftp-client[10.0.0.10]: FTP session closed.
Повторите попытку SFTP после успешной попытки FTP.
2020-06-11 19:26:12,986 ftp-server proftpd[14149] 0.0.0.0 (ftp-client[10.0.0.10]): SSH2 session opened.
2020-06-11 19:26:15,415 ftp-server proftpd[14149] 0.0.0.0 (ftp-client[10.0.0.10]): USER btw-1-face: Login successful
2020-06-11 19:26:15,549 ftp-server proftpd[14149] 0.0.0.0 (ftp-client[10.0.0.10]): USER btw-1-face: Login successful.
2020-06-11 19:26:31,243 ftp-server proftpd[14149] 0.0.0.0 (ftp-client[10.0.0.10]): SSH2 session closed.
В приведенном выше журнале тот же пользователь мог загружать файлы через SFTP. НО ТОЛЬКО ПОСЛЕ ProFTPD CreateHome
директива работала в конфигурации FTP.
Вот файл конфигурации ProFTPD:
#-----------------------------------------------------------------------
# Server Configuration: those parameters cannot be elsewhere
#-----------------------------------------------------------------------
ServerName "generic ftp daemon"
ServerType inetd
#ServerType standalone
UseIPv6 off
SystemLog /var/log/proftpd/proftpd.log
# Time stamp - IP Address - Protocol - User Name - UID - Filename - File Size - Response Time in ms - x-fer Time in Seconds - x-fer Status - Reason for failure
LogFormat custom "%{iso8601} %a %{protocol} %u %{uid} %f %{file-size} %R %T %{transfer-status} %{transfer-failure}"
LogFormat authentication "%{%F %T}t %P from: %a to: %{protocol}:%H:%p user: %U msg: %S"
LogFormat transfer "%{%F %T}t %P from: %a to: %{protocol}:%H:%p user: %U file: %f cmd: %m %J"
ExtendedLog /var/log/proftpd/custom.log READ,WRITE custom
TransferLog /var/log/proftpd/xferlog
ScoreboardFile /local/proftpd/var/proftpd.scoreboard
TLSProtocol SSLv3 TLSv1
Include /etc/proftpd/modules.conf
#Include /etc/proftpd/tls.conf
#Include /etc/proftpd/virtuals.conf
#Include /etc/proftpd/ldap.conf
Include /etc/proftpd/sql.conf
Include /etc/proftpd/conf.d/
<Global>
DefaultRoot ~
Umask 022 022
User proftpd
Group nogroup
AllowOverwrite on
IdentLookups off
AllowForeignAddress on
DeferWelcome off
MultilineRFC2228 on
DefaultServer on
ShowSymlinks off
TimeoutNoTransfer 600
TimeoutStalled 600
TimeoutIdle 1200
DisplayLogin welcome.msg
DisplayChdir .message true
ListOptions "-l"
DenyFilter \*.*/
CreateHome on dirmode 750
RequireValidShell off
Port 21
PassivePorts 49152 65534
MaxInstances 50
#AuthOrder mod_auth_pam.c* mod_auth_unix.c
#UseLastlog on
</Global>
<Limit SITE_CHMOD>
DenyAll
</Limit>
<IfModule mod_dynmasq.c>
DynMasqRefresh 28800
</IfModule>
<IfModule mod_quotatab.c>
QuotaEngine off
</IfModule>
<IfModule mod_ratio.c>
Ratios off
</IfModule>
<IfModule mod_delay.c>
DelayEngine off
</IfModule>
<IfModule mod_ctrls.c>
ControlsEngine off
ControlsMaxClients 2
ControlsLog /var/log/proftpd/controls.log
ControlsInterval 5
ControlsSocket /var/run/proftpd/proftpd.sock
</IfModule>
<IfModule mod_ctrls_admin.c>
AdminControlsEngine off
</IfModule>
# The SFTP configuration
<IfModule mod_sftp.c>
<VirtualHost 0.0.0.0>
SFTPEngine on
Port 2222
SFTPAuthMethods password
RequireValidShell off
SFTPLog /var/log/proftpd/sftp.log
Include /etc/proftpd/sql.conf
SFTPHostKey /etc/ssh/ssh_host_rsa_key
SFTPHostKey /etc/ssh/ssh_host_dsa_key
SFTPAuthorizedUserKeys file:/etc/ssh/authorized_keys
SFTPCompression delayed
DefaultRoot ~
CreateHome on dirmode 750
AllowForeignAddress on
</VirtualHost>
</IfModule>
Возникает вопрос, почему CreateHome работает по FTP, а не по SFTP? А как поправить, чтобы под обеими работала?
Спасибо!