通常情况下,向服务器上传代码、文件,vsftp用的还是比较多的。下面是本人安装配置的过程。
安装步骤
1.通过yum来安装vsftpd
[root@localhost ~]# yum -y install vsftpd
2.设置为开机启动
[root@localhost ~]# chkconfig vsftpd on
针对centos7: systemctl enable vsftpd.service
3.vsftpd服务器的基本配置
vsftpd服务器的配置文件保存在“/etc”目录和它的子目录中。
(1) vsftpd.conf文件中的配置项
vsftpd.conf文件中所有的配置记录都包括配置项和配置值两部分内容,中间用等号连接。
vsftpd.conf文件中的默认配置使用于最常用的FTP服务器配置需求,去除注释行后的配置文件中包括如下配置内容,让其配置生效:
vi /etc/vsftpd/vsftpd.conf
chroot_local_user=YES #这行可能需自己写
anonymous_enable=NO
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=/home/upload/
说明:可以设置访问的路径(访问者只能特定目录下的文件):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 ~]# /bin/systemctl restart vsftpd.service
启动:[root@localhost ~]# /bin/systemctl start vsftpd.service
停止:[root@localhost ~]# /bin/systemctl stop vsftpd.service
针对centos7: systemctl restart vsftpd
添加用户及额外配置
1.设置vsftp的帐号。
[root@localhost ~]# useradd -d /home/htdocs -g root -s /sbin/nologin 用户名
2.为添加的账号设置密码
[root@localhost ~]# passwd 用户名
根据提示操作123
如果提示linux ftp 用户不能覆盖、写入、创建文件的权限问题,则设置如下:
chown ftp用户:用户组 -R 你的ftp目录 #改变目录权限
chmod 755 -R 你的ftp目录 #设置目录可编辑
例子:
chown ftpu:root -R /home/upload
chmod 755 -R /home/upload
这样的话,基本的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 |