欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

vsftpd服务器搭建

程序员文章站 2022-05-19 17:18:58
...
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验证功能的应用。