web-dev-qa-db-ja.com

Vsftpdの匿名アップロードを許可しますか?

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
7
user15318

Pub/ploadというディレクトリを作成しました:

# mkdir /var/ftp/pub/upload

しかし、pub/incomingに移動するようにアップロードを構成しました。

anon_root=/var/ftp/pub/incoming

したがって、これは単純なパスの不一致であり、残りはすべてOKのようです。

6
Oldskool
  1. 匿名ログインの場合は、/etc/passwdの「ftp」ユーザーのホームディレクトリを変更します。

    ftp:x:119:131:ftp daemon,,,:/var/ftp/pub/:/bin/false
    
  2. これを/etc/vsftpd.confファイルに追加します。

    allow_writeable_chroot=YES
    
  3. また、ftpユーザーに、場所chmod 755までのすべてのディレクトリにアクセスするためのアクセス権(/var/ftp/pub/)があることを確認してください

私は何時間もこの問題と戦いました。 vsftpdはエラーの明確なヘルプや提案を提供しません。

1
user206746

おそらくSE linuxが有効になっています。使用できるすべてのものを無効にするのではなく

/usr/sbin/setsebool -P ftp_home_dir 1

ftpが正しく機能するようにします。

[〜#〜] edit [〜#〜]これをもう一度見ると、上記のコマンドが実際に入力したものである場合は/var/ftp/pub/incommingは存在しないため、存在することを確認してから、再試行してください。

0
user9517

おそらくconfファイルにuserlist_deny=NOがあります。これをYESに変更し、使用しているユーザー名が/etc/vsftpd/user_listまたは/etc/vsftpd/ftpusersにないことを確認してください。

0
Kevin M