Centosボックスでシステムユーザーが/ var/www /にアクセスできるようにproftpdを構成するのに問題があります。
proftpd.conf
ServerName "ProFTPD server"
ServerIdent on "FTP Server ready."
ServerAdmin root@localhost
ServerType standalone
DefaultServer on
VRootEngine on
#DefaultRoot ~ !adm
DefaultRoot /var/www/
VRootAlias /etc/security/pam_env.conf etc/security/pam_env.conf
AuthPAMConfig proftpd
AuthOrder mod_auth_pam.c* mod_auth_unix.c
#PersistentPasswd off
UseReverseDNS off
User nobody
Group nobody
MaxInstances 20
UseSendfile off
LogFormat default "%h %l %u %t \"%r\" %s %b"
LogFormat auth "%v [%P] %h %t \"%r\" %s"
<Global>
Umask 022
AllowOverwrite yes
<Limit ALL SITE_CHMOD>
AllowAll
</Limit>
</Global>
<Limit LOGIN>
AllowUser ftpuser
DenyALL
</Limit>
私は自分のホームディレクトリを/ var/www /とし、有効なシェルを持つシステムユーザー「ftpuser」を作成しました。このユーザーとしてsshでログインし、正しいディレクトリなどを表示できます。
しかし、ftpクライアントを使用してシェルからlocalhostに接続または接続しようとすると、エラーが発生します。
Status: Connecting to 10.0.10.10:21...
Status: Connection established, waiting for welcome message...
Response: 220 FTP Server ready.
Command: USER ftpuser
Response: 331 Password required for ftpuser
Command: PASS *******
Response: 230 User ftpuser logged in
Command: OPTS UTF8 ON
Response: 200 UTF8 set to on
Status: Connected
Status: Retrieving directory listing...
Command: PWD
Response: 257 "/" is the current directory
Command: TYPE I
Response: 200 Type set to I
Command: PASV
Response: 227 Entering Passive Mode (10,0,10,10,184,18).
Command: MLSD
Response: 550 /: Invalid argument
Error: Failed to retrieve directory listing
または:
telnet localhost 21
Trying ::1...
Connected to localhost.
Escape character is '^]'.
220 FTP Server ready.
user ftpuser
331 Password required for ftpuser
pass PASSWD
230 User ftpuser logged in
LIST
425 Unable to build data connection: Invalid argument
MLSD
550 /: Invalid argument
ここで何が起こっているのか、そしてそれを修正する方法を誰かが知っていますか?
SElinuxが問題を引き起こしていないことを確認します
setenforce 0
これで問題が解決した場合は、SELinuxをオンに戻します(setenforce 1
)してから、ftp_home_dirブール値を設定してみてください
setsebool -P ftp_home_dir on
これにより、ftpデーモンがユーザーのホームディレクトリにアクセスできるようになります。