Ubuntu 下ftp服务器的安装配置

Ubuntu 下ftp服务器的安装配置

FTP服务器是平时应用最为普遍的服务之一。VSFTP是Very Secure FTP的缩写,意指很是安全的FTP服务。VSFTP功能强大,经过结合本地系统的用户认证模块及其多功能的配置项目,能够快速有效的搭建强大的多用户FTP服务。

首先咱们考虑搭建FTP服务须要关注的都有哪些方面?好比咱们最常常关注的有:
一、如何添加FTP用户? 
二、如何临时冻结某FTP用户? 
三、FTP用户登入后的默认目录?是否能够改变? 
四、如何锁定FTP用户可访问的目录范围? 
五、FTP用户能够有哪些访问权限?能否上传文件?
咱们将带着这些问题来探讨如何配置VSFTP以达到预约目标。

1、主要配置选项
VSFTP的主配置文件是/etc/vsftpd.conf 。因为可配置的选项实在太多,没法一一详谈,只能截取比较经常使用的功能配置选项来加以说明。完整说明可参考man vsftpd.conf。
这里须要注意的是,每一个配置选项都是由“配置项目名称=配置值“所定义。在每一个配置变量后,要紧跟等号,再紧跟设置的变量值。中间不容许出现空格之类的分隔符,不然致使配置错误,没法生效!
另外,若是须要开通上传功能,则应注意用来登陆FTP的本地系统用户对要操做的目录须要具有写权限,不然没法上传文件!

版本vsftpd: version 2.0.6
启动VSFTPD:sudo /etc/init.d/vsftpd start
中止VSFTPD:sudo /etc/init.d/vsftpd stop
重启VSFTPD:sudo /etc/init.d/vsftpd restart

如下为经常使用的配置选项:
一、listen=YES
若设置为YES,开启监听网络。

二、anonymous_enable
若设置为YES,则容许匿名用户访问;若设置为NO则拒绝匿名用户访问。
若是开启的话,则能够经过用户名ftp或者anonymous来访问,密码随便。

三、local_enable
若设置为YES,则容许经过本地用户账号访问;若设置为NO,则拒绝本地用户账号访问。若是你拒绝了陌生人访问,那么这个必须设置为YES吧,不然谁能访问你的FTP呢?

四、write_enable
若设置为YES,则开启FTP全局的写权限;若设置为NO,则不开。
若为NO则全部FTP用户都没法写入,包括没法新建、修改、删除文件、目录等操做,也就是说用户都没办法上传文件!!

五、anon_upload_enable 
若设置为YES,开启匿名用户的上传权限。前提是write_enable有开启,而且用户具备对当前目录的可写权限。若设置为NO,则关闭匿名用户的上传权限。

六、anon_mkdir_write_enable 
若设置为YES,开启匿名用户新建目录的权限。前提是write_enable有开启,而且用户具备对当前目录的可写权限。若设置为NO,则关闭匿名用户新建目录的权限。

七、dirmessage_enable 
若设置为YES,则可开启目录信息推送,也就是用户登陆FTP后能够列出当前目录底下的文件、目录。 这个应该要开启吧!

八、xferlog_enable 
若设置为YES,则开启登陆、上传、下载等事件的日志功能。应开启! 

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

十、xferlog_std_format
若设置为YES,则启用标准的ftpd日志格式。能够不启用。 

十一、connect_from_port_20 
若设置为YES,则服务器的端口设为20。
若是不想用端口20,能够另外经过ftp_data_port来指定端口号。

十二、chown_uploads
若设置为YES,则匿名用户上传文件后系统将自动修改文件的全部者。
若要开启,则chown_username=whoever也需指定具体的某个用户,用来做为匿名用户上传文件后的全部者。 

1三、idle_session_timeout=600 
不活动用户的超时时间,超过这个时间则中断链接。

1四、data_connection_timeout=120 
数据链接超时时间 。

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

1六、local_root=/home/ftp
指定一个目录,用作在每一个本地系统用户登陆后的默认目录。 

1七、anon_root=/home/ftp
指定一个目录,用作匿名用户登陆后的默认目录。 

1八、chroot_local_user、 chroot_list_enable、chroot_list_file
这个组合用于指示用户能否切换到默认目录之外的目录。
其中,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文件就能够赋予其访问其余目录的权限! 

1九、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所指定文件里面的用户列表,就能够起到暂时冻结该用户的功能!

20、user_config_dir 
指定一个目录用于存放针对每一个用户各自的配置文件,好比用户kkk登陆后,会以该用户名创建一个对应的配置文件。 
好比指定user_config_dir=/etc/vsftpd_user_conf, 则kkk登陆后会产生一个/etc/vsftpd_user_conf/kkk的文件,这个文件保存的配置都是针对kkk这个用户的。能够修改这个文件而 不用担忧影响到其余用户的配置。 

2、个人VSFTP的配置方案
#首先要安装VSFTP。源码编译或软件包安装均可以。
#如下方案实现如下功能:
#一、锁定用户在/home/ftp默认目录活动,
#     并保留/etc/vsftpd.chroot_list文件里面的用户列表可访问其余目录。
#二、具有暂时冻结FTP用户的功能,将需暂停的用户名加入到/etc/vsftpd.usr_list便可。
#
#设置配置文件:
#复制如下文件并保存为/etc/vsftpd.conf
#新建两文件:touch /etc/vsftpd.chroot_list
#                    touch /etc/vsftpd.user_list
#新建目录:mkdir /home/ftp
#新建群组:addgroup ftp
#修改/home/ftp属性:chown ftp:ftp /home/ftp
#新增FTP用户: adduser --shell /bin/false --home /home/ftp your_usr_name
#把须要开通FTP的用户名加入到ftp群组:usermod -aG ftp your_usr_name
#注意:
#若是你的/etc/shells里面没有包含/bin/false,则你用上述的方法创建的用户将法访问#FTP,解决方法:编辑/etc/shells,加入/bin/false这行。
#
# Example config file /etc/vsftpd.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 
anon_root=/home/ftp 
local_root=/home/ftp 
userlist_file=/etc/vsftpd.user_list 
userlist_enable=YES 
userlist_deny=YES


3、回答前面提到的问题

一、如何添加FTP用户? 
设置local_enable为YES能够开放系统用户访问FTP。
在系统里面添加用户,将shell设置为/bin/false,并将其家目录若设置为/home/ftp或者其余目录。这样就能够创建只访问FTP而没法登陆shell环境的用户。
注意:能够新建一个ftp组,把/home/ftp的全部者设为ftp,群组也设为ftp。而后全部新添加的FTP用户只需加入到FTP群组就能够具备对/home/ftp的访问权限了。这样也方便管理用户量比较大的FTP系统。如:
sudo addgroup ftp #若是有了就不用添加
sudo chown ftp:ftp /home/ftp #若是改过了就不用再改
sudo adduser --shell /bin/false --home /home/ftp user1 #添加用户user1
sudo usermod  -aG ftp  user1  #把用户user1加入到ftp组
这样即可以经过用户名user1来访问FTP服务了。

二、如何临时冻结某FTP用户? 
将userlist_enable与userlist_deny都设置为YES。这样userlist_file所指定的文件里面的用户列表里面的用户都 被拒绝访问FTP。只需将某用户账号加入到userlist_file所指定文件里面的用户列表,就能够起到暂时冻结该用户的功能!如需从新开通使用权 限,则只需从该文件中去掉相应的用户名。

三、FTP用户登入后的默认目录?是否能够改变? 
能够经过local_root、anon_root来指定相应的默认目录。

四、如何锁定FTP用户可访问的目录范围? 
将chroot_local_user与chroot_list_enable都设置为YES。这样就只有chroot_list_file所指定的文件 里面的用户列表能够访问默认目录之外的目录,而列表之外的用户则被限定在各自的默认目录活动!若是某些特定用户须要访问其余目录的权限,只需将其用户名写 入chroot_list_file文件就能够赋予其访问其余目录的权限! 

五、FTP用户能够有哪些访问权限?能否上传文件?
设置write_enable能够开启全局的写权限。这样FTP用户就能够在本地账号管理系统容许的范围内进行写操做
相关文章
相关标签/搜索