s3fs掛s3作為本地盤制作ftp使用


一. 安裝s3fs

安裝s3fs-fuser
https://github.com/s3fs-fuse/s3fs-fuse

二. 安裝vsftpd

#查看當前系統版本
cat /etc/redhat-release
CentOS release 6.6 (Final)
#查看是否已經安裝vsftpd
rpm -qa | grep vsftpd
#如果沒有,就安裝,並設置開機啟動
yum -y install vsftpd
chkconfig vsftpd on

基於虛擬用戶的配置
所謂虛擬用戶就是沒有使用真實的帳戶,只是通過映射到真實帳戶和設置權限的目的。虛擬用戶不能登錄CentOS系統。
修改配置文件

vi /etc/vsftpd/vsftpd.conf

#服務器獨立運行
listen=YES
#設定不允許匿名訪問
anonymous_enable=NO
#設定本地用戶可以訪問。注:如使用虛擬宿主用戶,在該項目設定為NO的情況下所有虛擬用戶將無法訪問
local_enable=YES
#使用戶不能離開主目錄
chroot_list_enable=YES
#設定支持ASCII模式的上傳和下載功能
ascii_upload_enable=YES
ascii_download_enable=YES
#PAM認證文件名。PAM將根據/etc/pam.d/vsftpd進行認證
pam_service_name=vsftpd
#設定啟用虛擬用戶功能
guest_enable=YES
#指定虛擬用戶的宿主用戶,CentOS中已經有內置的ftp用戶了
guest_username=ftp
#設定虛擬用戶個人vsftp的CentOS FTP服務文件存放路徑。存放虛擬用戶個性的CentOS FTP服務文件(配置文件名=虛擬用戶名)
user_config_dir=/etc/vsftpd/vuser_conf
#配置vsftpd日志(可選)
xferlog_enable=YES
xferlog_std_format=YES
xferlog_file=/var/log/xferlog
dual_log_enable=YES
vsftpd_log_file=/var/log/vsftpd.log
#以下是我生產中的實際配置

listen=YES

listen_ipv6=NO

anonymous_enable=NO

local_enable=YES

write_enable=YES

local_umask=022

dirmessage_enable=YES

use_localtime=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_file=/var/log/vsftpd.log

xferlog_std_format=YES

chroot_local_user=NO   # 限制本地用戶在家目錄,設為YES為生效,此時,chroot_list_enable選項應該設為NO

chroot_list_enable=YES  # 限制虛擬用戶家目錄,設為YES為生效,此時,chroot_local_user選項應該設為NO,將需要限制的用戶寫入chroot_list文件中,每行一個用戶

chroot_list_file=/etc/vsftpd/chroot_list

chown_uploads=YES

chown_username=ftpuser

allow_writeable_chroot=YES

secure_chroot_dir=/var/run/vsftpd/empty

pam_service_name=vsftpd

# FTP ssl加密傳輸使用

rsa_cert_file=/etc/ssl/private/vsftpd.pem

rsa_private_key_file=/etc/ssl/private/vsftpd.pem

ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES

ssl_tlsv1=YES
ssl_sslv2=YES
ssl_sslv3=YES
guest_enable=YES

guest_username=ftpuser

pam_service_name=vsftpd.virtual

user_config_dir=/etc/vsftpd/vu

pasv_enable=YES

pasv_min_port=10000

pasv_max_port=11000

進行認證
#安裝Berkeley DB工具,很多人找不到db_load的問題就是沒有安裝這個包
yum install db4 db4-utils
#創建用戶密碼文本,注意奇行是用戶名,偶行是密碼
vi /etc/vsftpd/vuser_passwd.txt
test
123456
#生成虛擬用戶認證的db文件
db_load -T -t hash -f /etc/vsftpd/vuser_passwd.txt /etc/vsftpd/vuser_passwd.db
#編輯認證文件,全部注釋掉原來語句,再增加以下兩句
vi /etc/pam.d/vsftpd

auth required pam_userdb.so db=/etc/vsftpd/vuser_passwd
account required pam_userdb.so db=/etc/vsftpd/vuser_passwd

 

#創建虛擬用戶配置文件
mkdir /etc/vsftpd/vuser_conf/
#文件名等於vuser_passwd.txt里面的賬戶名,否則下面設置無效
vi /etc/vsftpd/vuser_conf/test
#虛擬用戶根目錄,根據實際情況修改

guest_username=ftpuser
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/data/s3
virtual_use_local_privs=YES
anon_umask=022

設置FTP根目錄權限
#最新的vsftpd要求對主目錄不能有寫的權限所以ftp為755,主目錄下面的子目錄再設置777權限
mkdir /data/ftp
chmod -R 755 /data
chmod -R 777 /data/ftp
#建立限制用戶訪問目錄的空文件
touch /etc/vsftpd/chroot_list
#如果啟用vsftpd日志需手動建立日志文件
touch /var/log/xferlog
touch /var/log/vsftpd.log

配置PASV模式(可選)
vsftpd默認沒有開啟PASV模式,現在FTP只能通過PORT模式連接,要開啟PASV默認需要通過下面的配置
打開/etc/vsftpd/vsftpd.conf,在末尾添加
#開啟PASV模式
pasv_enable=YES
#最小端口號
pasv_min_port=40000
#最大端口號
pasv_max_port=40080
pasv_promiscuous=YES
#在防火牆配置內開啟40000到40080端口
-A INPUT -m state --state NEW -m tcp -p -dport 40000:40080 -j ACCEPT
#重啟iptabls和vsftpd
service iptables restart
service vsftpd restart
現在可以使用PASV模式連接你的FTP服務器了~

Selinux和防火牆
該關閉的關閉,該放行的放行
#關閉selinux/iptables
sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config
setenforce 0
chkconfig iptables off
service iptables stop

常見問題

1.如果登錄時出現這樣的錯誤,需要升級pam
500 OOPS: priv_sock_get_result. Connection closed by remote host.
yum update pam -y
2.安裝完成后若虛擬用戶登陸提示:
500 OOPS: cannot change directory:/data/s3
可以嘗試執行,然后重新登錄重試
s3fs -o allow_other wecash-idtrust-bk /data/s3 -o passwd_file=/etc/s3/passwd

ftp結合ssl參考: http://www.binarytides.com/vsftpd-configure-ssl-ftps/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM