配置使用虛擬用戶登錄的FTP服務器

配置使用虛擬用戶登錄的FTP服務器,可以避免使用操作系統帳號作爲FTP用戶帶來的一些安全問題,也便於通過數據庫或其它程序來進行管理。本文以Linux下的vsftpd這個FTP服務器軟件爲例,描述配置FTP的詳細過程。

1 安裝必備軟件

yum install vsftpd

yum install db4 #Berkeley DB數據庫,用來存儲虛擬FTP用戶名、密碼


2 初始化安裝環境

mkdir -p /data/vsftpd #這個目錄存放所有虛擬用戶的目錄和文件

useradd -d /data/vsftpd -s /sbin/nologin vsftpd #創建vsftpd用戶,禁止登錄

chown -R vsftpd:vsftpd /data/vsftpd

    mkdir -p /etc/vsftpd/vsftpd_user_conf #這個目錄下存放各個虛擬用戶的配置文件(可以爲空)


3 修改vsftpd配置文件

vi /etc/vsftpd/vsftpd.conf,內容如下:

anonymous_enable=NO
local_enable=YES
write_enable=NO
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
nopriv_user=vsftpd
chroot_local_user=YES
listen=YES
pam_service_name=ftp    #PAM策略文件的名字
userlist_enable=YES
tcp_wrappers=YES
guest_enable=YES        #允許虛擬用戶登錄
guest_username=vsftpd
local_root=/data/vsftpd/$USER    #用戶目錄
user_sub_token=$USER
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/vsftpd_user_conf    #用戶配置文件所在目錄,可以爲空


    vi /etc/pam.d/ftp, 內容如下:

auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login

3 新建用戶

修改用戶名密碼文件
vi /etc/vsftpd/logins.txt,在這個文件中新增用戶名密碼,logins.txt中奇數行爲賬戶名,偶數行爲密碼
db_load -T -t hash -f /etc/vsftpd/logins.txt /etc/vsftpd/vsftpd_login.db #生成用戶名、密碼的數據庫文件


ii 創建用戶的目錄
mkdir /data/vsftpd/$new_user_name
chown -R vsftpd:vsftpd /data/vsftpd/$new_user_name


4 啓動FTP服務

service vsftpd start

chkconfig vsftpd on#設置開機自動啓動


5 刪除用戶

i 修改用戶名密碼文件
vi /etc/vsftpd/logins.txt,在這個文件中刪除用戶名密碼,logins.txt中奇數行爲賬戶名,偶數行爲密碼
db_load -T -t hash -f /etc/vsftpd/logins.txt /etc/vsftpd/vsftpd_login.db
ii 刪除用戶目錄

刪除/data/vsftpd下的用戶目錄


常見故障:

Q: 登錄失敗

500 OOPS: cannot change directory:/home/vsftpd
Login failed.
421 Service not available, remote server has closed connection

A:解決方法

通常爲SELinux導致,解決步驟如下:

vi /etc/selinux/config #將selinux=enforcing或permissive改成disabled,關掉selinux

setenforce 0 #使關掉selinux策略立即生效

/etc/init.d/vsftpd restart #重啓FTP服務

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章