Ubuntu vsftpd

Refer: http://wiki.ubuntu.org.cn/Vsftpd

http://www.ubuntututorials.net/installing-vsftpd-using-text-file-for-virtual-users/

安装

安装

sudo apt-get install vsftpd 
 

登录

ftp localhost 
 

文件结构

匿名用户根路径

/srv/ftp
 

配置文件

/etc/vsftpd.conf
 

查阅配置文件详细信息

man 5 vsftpd.conf
 

设定log保存位置,默认如下

xferlog_file=/var/log/vsftpd.log
 


/etc/vsftpd.conf

listen=<YES/NO> :设置为YES时vsftpd以独立运行方式启动,设置为NO时以xinetd方式启动(xinetd是管理守护进程的,将服务集中管理,可以减少大量服务的资源消耗)
listen_port=<port> :设置控制连接的监听端口号,默认为21
listen_address=<ip address> :将在绑定到指定IP地址运行,适合多网卡
connect_from_port_20=<YES/NO> :若为YES,则强迫FTP-DATA的数据传送使用port 20,默认YES
pasv_enable=<YES/NO> :是否使用被动模式的数据连接,如果客户机在防火墙后,请开启为YES
pasv_min_port=<n>
pasv_max_port=<m> :设置被动模式后的数据连接端口范围在n和m之间,建议为50000-60000端口
message_file=<filename> :设置使用者进入某个目录时显示的文件内容,默认为 .message
dirmessage_enable=<YES/NO> :设置使用者进入某个目录时是否显示由message_file指定的文件内容
ftpd_banner=<message> :设置用户连接服务器后的显示信息,就是欢迎信息
banner_file=<filename> :设置用户连接服务器后的显示信息存放在指定的filename文件中
connect_timeout=<n> :如果客户机连接服务器超过N秒,则强制断线,默认60
accept_timeout=<n> :当使用者以被动模式进行数据传输时,服务器发出passive port指令等待客户机超过N秒,则强制断线,默认60
accept_connection_timeout=<n> :设置空闲的数据连接在N秒后中断,默认120
data_connection_timeout=<n> : 设置空闲的用户会话在N秒后中断,默认300
max_clients=<n> : 在独立启动时限制服务器的连接数,0表示无限制
max_per_ip=<n> :在独立启动时限制客户机每IP的连接数,0表示无限制(不知道是否跟多线程下载有没干系)
local_enable=<YES/NO> :设置是否支持本地用户帐号访问
guest_enable=<YES/NO> :设置是否支持虚拟用户帐号访问
write_enable=<YES/NO> :是否开放本地用户的写权限
local_umask=<nnn> :设置本地用户上传的文件的生成掩码,默认为077
local_max_rate<n> :设置本地用户最大的传输速率,单位为bytes/sec,值为0表示不限制
local_root=<file> :设置本地用户登陆后的目录,默认为本地用户的主目录
chroot_local_user=<YES/NO> :当为YES时,所有本地用户可以执行chroot
chroot_list_enable=<YES/NO> 
chroot_list_file=<filename> :当chroot_local_user=NO 且 chroot_list_enable=YES时,只有filename文件指定的用户可以执行chroot
anonymous_enable=<YES/NO> :设置是否支持匿名用户访问
anon_max_rate=<n> :设置匿名用户的最大传输速率,单位为B/s,值为0表示不限制
anon_world_readable_only=<YES/NO> 是否开放匿名用户的浏览权限
anon_upload_enable=<YES/NO> 设置是否允许匿名用户上传
anon_mkdir_write_enable=<YES/NO> :设置是否允许匿名用户创建目录
anon_other_write_enable=<YES/NO> :设置是否允许匿名用户其他的写权限(注意,这个在安全上比较重要,一般不建议开,不过关闭会不支持续传)
anon_umask=<nnn> :设置匿名用户上传的文件的生成掩码,默认为077
 

目前应用的配置:

listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
nopriv_user=vsftpd
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd
pam_service_name=vsftpd #*1
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
guest_enable=YES
guest_username=vsftpd_new #*2
local_root=/home/vsftpd/$USER
user_sub_token=$USER
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd_user_conf #*3
local_root=/var/run/vsftpd/empty
hide_ids=YES
 

*1 认证库的位置

*2 虚拟用户登录后映射的真实用户

*3 用户配置

刚才我们设定了虚拟用户,我们要建立认证库:

它需要apache的htpasswd工具,才能建立相对应的PAM文件。

sudo apt-get install libpam-pwdfile apache2-utils
 

创建PAM文件:

vi vsftpd_new
# auth required pam_pwdfile.so pwdfile /etc/ftpd.passwd
# account required pam_permit.so
 

在PAM文件中,我们指定了认证库文件的位置。

添加用户到认证文件中:

sudo htpasswd -c /etc/ftpd.passwd user1
 

输入密码后,就创建了user1用户。

虚拟用户有了登录权限后,要为其单独配置访问权限和信息。

sudo mkdir /etc/vsftpd_user_conf
cd /etc/vsftpd_user_conf 
sudo touch user1
vi user1
# write_enable=YES
# anon_world_readable_only=NO 
# anon_upload_enable=YES 
# anon_mkdir_write_enable=YES 
# anon_other_write_enable=YES 
# local_root=/home/vsftpd/res 
 

这样,就为res指定了工作目录和操作权限。

mkdir /home/vsftpd/res
chown -R vsftpd:vsftpd /home/vsftpd
 

猜你喜欢

转载自leitelyaya.iteye.com/blog/1415531