1.Installation of vsftpd # cd /usr/ports/ftp/vsftpd
# make install clean
2.修改/etc/rc.conf文件,加入一下一行
vsftpd_enable=YES
3.由于虚拟用户会使用pam认证,于是安装pam_pwdfile
# cd /usr/ports/security/pam_pwdfile
# make install clean
4.由于需要使用htpasswd创建密码文件,安装htpasswd
# cd /usr/ports/security/py-htpasswd
# make install clean
# rehash
安装完成后执行命令为 htpasswd.py,直接输入命令可查看用法
5.使用htpasswd.py创建虚拟账号和密码
# cd /usr/local/etc
# mkdir vsftpd
# cd vsftpd
# htpassword.py -bc vsftpd-users username password
(其中vsftpd-users为账号文件名)
继续添加帐户使用以下命令
htpassword.py -b username1 passwod1
(可重复使用添加多个账户)
于是现在/usr/local/etc/vsftpd目录下存在一个账户文件vsftpd-users,里面保存着我们的虚拟账户名和密码
6. 配置pam认证
进入/etc/pam.d
使用ls命令可以看到已经有ftp和ftpd两个模板文件,我们使用模板文件创建出一个配置文件
# cp ftp vsftpd
使用文本编辑器打开vsftpd配置文件,将里面的内容全部注释或者删除,添加入以下两行内容:
auth required /user/local/lib/pam_pwdfile.so pwdfile /user/local/etc/vsftpd/vsftpd-users
account required /user/lib/pam_permit.so
7. 配置vsftpd.conf
建议先备份vsftpd.conf
# cd /usr/local/etc
# cp vsftpd.conf vsftpd.conf.bak
# enable background mode
background=YES
# disables anonymous FTP
anonymous_enable=NO
# enables non-anonymous FTP
local_enable=YES local_umask=022
# enables uploads and new directories
write_enable=YES
# the virtual user is restricted to the virtual FTP area
chroot_local_user=YES
# runs vsftpd in standalone mode
listen=YES
以上为基本配置,下面是虚拟用户的配置
guest_enable=YES
# 这里的vsftpd和第6步中创建的vsftpd文件是一致的
pam_service_name=vsftpd
user_sub_token=$USER
local_root=/home/vsftpd/$USER
anon_root=/home/vsftpd/ftp
# 这三项配置只允许上传和下载,不允许其他操作,若有其他需求,请参考相关配置参数
virtual_use_local_privs=NO
anon_world_readable_only=NO
anon_upload_enable=YES
8.创建第7步中配置到的相关目录
# cd /home
# mkdir -p vsftpd
# cd vsftpd
# mkdir -p username
# mkdir -p username1
# mkdir -p ftp
# chown ftp:ftp ftp
# chown ftp:ftp username
# chown ftp:ftp username1
9.改变ftp用户的家目录
# pw usermod ftp -d /home/vsftpd
10.启动vsftpd服务
# /usr/local/etc/rc.d/vsftpd start
11. 测试
# ftp localhost
输入username 和password,但是不能正常登陆,会出现错误
500 OOPS: vsftpd: refusing to run with writable root inside chroot()
上网搜了下原因,是ftp根目录不能有写权限(不知道为啥,linux上貌似没问题),于是将目录的写权限去掉
# cd /home/vsftpd
# chmod u-w username
# chmod u-w username1
# chmod u-w ftp
12.但是这样一来用户就没法上传文件了,因为没有写权限,解决办法:可以再根目录下创建子文件夹,子文件夹设置为可写,然后就可以正常在子文件夹中上传文件了
# cd /home/vsftpd/username
# mkdir -p pub
# chown ftp:ftp pub
基本配置OK了,可以根据需求改变各种权限参数,实现不同的权限控制
阅读(2929) | 评论(3) | 转发(0) |