CentOS安装FTP及配置用户

来源:互联网 发布:linux vi编辑最后一行 编辑:程序博客网 时间:2024/05/21 09:08

vsftpd作为FTP服务器,在Linux系统中是非常常用的。下面我们介绍如何在centos系统上安装vsftp。

一、什么是vsftpd

vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序。特点是小巧轻快,安全易用。

vsftpd 的名字代表”very secure FTP daemon”, 安全是它的开发者 Chris Evans 考虑的首要问题之一。在这个 FTP 服务器设计开发的最开始的时候,高安全性就是一个目标。

 

二、安装vsftpd

1、以管理员(root)身份执行以下命令

[root@localhost etc]# yum install vsftpd

2、设置开机启动vsftpd ftp服务

[root@localhost vsftpd]# chkconfig vsftpd on

3、启动vsftpd服务

[root@localhost vsftpd]# service vsftpd start

     停止vsftpd服务

[root@localhost vsftpd]# service vsftpd stop

     重启vsftpd服务

[root@localhost vsftpd]# service vsftpd restart


三、配置防火墙
1、打开/etc/sysconfig/iptables文件

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

2、在REJECT行之前添加如下代码

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

     如果没有RH-Firewall-1-INPUT链,则直接使用INPUT,如下

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

3、保存并关闭文件,重启防火墙服务

[root@localhost vsftpd]# service iptables restart


四、配置vsftpd服务器
添加ftp用户,这里增加添加一个用户名为sgl的ftp用户,设置根目录为/ftpuser/sgl,禁止此用户SSh登录,并限制访问其它目录。

(a)打开/etc/vsftpd/vsftpd.conf配置文件,修改控制ftp用户访问其它目录的规则(详细说明参考 步骤五 ),添加或修改配置参数chroot_list_enable和chroot_list_file

chroot_list_enable=YES# (default follows)chroot_list_file=/etc/vsftpd/chroot_list

(b)添加ftp用户sgl,根目录为/ftpuser/sgl,并禁止登录SSh权限

[root@localhost vsftpd]# useradd -d /ftpuser/sgl -g ftp -s /sbin/nologin sgl

(c)设置ftp用户sgl的登录密码

[root@localhost vsftpd]# passwd sgl

(d)添加或编辑文件chroot_list,添加ftp用户名,每个用户名一行

[root@localhost vsftpd]# vi /etc/vsftpd/chroot_list

     如:这里是在wwj用户下面追加了刚添加sgl用户

wwj
sgl
(e)重启vsftpd服务

[root@localhost vsftpd]# service vsftpd restart

到现在为止,已经安装好了ftp并添加了sgl用户

另外,如果觉得以后管理ftp用户名嫌麻烦,可以使用centos官方发布的脚本管理。地址如下:http://wiki.centos.org/HowTos/Chroot_Vsftpd_with_non-system_users


五、chroot_list_enable和chroot_local_user配置规则
在默认配置下,本地用户登入FTP后可以使用cd命令切换到其他目录,这样会对系统带来安全隐患。可以通过以下三条配置文件来控制用户切换目录。
chroot_list_enable=YES/NO(NO)
设置是否启用chroot_list_file配置项指定的用户列表文件。默认值为NO。
chroot_list_file=/etc/vsftpd.chroot_list
用于指定用户列表文件,该文件用于控制哪些用户可以切换到用户家目录的上级目录。
chroot_local_user=YES/NO(NO)
用于指定用户列表文件中的用户是否允许切换到上级目录。默认值为NO。
通过搭配能实现以下几种效果:
①当chroot_list_enable=YES,chroot_local_user=YES时,在/etc/vsftpd.chroot_list文件中列出的用户,可以切换到其他目录;未在文件中列出的用户,不能切换到其他目录。
②当chroot_list_enable=YES,chroot_local_user=NO时,在/etc/vsftpd.chroot_list文件中列出的用户,不能切换到其他目录;未在文件中列出的用户,可以切换到其他目录。
③当chroot_list_enable=NO,chroot_local_user=YES时,所有的用户均不能切换到其他目录。
④当chroot_list_enable=NO,chroot_local_user=NO时,所有的用户均可以切换到其他目录。


六、vsftpd的防火墙配置

1、以主动方式访问ftp,配置如下:

(a)打开防火墙端口配置文件iptables

[root@localhost vsftpd]# vim /etc/sysconfig/iptables
(b)在REJECT的前面添加21端口
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
(c)重启防火墙服务

[root@localhost vsftpd]# service iptables restart

2、以被动方式访问ftp,配置如下:

(a)打开ftp的配置文件

[root@localhost vsftpd]# vim /etc/vsftpd/vsftpd.conf 
(b)在配置文件末尾添加以下内容
pasv_enable=YESpasv_min_port=40000pasv_max_port=40080pasv_promiscuous=YES
(c)重启vsftpd服务

[root@localhost vsftpd]# service vsftpd restart
(d)打开防火墙端口配置文件iptables
[root@localhost vsftpd]# vim /etc/sysconfig/iptables
(e)在REJECT的前面添加以下配置
-A INPUT -p tcp -m multiport --dports 40000:40080 -j ACCEPT
(f)重启防火墙服务
[root@localhost vsftpd]# service iptables restart


可能的错误:

1、连接时无法切换目录,报以下错误:

响应: 500 OOPS: cannot change directory:/home/sgl
错误: 严重错误: 无法连接到服务器

错误原因:由于selinux里设置了关闭ftp,运行命令查看SE:getsebool -a |grep ftp,解决如下:

[root@localhost vsftpd]# getsebool -a|grep ftp
allow_ftpd_anon_write --> off
allow_ftpd_full_access --> off
allow_ftpd_use_cifs --> off
allow_ftpd_use_nfs --> off
ftp_home_dir --> off
ftpd_connect_db --> off
ftpd_use_fusefs --> off
ftpd_use_passive_mode --> off
httpd_enable_ftp_server --> off
tftp_anon_write --> off
tftp_use_cifs --> off
tftp_use_nfs --> off

解决方法:将ftp_home_dir设置为on,执行以下命令,然后即可ftp登录:

[root@localhost vsftpd]# setsebool ftp_home_dir 1

或者

[root@localhost vsftpd]# setsebool -P ftp_home_dir 1

-P参数表示永久生效,关机重启后无需再设置


2、上传创建文件时报以下错误:

响应: 553 Could not create file.
错误: 严重文件传输错误

问题原因:也是selinux设置的问题

解决方法:运行命令

[root@localhost vsftpd]# setsebool allow_ftpd_full_access 1

或者

[root@localhost vsftpd]# setsebool -P allow_ftpd_full_access 1


如果按上面设置还是无法搞定,终极解决方法:关闭SELinux

方法1、 永久关闭,需要重启服务器
修改/etc/selinux/config文件中设置SELINUX=disabled ,然后重启服务器。

方法2、 临时关闭
使用命令setenforce 0
[root@localhost vsftpd]# setenforce 0


setenforce 1 设置SELinux 成为enforcing模式
setenforce 0 设置SELinux 成为permissive模式









参考自:

http://www.cnblogs.com/Anders888/p/4169710.html

http://blog.csdn.net/hyholine/article/details/24579001

 

 

 

 

 

 

 

 

 

 

 

0 0
原创粉丝点击