Ubuntu 安装 vsftp 服务

Linux 2016-03-10

起步

公司给了任务,用户访问ftp://username:password@ip/xxx.rar可以下载特定目录的文件。

安装 vsftp

sudo apt-get install vsftpd
# 安装后版本是3.0.2
  • 启动:sudo /etc/init.d/vsftpd start 或者 sudo service vsftpd start
  • 重启:sudo /etc/init.d/vsftpd restart 或者 sudo service vsftpd restart
  • 启动:sudo /etc/init.d/vsftpd stop 或者 sudo service vsftpd stop

配置选项

搭建FTP服务需要关注:

  • 如何添加ftp用户
  • 冻结某ftp用户
  • 登录的默认目录
  • 用户访问的目录范围
  • 用户有哪些权限?是否上传文件?是否创建文件夹?

vsftp的主要配置文件在 /etc/vsftpd.conf:

#是否监听网络。
listen=YES 

# 是否允许匿名登录
anonymous_enable=NO

# 允许本地用户登录
local_enable=YES

# 是否允许FTP全局的写权限
# write_enable=YES

# 是否允许匿名用户上传,前提write_enable开启才有效
# anon_upload_enable=YES

# 是否允许匿名用户新建目录
# anon_mkdir_write_enable=YES 

# 是否开启目录推送,即登录后列出当前目录列表 
dirmessage_enable=YES 

# 是否开启登录、上传、下载等事件的日志功能。应开启! 
xferlog_enable=YES 

# 指定默认的日志文件,可指定为其他文件。 
xferlog_file=/var/log/vsftpd.log 

# 若设置为YES,则启用标准的ftpd日志格式。可以不启用。 
# xferlog_std_format=YES

# 服务器的端口是否设为20。如果不想用端口20,可以另外通过ftp_data_port来指定端口号。 
connect_from_port_20=YES

# 是否开启匿名用户上传文件后自动修改文件所有者
# chown_uploads=YES
# chown_username=whoever 当开启后,这里设置文件所有者

# 不活动用户的超时时间,超过这个时间则中断连接。 
idle_session_timeout=600 

# 数据连接超时时间 。
# data_connection_timeout=120 

# FTP用户登入时显示的信息 。 
# ftpd_banner=Welcome to blah FTP service. 

# 指定一个目录,用做在每个本地系统用户登录后的默认目录。 
# local_root=/home/ftp 

# 指定一个目录,用做匿名用户登录后的默认目录。 
# anon_root=/home/ftp 

# 这个组合用于指示用户可否切换到默认目录以外的目录。 其中,
# chroot_list_file默认是/etc/vsftpd.chroot_list,该文件定义一个用户列表。 
# chroot_local_user 设置为NO,chroot_list_enable设置为NO,则所有用户都是可以切换到默认目录以外的.
# 若chroot_local_user 设置为YES,chroot_list_enable设置为NO,则锁定FTP登录用户只能在其默认目录活动,不允许切换到默认目录以外。 
# 若chroot_local_user 设置为YES,chroot_list_enable设置为YES,则chroot_list_file所指定的文件里面的用户列表都可以访问默认目录以外的目录,而列表以外的用户则被限定在各自的默认目录活动。 
# 若chroot_local_user设置为NO,chroot_list_enable设置为YES,则chroot_list_file所指定的文件里面的用户列表都被限定在各自的默认目录活动,而列表以外的用户则可以访问默认目录以外的目录。 
# 建议设置:chroot_local_user与chroot_list_enable都设置为YES。这样就只有chroot_list_file所指定的文件里面的用户列表可以访问默认目录以外的目录,而列表以外的用户则被限定在各自的默认目录活动! 
# 好处:所有人都被限制在特定的目录里面。如果某些特定用户需要访问其他目录的权限,只需将其用户名写入chroot_list_file文件就可以赋予其访问其他目录的权限! 
# chroot_local_user、 chroot_list_enable、chroot_list_file 

# userlist_file、userlist_enable、userlist_deny 
# 这个组合用于指示用户可否访问FTP服务。 
# 其中,userlist_file默认是/etc/vsftpd.user_list,该文件定义一个用户列表。 
# 若userlist_enable设置为YES,userlist_deny设置为NO,则只有userlist_file所指定的文件里面的用户列表里面的用户可以访问FTP。 
若userlist_enable设置为YES,userlist_deny设置为YES,则userlist_file所指定的文件里面的用户列表里面的用户都被拒绝访问FTP。 
若userlist_enable设置为NO,userlist_deny设置为YES,则这个列表没有实际用处,起不到限制的作用!因为所有用户都可访问FTP。 
建议设置:userlist_enable与userlist_deny都设置为YES。这样则userlist_file所指定的文件里面的用户列表里面的用户都被拒绝访问FTP。 
好处:只需将某用户帐号加入到userlist_file所指定文件里面的用户列表,就可以起到暂时冻结该用户的功能! 
# user_config_dir 
# 指定一个目录用于存放每个用户各自的配置文件,比如指定user_config_dir=/etc/vsftpd_user_conf, 则kkk登录后会产生一个/etc/vsftpd_user_conf/kkk的文件,这个文件保存的配置都是针对kkk这个用户的。可以修改这个文件而 不用担心影响到其他用户的配置。 

准备工作

  • /home/ftp作为默认目录 mkdir /home/ftp
  • 修改目录属性chown ftp:ftp /home/htp,没有用户或组群就新建addgroup ftp
  • 增加ftp用户 adduser --shell /bin/false --home /home/ftp your_usr_name ,加入到ftp群组:usermod -aG ftp your_usr_name
  • 新建两文件:touch /etc/vsftpd.chroot_list touch /etc/vsftpd.user_list

以下是我用的配置vsftp.conf:

listen=YES
#listen_ipv6=YES
anonymous_enable=YES
local_enable=YES
write_enable=YES
#anon_upload_enable=YES
#anon_mkdir_write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
#chown_uploads=YES
#chown_username=whoever
#xferlog_file=/var/log/vsftpd.log
#xferlog_std_format=YES
idle_session_timeout=600
data_connection_timeout=120
#nopriv_user=ftpsecure
#async_abor_enable=YES
#ascii_upload_enable=YES
#ascii_download_enable=YES
#ftpd_banner=Welcome to blah FTP service.
#deny_email_enable=YES
#banned_email_file=/etc/vsftpd.banned_emails
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
#ls_recurse_enable=YES
secure_chroot_dir=/var/run/vsftpd
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO
anon_root=/home/ftp
local_root=/home/ftp
userlist_file=/etc/vsftpd.user_list
userlist_enable=NO
userlist_deny=YES
user_config_dir=/etc/vsftp_user_conf

待续


本文由 hongweipeng 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。

赏个馒头吧