Httpdとvsftpdを備えたcentos6.2のサーバーがあります。
/ var/wwwにWebサイトがほとんどないので、サイトごとにftpユーザーを追加したいと思います。
私のuser1ホームディレクトリは/ home/user1であり、ftpからそのフォルダに読み取り/書き込みを行うことができます。 (それは私がsshとほとんどすべてに使用するユーザーです)
ホームが/ var/www/site2であるuser2とbash設定/ bin/nologinを作成しました(これは単なるftpユーザーにしたいため)
User2でFTPにログインしてファイルをダウンロードすることはできますが、ファイルまたはmkdirをアップロードできません...
許可は次のとおりです。
/ var/wwwの場合:
drwxrwxr-x. 13 root root 4096 Aug 21 14:08 .
/ var/www/site2の場合:
drwxrwxrwx. 2 user2 user2 4096 Aug 21 14:35 site2
(777はテスト用でした...)
私のvsftpd.confは:
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=NO
log_ftp_protocol=YES
chroot_local_user=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
banner_file=/etc/vsftpd/banner
私のiptablesは現在テストのために停止しているので、問題は私のファイアウォールでもありません...
SELinuxが有効になっている:
SELinux status: enabled
SELinuxfs mount: /selinux
Current mode: enforcing
Mode from config file: enforcing
Policy version: 24
Policy from config file: targeted
私がそれを無効にしたとき、それは働いています! :)どうすれば有効にしてvsftpdを動作させ続けることができますか?
よろしくお願いします
/ var/www/site2の権利は何ですか?
User2は、ファイルシステムレベルでこのディレクトリへの書き込みアクセス権を必要とします。たとえば、/ var/www/site2は次のようにする必要があります。
ls /var/www
<snip>
drxwr-xr-x user2 www-data site2/
SELinuxも無効になっていることを確認してください
setsebool -P allow_ftpd_full_access 1
SELinuxが無効になっていることを確認することが、この状況に対する最善のアプローチではないと思います。
Vsftp(など)がSELinuxでフォルダーに書き込むことができるようにするには、public_content_rw_t
のようなコンテキストが必要です。
したがって、コンテキストを設定してから、
chcon -t public_content_rw_t /var/www/site2
ls -ldZ /var/www/site2/
それでも失敗する場合は、/var/log/audit.log
で手がかりを確認してください。それでも権限が拒否された問題があり、それらが/var/log/audit.log
にログインしている場合、他に何が役立つかわからない場合は audit2allow の使用を検討してください。