折腾两天vsftpd,终于做好虚拟用户了

两天把vsftpd.conf看了n遍,重要配置都快背下来了,这vsftpd也真够麻烦的。下面是我的操作过程。

运行环境:vmware6.02,debian4.0 r3,vftpd 2.05。

1、修改vsftpd.conf,我的配置文件是这样的。

listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
chroot_local_user=YES
guest_enable=YES
guest_username=virtual
user_config_dir=/etc/vsftpd_user_conf
secure_chroot_dir=/var/run/vsftpd
pam_service_name=vsftpd.vu
rsa_cert_file=/etc/ssl/certs/vsftpd.pem

这样本地用户就可以登陆了。

2、增加一个系统账号,影射虚拟用户的账号。

mkdir /var/ftp
useradd -d /var/ftp virtual
chown virtual:virtual /var/ftp

这样就增加了一个virtual的账号,家目录是/var/ftp,并把这个目录的所有者改成virtual

3、制作虚拟用户数据库

apt-get install libdb3-util
touch login.txt
vim login.txt

注意,第一行用户名,第二行密码。格式向下面一样

xiaoqiang
123456
mingming
567890
haona
haona123

最后一行我没加回车,不知道加了会不会有影响。

(因为操作过程中出现ftp无法启动,读取配置错误等问题。怀疑是这或者是pam.d文件多了一个回车。反正该了这两个文件后好了,也可能是别的地方问题,我没发现)

db3-load -T -t hash -f login.txt /etc/vsftpd_login.db
chmod 600 /etc/vsftpd_login.db

4、建立验证用户的文件

touch /etc/pam.d/vsftpd.vu
vim /etc/pam.d/vsftpd.vu

这文件的内容是

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

5、现在虚拟用户都可以登陆了,但是没权限,虚拟用户权限配置文件夹在vsftpd.conf中定义的是/etc/vsftpd_user_conf

建立和目录文件

mkdir /etc/vsftpd_user_conf
cd /etc/vsftpd_user_conf
touch xiaoqiang haona mingming

文件名对应用户名,将/etc/vsftpd.conf的内容复制到配置文件中,可以用vim多窗口操作,注意修改这几个地方,我的是拥有所有权限,可以根据实际需要更改。

write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_world_readable_only=YES
local_root=/var/ftp

6、重启vsftpd服务

/etc/init.d/vsftpd restart

OK,结束了。