配置使用虚拟用户登录的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服务

猜你喜欢

转载自blog.csdn.net/huzhenwei/article/details/7896632