誰かがこのような質問をしたことを知っています。たくさん過去ですが、私の問題は少し違うようです。私はCentOS 7サーバーでそれを使用しており、.ftpユーザーを呼び出しました。そのユーザーのホームディレクトリは次のとおりですvsftpd
。chroot_local_user
ログインしようとすると、次のメッセージが表示されます。YES
/etc/vsftpd/vsftpd.conf
user
/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.conf
sudo 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
リンク:
答え2
これはSELinuxの問題です。
# setsebool -P ftp_home_dir 1
答え3
ホストAの事前プログラムされたロボットユーザーがホストBの事前プログラムされた場所にファイルをプッシュする必要がある状況があります。ボットユーザーが別の場所にファイルをプッシュしたり、別の場所からファイルをインポートしたりすることを心配する必要はありません。
また、プロセスが「cd」する必要がある、事前にプログラムされた書き込み可能なサブディレクトリに対応するためにコードを変更することを消極的にしました。
そのため、設定パラメータ "chroot_local_user"を "NO"に設定してこの問題を解決しました。
答え4
このエラーが発生した後に述べたすべての操作を実行しましたが、それでもエラーが発生します。ログを確認し、次の手順を適用して問題を解決しました。
ausearch -c 'vsftpd' --raw | audit2allow -M my-vsftpd
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