Linux(CentOS 5.5)で基本的なFTPサーバーが必要です。サーバーとクライアントは、ネットワークの残りの部分に接続されていないテストLANにあり、それ自体がNATファイアウォール、FTPへの着信アクセスなし。
一部の人は Vsftpd よりも PureFTPd または ProFTPd を推奨しています。何を試しても、匿名ユーザー(つまり、「ftp」または「anonymous」としてログに記録し、パスワードとして任意の文字列を入力)がファイルをアップロードすることを許可することはできません。
# yum install vsftpd
# mkdir /var/ftp/pub/upload
# cat vsftpd.conf
listen=YES
anonymous_enable=YES
local_enable=YES
write_enable=YES
xferlog_file=YES
#anonymous users are restricted (chrooted) to anon_root
#directory was created by root, hence owned by root.root
anon_root=/var/ftp/pub/incoming
anon_upload_enable=YES
anon_mkdir_write_enable=YES
#chroot_local_user=NO
#chroot_list_enable=YES
#chroot_list_file=/etc/vsftpd.chroot_list
chown_uploads=YES
クライアントからログオンすると、次のようになります。
500 OOPS:ディレクトリを変更できません:/ var/ftp/pub/incoming
「#chmod 777/var/ftp/incoming /」も試しましたが、同じエラーが発生します。
誰かが最小のセキュリティでVsftpdを設定する方法を知っていますか?
ありがとうございました。
編集:SELinuxは無効になっており、ファイルの権限は次のとおりです。
# cat /etc/sysconfig/selinux
SELINUX=disabled
SELINUXTYPE=targeted
SETLOCALDEFS=0
# sestatus
SELinux status: disabled
# getenforce
Disabled
# grep ftp /etc/passwd
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
# ll /var/
drwxr-xr-x 4 root root 4096 Mar 14 10:53 ftp
# ll /var/ftp/
drwxrwxrwx 2 ftp ftp 4096 Mar 14 10:53 incoming
drwxr-xr-x 3 ftp ftp 4096 Mar 14 11:29 pub
編集:最新のvsftpd.conf:
listen=YES
local_enable=YES
write_enable=YES
xferlog_file=YES
#anonymous users are restricted (chrooted) to anon_root
anonymous_enable=YES
anon_root=/var/ftp/pub/incoming
anon_upload_enable=YES
anon_mkdir_write_enable=YES
#500 OOPS: bad bool value in config file for: chown_uploads
chown_uploads=YES
chown_username=ftp
編集: "chown_uploads"から末尾のスペースを削除すると、エラー500が解決されますが、匿名はまだ機能しません。
client> ./ftp server
Connected to server.
220 (vsFTPd 2.0.5)
Name (server:root): ftp
331 Please specify the password.
Password:
500 OOPS: cannot change directory:/var/ftp/pub/incoming
Login failed.
ftp> bye
ユーザー「ftp」が/ etc/passwdにリストされ、ホームディレクトリが「/ var/ftp」に設定され、/ var/ftpへのアクセス権が「drwxr-xr-x」に設定され、/ var/ftp/incomingが「drwxrwxrwx」に設定されている...それはおそらくPAMのせいでしょうか?調査するFTPログファイルが/ var/logに見つかりません。
編集:ftp/anonymousがファイルを/ var/ftpに接続してアップロードできるようにするための実際の構成を次に示します。
listen=YES
anonymous_enable=YES
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
Pub/ploadというディレクトリを作成しました:
# mkdir /var/ftp/pub/upload
しかし、pub/incomingに移動するようにアップロードを構成しました。
anon_root=/var/ftp/pub/incoming
したがって、これは単純なパスの不一致であり、残りはすべてOKのようです。
匿名ログインの場合は、/etc/passwd
の「ftp」ユーザーのホームディレクトリを変更します。
ftp:x:119:131:ftp daemon,,,:/var/ftp/pub/:/bin/false
これを/etc/vsftpd.conf
ファイルに追加します。
allow_writeable_chroot=YES
また、ftp
ユーザーに、場所chmod 755
までのすべてのディレクトリにアクセスするためのアクセス権(/var/ftp/pub/
)があることを確認してください
私は何時間もこの問題と戦いました。 vsftpdはエラーの明確なヘルプや提案を提供しません。
おそらくSE linuxが有効になっています。使用できるすべてのものを無効にするのではなく
/usr/sbin/setsebool -P ftp_home_dir 1
ftpが正しく機能するようにします。
[〜#〜] edit [〜#〜]これをもう一度見ると、上記のコマンドが実際に入力したものである場合は/var/ftp/pub/incomming
は存在しないため、存在することを確認してから、再試行してください。
おそらくconfファイルにuserlist_deny=NO
があります。これをYES
に変更し、使用しているユーザー名が/etc/vsftpd/user_list
または/etc/vsftpd/ftpusers
にないことを確認してください。