vsftpd服务器搭建

vsftp服务器搭建
创建时间:20120620

安装:
    $ sudo yum install vsftpd -y

开机启动:
    $ sudo chkconfig --list  
    $ sudo chkconfig vsftpd on

启动
    $ sudo service vsftpd start
     
修改配置:
    $ sudo vim /etc/vsftpd/vsftpd.conf
    添加如下:
        # standalone运行模式
        listen=YES      
  
# 允许匿名用户
anonymous_enable=YES
# 匿名用户登录时不询问口令
no_anon_password=YES
# 允许匿名用户上传
anon_upload_enable=YES
# 允许匿名用户建立目录
#anon_mkdir_write_enable=YES
anon_mkdir_write_enable=NO
# 允许匿名用户具有建立目录,上传文件之外的权限,如重命名、删除
anon_other_write_enable=YES
# 匿名用户最大的下载和上传速度为1M
anon_max_rate=1048576
# 匿名用户上传的权限
anon_umask=022

        # ftp 可写
        write_enable=YES

# 允许本地用户登录
        Local_enable=YES
# Default umask for local users  is 077. But we wish to change this to 022
        local_umask=022

        # 日志文件的设定
        # Activate logging of uploads/downloads.
        xferlog_enable=YES
        # 日志文件的存储位置
        xferlog_file=/var/log/vsftpd.log
        # 鉴于中文会有乱码的问题,开始syslog
        # ftp信息可以到/var/log/messages下查看,这样vsftpd.log和
        # messages都写入日志
        syslog_enable=yes
        # 日志的格式
        xferlog_std_format=YES

添加虚拟用户:
$ sudo adduser -d /home/upload -g ftp -s /sbin/nologin gftchina
如果添加错误,可以使用下面命令对账户进行彻底删除
$ sudo userdel -r gftchina
设置密码:
$ sudo passwd gftchina

配置gftchina用户可以访问/var/ftp/pub目录:
(因为pub目录默认是匿名用户访问的目录,而gftchina账户需要访问此目录,所以需要有访问的权限)
$ sudo chown gftchina:ftp /var/ftp/pub/

修改selinux设置:
查看设置:
$ sudo getsebool -a| grep ftp
确保开通了匿名用户的写和上传权限:
$ sudo setsebool -P allow_ftpd_full_access 1
$ sudo setsebool –P allow_ftpd_anon_write 1
----------------------------------------------------------------------------------------------
也可以将selinux禁用(不推荐):
$ sudo vim /etc/selinux/config
将SELINUX=enforcing
改为:SELINUX=disabled

防火墙设置:
    1. 加载ip_conntrack_ftp 模块:
        $ sudo vim /etc/sysconfig/iptables-config
        添加如下:
        IPTABLES_MODULES="ip_conntrack_ftp"
    2. 开放ftp需要的默认21端口:
        $ sudo vim /etc/sysconfig/iptables
        添加如下:
        -A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
    3. 重启iptables
        $ sudo service iptables restart

重启ftp:
$ sudo service vsftpd restart


测试访问:
    ftp://192.168.1.42/


Tips:
1. vsftpd 号称最安全的FTP服务器,所以他的权限控制还是很严格的,所以如果发现了类似拒绝访问这样的情况,首先应该想到的是对应的目录是否有权限,当然这个也要根据具体的错误提示来判断。
vsftpd 家目录在/var/ftp下,可以通过此命令查看:
$ sudo cat /etc/passwd | grep ftp
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
$ sudo cat /etc/group | grep ftp
ftp:x:50:
也就是说FTP用户的家目录不可以针对所有用户、用户组、其他用户组完全开放:
查看权限:
$ sudo ll -d /var/ftp/
drwxr-xr-x. 3 root root 4096 Jun 14 09:30 /var/ftp/
如果权限不对,则做相应的修改:
$ sudo chown root:root /var/ftp
$ sudo chmod 755 /var/ftp

2. /var/ftp权限正确后,对应的是匿名用户的可读、可下载、可上传的问题,匿名用户对应的目录是/var/ftp/pub下,那必须赋予这个目录的完全权限:
$ sudo chmod 777 /var/ftp/pub


后话:
vsftpd提供了standalone和inetd(inetd或xinetd)两种运行模式。
standalone一次性启动,运行期间一直驻留在内存中,优点是对接入信号反应快,缺点是损耗了一定的系统资源,因此经常应用于对实时反应要求较高的专业FTP服务器。
inetd恰恰相反,由于只在外部连接发送请求时才调用FTP进程,因此不适合应用在同时连接数量较多的系统。此外,inetd模式不占用系统资源。除了反应速度和占用资源两方面的影响外,vsftpd还提供了一些额外的高级功能,如inetd模式支持per_IP(单一IP)限制,而 standalone模式则更有利于PAM验证功能的应用。

猜你喜欢

转载自greybeard.iteye.com/blog/1564962