Linux下安装FTP服务器及配置方法

通常情况下,向服务器上传代码、文件,vsftp用的还是比较多的。下面是本人安装配置的过程。 
安装步骤 
1.通过yum来安装vsftpd

[root@localhost ~]# yum -y install vsftpd

2.设置为开机启动

[root@localhost ~]# chkconfig vsftpd on

针对centos7:  systemctl enable vsftpd

3.vsftpd服务器的基本配置

vsftpd服务器的配置文件保存在“/etc”目录和它的子目录中。

(1)  vsftpd.conf文件中的配置项

vsftpd.conf文件中所有的配置记录都包括配置项和配置值两部分内容,中间用等号连接。

  vsftpd.conf文件中的默认配置使用于最常用的FTP服务器配置需求,去除注释行后的配置文件中包括如下配置内容,让其配置生效:

   vi /etc/vsftpd/vsftpd.conf

chroot_local_user=YES      #这行可能需自己写

anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
 
 
pam_service_name=vsftpd
userlist_enable=YES
listen=YES
tcp_wrappers=YES

说明:可以设置访问的路径(访问者只能特定目录下的文件):local_root=/Backup

          service vsftpd restart

    重启ftp服务器就可以了,此时你可通过在网页中输入ftp://192.168.xxx.xxx(这里输入你的服务器ip地址) 验证之。


vsftpd.conf文件中的默认配置的含义如下:

  anonymous_enable=YES,表示FTP可以允许匿名登陆

  local_enable=YES,表示允许本地用户登陆

  write_enable=YES,表示FTP服务器开放对本地用户的写权限

  local_umask=022,设置本地用户的文件生成掩码

  dirmessage_enable=YES,当切换到FTP服务器中的某个目录时,将显示该目录下的“.message”隐含文件了内容

  xferlog_enable=YES,FTP将启用上传和下载日志

  connect_from_port_20=YES,ftp将启用ftp数据端口的连接请求

  xferlog_std_format=YES,ftp将使用标准的ftpd xferlog日志格式

  pam_service_name=vsftpd,设置PAM认证服务的配置文件名称,该文件保存在“/etc/pam.d/”目录下。

  userlist_enable=YES,ftp将检查userlist_file设置文件中指定的用户是否可以访问vsftpd服务器

  listen=YES,ftp服务器将处于独立启动模式

  tcp_wrappers=YES,ftp服务器将使用tcp_wrappers作为主机访问控制模式。


(2)  ftpusers文件 

vi /etc/vsftpd/ftpusers

  ftpusers文件位于“/etc/vsftpd”目录中,用于保存不允许进行ftp登陆的本地用户帐号,这些帐号(包括root用户在内)通常不是普通用户帐号,而是在系统中具有较高权限的帐号。禁止这些用户可以提高系统的安全性

(3) user_list文件

vi /etc/vsftpd/user_list

user_list文件位于“/etc/vsftpd”目录中,具有与ftpusers文件类似的访问控制功能,但是使用起来更加灵活。

(1)       设置登陆的用户帐号

vsftpd.conf配置文件中包括以下设置时,user_list文件中的用户帐号被禁止进行ftp登陆。

userlist_enable=YES
userlist_deny=YES

userlist_deny设置项设置使用user_list文件,userlist_deny设置为YES表示user_list文件用于设置禁止登陆的用户帐号。

  (2)       设置只允许登陆的用户帐号

vsftpd.conf配置文件中包括以下设置时,只有user_list文件中的用户帐号能够进行ftp登陆

userlist_enable=YES
userlist_deny=NO

userlist_enable设置项设置使用user_list文件,userlist_deny设置为NO表示user_list文件用于设置只允许登陆的用户帐号,文件中未包括的用户帐号被禁止ftp登陆

5、  匿名用户登陆目录

当用户匿名登陆ftp服务器时,将进入“/var/ftp”目录,并且将该目录作为根目录,即匿名用户不能离开该目录,只能进入该目录的子目录


4.配置保存后重启vsftpd服务:

[root@localhost ~]# service vsftpd restart

针对centos7:  systemctl restart vsftpd

添加用户及额外配置 
1.设置vsftp的帐号。

[root@localhost ~]# useradd -d /home/htdocs -s /sbin/nologin 用户名

2.为添加的账号设置密码

[root@localhost ~]# passwd 用户名
根据提示操作123

这样的话,基本的vsftpd服务配置好了。但是这样配置完成后客户端并不能连接上,主要应该是默认防火墙设置下,CentOS的防火墙是不开放ftp服务的,需要添加模块和开放21端口才能提供ftp访问。 
1.添加ip_conntrack_ftp 模块

[root@localhost ~]# vi /etc/sysconfig/iptables-config

添加下面一行

IPTABLES_MODULES="ip_conntrack_ftp"

2.打开21端口

[root@localhost ~]# vi /etc/sysconfig/iptables

添加

    -A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT

3.重启iptables使新的规则生效

[root@localhost ~]# service iptables restart

到此,应该是可以了,若软件测试连接过程中,在用户验证的时候出现了错误503,应该是selinux设置的问题:可以用下面的命令检查

[root@localhost ~]#getsebool -a |grep ftp

allow_ftpd_anon_write --> off
allow_ftpd_full_access --> off
allow_ftpd_use_cifs --> off
allow_ftpd_use_nfs --> off
allow_tftp_anon_write --> off
ftp_home_dir --> off
ftpd_connect_db --> off
ftpd_disable_trans --> off
ftpd_is_daemon --> on
httpd_enable_ftp_server --> off

这是selinux的问题,我们只要打开ftp_home_dir的值开启为on:,allow_ftpd_full_access也一同开启即可。

[root@localhost ~]#setsebool -P ftp_home_dir 1
[root@localhost ~]#setsebool -P allow_ftpd_full_access 1


附:vsftp中文说明

anonymous_enable=YES 是否允许匿名ftp,如否则选择NO
local_enable=YES 是否允许本地用户登录
local_umask=022 默认的umask码
anon_upload_enable=YES 是否允许匿名ftp用户访问
anon_upload_enable=YES 是否允许匿名上传文件
anon_mkdir_write_enable=YES 是否允许匿名用户有创建目录的权利
dirmessage_enable=YES 是否显示目录说明文件,默认是YES但需要收工创建.message文件
xferlog_enable=YES 是否记录ftp传输过程
connect_from_port_20=YES 是否确信端口传输来自20(ftp-data)
chown_upload=YES
chown_username=username
是否改变上传文件的属主,如果是需要输入一个系统用户名,你可以把上传的文件都改成root属主
xferlog_file=/var/log/vsftpd.log ftp传输日志的路径和名字默认是/var/log/vsftpd.log
xferlog_std_format=YES

是否使用标准的ftp xferlog模式

idle_session_timeout=600 设置默认的断开不活跃session的时间
data_connection_timeout=120 设置数据传输超时时间
nopriv_user=ftpsecure 运行vsftpd需要的非特权系统用户默认是nobody
async_abor_enable=YES 是否允许运行特殊的ftp命令async ABOR.
ascii_upload_enable=YES
ascii_download_enable=YES
是否使用ascii码方式上传和下载文件
ftpd_banner=Welcome to chenlf FTP service. 定制欢迎信息
deny_email_enable=YES
banned_email_file=/etc/vsftpd.banned_emails
是否允许禁止匿名用户使用某些邮件地址,如果是输入禁止的邮件地址的路径和文件名
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
是否将系统用户限止在自己的home目录下,如果选择了yes那么chroot_list_file=/etc/vsftpd.chroot_list中 列出的是不chroot的用户的列表
max_clients=Number 如果以standalone模式起动,那么只有$Number个用户可以连接,其他的用户将得到错误信息,默认是0不限止
message_file 设置访问一个目录时获得的目录信息文件的文件名,默认是.message


上一篇:全端工程师和设计师必读文章推荐【系列三十一】


下一篇:ajax调用本页js【备忘】