500 OOPS:ログイン時にvsftpd chroot

500 OOPS:ログイン時にvsftpd chroot

誰かがこのような質問をしたことを知っています。たくさん過去ですが、私の問題は少し違うようです。私はCentOS 7サーバーでそれを使用しており、.ftpユーザーを呼び出しました。そのユーザーのホームディレクトリは次のとおりですvsftpdchroot_local_userログインしようとすると、次のメッセージが表示されます。YES/etc/vsftpd/vsftpd.confuser/home/user

500 OOPS: chroot
Login failed.
421 Service not available, remote server has closed connection

私は解決策を探していましたが、人々はそれを理解するだけで、refusing to run with writable root inside chroot()これはそうではありません。私は2つを試しました:

1.削除みんな書き込み権限/home/user:

[user@vps226220 ~]$ ls -al /home | grep user
dr-x------.  4 user      user      4096 Dec 12 00:56 user

2. thenallow_writeable_chroot=YESに追加します。/etc/vsftpd/vsftpd.confsudo systemctl restart vsftpd

どちらの場合も何も変わらず、まだ同じエラーが発生しました。私が設定するとchroot_local_user=NOうまくいきますが、もちろんこれは私に許可されている設定ではありません。

私のvsftpdバージョンは3.0.2なので、それをサポートする必要があると思いますallow_writable_chroot

この問題をどのように解決できますか?

答え1

最新バージョンのCentOS / RHELでは、このftp_home_dirオプションは削除されているためftpd_full_access

 # setsebool -P ftpd_full_access on

リンク:

RHEL 7.3 には ftp_home_dir はありません。

FTPの終わり? "ftp_home_dir"の問題

答え2

これはSELinuxの問題です。

# setsebool -P ftp_home_dir 1

答え3

ホストAの事前プログラムされたロボットユーザーがホストBの事前プログラムされた場所にファイルをプッシュする必要がある状況があります。ボットユーザーが別の場所にファイルをプッシュしたり、別の場所からファイルをインポートしたりすることを心配する必要はありません。

また、プロセスが「cd」する必要がある、事前にプログラムされた書き込み可能なサブディレクトリに対応するためにコードを変更することを消極的にしました。

そのため、設定パラメータ "chroot_local_user"を "NO"に設定してこの問題を解決しました。

答え4

このエラーが発生した後に述べたすべての操作を実行しましたが、それでもエラーが発生します。ログを確認し、次の手順を適用して問題を解決しました。

  1. ausearch -c 'vsftpd' --raw | audit2allow -M my-vsftpd
  2. semodule -i my-vsftpd.pp

2番目のコマンド以降、my-vsftpd.pp my-vsftpd.teファイルは私のftpホスト用のファイルディレクトリとして作成されました。これはftpホスト用に次のように作成されます。

sudo adduser testuser
sudo passwd testuser
echo "testuser" | sudo tee –a /etc/vsftpd/user_list   (for conf file )   
sudo mkdir –p /home/testuser/ftp/upload
sudo chmod 777 /home/testuser/ftp
sudo chmod 777 /home/testuser/ftp/upload
sudo mkdir –p /home/testuser/ftp/upload

関連情報