Vsftpd 简介
- vsftpd 是“very secure FTP daemon”的缩写,安全性是它的一个最大的特点。vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux、BSD、Solaris、 HP-UNIX等系统上面,是一个完全免费的、开放源代码的ftp服务器软件,支持很多其他的 FTP 服务器所不支持的特征。比如:非常高的安全性需求、带宽限制、良好的可伸缩性、可创建虚拟用户、支持IPv6、速率高等。
- Vsftpd传送门:http://freecode.com/projects/vsftpd/
- Vsftpd下载地址:https://security.appspot.com/vsftpd.html
Vsftpd 安装
安装Vsftpd配置FTP服务器。
- > [1]配置Vsftpd。
-
- [root@linuxprobe ~]# yum -y install vsftpd
- [root@linuxprobe ~]# vi /etc/vsftpd/vsftpd.conf
- # line 12: no anonymous
-
- anonymous_enable=NO
- # line 82,83: uncomment ( allow ascii mode )
-
- ascii_upload_enable=YES
- ascii_download_enable=YES
- # line 100,101: uncomment ( enable chroot )
-
- chroot_local_user=YES
- chroot_list_enable=YES
- # line 103: uncomment ( specify chroot list )
-
- chroot_list_file=/etc/vsftpd/chroot_list
- # line 109: uncomment
-
- ls_recurse_enable=YES
- # line 114: change ( if use IPv4 )
-
- listen=YES
- # line 123: change ( turn to OFF if it's not need )
-
- listen_ipv6=NO
- # add follows to the end
-
- # specify root directory ( if don't specify,users' home directory become FTP home directory)
-
- local_root=public_html
- # use localtime
-
- use_localtime=YES
- # turn off for seccomp filter ( if you cannot login,add this line )
-
- seccomp_sandBox=NO
- [root@linuxprobe ~]# vi /etc/vsftpd/chroot_list
- # add users you allow to move over their home directory
-
- cent
- [root@linuxprobe ~]# systemctl start vsftpd
-
- [root@linuxprobe ~]# systemctl enable vsftpd
-
- [2]如果Firewalld正在运行,请允许FTP服务。
-
- [root@dlp ~]# firewall-cmd --add-service=ftp --permanent
- success
- [root@dlp ~]# firewall-cmd --reload
- success
-
- [3]如果启用了SELinux,则更改布尔设置。
- [root@dlp ~]# setsebool -P ftpd_full_access on
ProFTPD 简介
- ProFTPD:一个Unix平台上或是类Unix平台上(如Linux,FreeBSD等)的FTP服务器程序,它是在自由软件基金会的版权声明(GPL)下开发、发布的免费软件,也就是说任何人只要遵守GPL版权声明,都可以随意修改源始码。
- ProFTPD官方地址:http://www.proftpd.org/
- ProFTPD官方文档:http://www.proftpd.org/docs/
ProFTPD 安装
- 安装ProFTPD以配置FTP服务器。
- [1] Install and configure ProFTPD.
- # install from EPEL
- [root@linuxprobe ~]# yum --enablerepo=epel -y install proftpd
- [root@linuxprobe ~]# vi /etc/proftpd.conf
- # line 77: change to your own hostname
- ServerName "www.srv.world "
- # line 79: change to your email address
-
- ServerAdmin root@srv.world
- # line 113: add
- # get access log & get auth log
- ExtendedLog /var/log/proftpd/access.log WRITE,READ default
- ExtendedLog /var/log/proftpd/auth.log AUTH auth
- [root@linuxprobe ~]# vi /etc/ftpusers
- # add users you prohibit to FTP access
- test
- [root@linuxprobe ~]# systemctl start proftpd
- [root@linuxprobe ~]# systemctl enable proftpd
-
- # 在另外的服务器上面设置Selinux
- [2] If Firewalld is running,allow FTP service.
- [root@vdevops ~]# firewall-cmd --add-service=ftp --permanent
- success
- [root@vdevops ~]# firewall-cmd --reload
- success
- [3] If SELinux is enabled,change boolean setting.
- [root@vdevops ~]# setsebool -P ftpd_full_access on
PureFTPd 简介
- PureFTPd[1] 是一款专注于程序健壮和软件安全的免费FTP服务器软件(基于BSD License)。其可以在多种类Unix操作系统中编译运行,包括Linux、OpenBSD、NetBSD、FreeBSD、DragonFly BSD、Solaris、Tru64、Darwin、Irix and HP-UX。PureFTPd还有Android移植版本。
- PureFTPd 官方地址:https://www.pureftpd.org/project/pure-ftpd
- PureFTPd 官方文档:https://www.pureftpd.org/project/pure-ftpd/doc
- PureFTPd 下载地址:https://www.pureftpd.org/project/pure-ftpd/download
PureFTPd 安装
- 安装Pure-FTPd以配置FTP服务器
- [1] Install Pure-FTPd.
- # install from EPEL
- [root@linuxprobe ~]# yum --enablerepo=epel -y install pure-ftpd
- [root@linuxprobe ~]# vi /etc/pure-ftpd/pure-ftpd.conf
- # line 77: change (no Anonymous)
- NoAnonymous yes
- # line 453: uncomment (if you use only IPv4)
- IPV4Only yes
- # line 460: uncomment (if you use only IPv6)
- IPV6Only yes
- [root@linuxprobe ~]# systemctl start pure-ftpd
- [root@linuxprobe ~]# systemctl enable pure-ftpd
- [2] If Firewalld is running,change boolean setting.
- [root@vdevops ~]# setsebool -P ftpd_full_access on
FTP Client : CentOS
- 以CentOS为例, 配置客户端计算机以连接到FTP服务器
- [1] 安装FTP客户端 .
- [root@vdevops ~]# yum -y install lftp
- [2] 默认情况下禁止使用root帐户连接,因此可以使用普通用户访问FTP服务器 .
- # lftp [option] [hostname]
- [redhat@vdevops ~]$ lftp -u wang linuxprobe.org
- Password: # password of the user
- lftp wang@linuxprobe.org:~>
- # 显示FTP服务器上的当前目录
- lftp wang@linuxprobe.org:~> pwd
- ftp://wang@linuxprobe.org
- # 显示本地服务器上的当前目录
- lftp wang@linuxprobe.org:~> !pwd
- /home/redhat
- # 在FTP服务器上显示当前目录中的文件
- lftp wang@linuxprobe.org:~> ls
- drwxr-xr-x 2 1000 1000 23 Jul 19 01:33 public_html
- -rw-r--r-- 1 1000 1000 399 Jul 20 16:32 test.py
- # 显示本地服务器上当前目录中的文件
- lftp wang@linuxprobe.org:~> !ls -l
- total 12
- -rw-rw-r-- 1 redhat redhat 10 Jul 20 14:30 redhat.txt
- -rw-rw-r-- 1 redhat redhat 10 Jul 20 14:59 test2.txt
- -rw-rw-r-- 1 redhat redhat 10 Jul 20 14:59 test.txt
- # 更改目录
- lftp wang@linuxprobe.org:~> cd public_html
- lftp wang@linuxprobe.org:~/public_html> pwd ftp://wang@linuxprobe.org/%2Fhome/wang/public_html
- # 将文件上传到FTP服务器
- # “-a”表示ascii模式(默认为二进制模式)
- lftp wang@linuxprobe.org:~> put -a redhat.txt
- 22 bytes transferred
- Total 2 files transferred
- lftp wang@linuxprobe.org:~> ls
- drwxr-xr-x 2 1000 1000 23 Jul 19 01:33 public_html
- -rw-r--r-- 1 1000 1000 10 Jul 20 17:01 redhat.txt
- -rw-r--r-- 1 1000 1000 399 Jul 20 16:32 test.py
- -rw-r--r-- 1 1000 1000 10 Jul 20 17:01 test.txt
- # 上传一些文件到FTP服务器
- lftp wang@linuxprobe.org:~> mput -a test.txt test2.txt
- 22 bytes transferred
- Total 2 files transferred
- lftp wang@linuxprobe.org:~> ls
- drwxr-xr-x 2 1000 1000 23 Jul 19 01:33 public_html
- -rw-r--r-- 1 1000 1000 399 Jul 20 16:32 test.py
- -rw-r--r-- 1 1000 1000 10 Jul 20 17:06 test.txt
- -rw-r--r-- 1 1000 1000 10 Jul 20 17:06 test2.txt
- # 从FTP服务器下载文件
- # “-a”表示ascii模式(默认为二进制模式)
- lftp wang@linuxprobe.org:~> get -a test.py
- 416 bytes transferred
- # 从FTP服务器下载一些文件
- lftp wang@linuxprobe.org:~> mget -a test.txt test2.txt
- 20 bytes transferred
- Total 2 files transferred
- # 在FTP服务器上的当前目录中创建一个目录
- lftp wang@linuxprobe.org:~> mkdir testdir
- mkdir ok,`testdir' created lftp wang@linuxprobe.org:~> ls drwxr-xr-x 2 1000 1000 23 Jul 19 01:33 public_html -rw-r--r-- 1 1000 1000 399 Jul 20 16:32 test.py -rw-r--r-- 1 1000 1000 10 Jul 20 17:06 test.txt -rw-r--r-- 1 1000 1000 10 Jul 20 17:06 test2.txt drwxr-xr-x 2 1000 1000 6 Jul 20 17:16 testdir 226 Directory send OK. # 删除FTP服务器上当前目录的目录 lftp wang@linuxprobe.org:~> rmdir testdir rmdir ok,`testdir' removed lftp wang@linuxprobe.org:~> ls drwxr-xr-x 2 1000 1000 23 Jul 19 01:33 public_html -rw-r--r-- 1 1000 1000 399 Jul 20 16:32 test.py -rw-r--r-- 1 1000 1000 10 Jul 20 17:06 test.txt -rw-r--r-- 1 1000 1000 10 Jul 20 17:06 test2.txt # 删除FTP服务器上当前目录中的文件 lftp wang@linuxprobe.org:~> rm test2.txt rm ok,`test2.txt' removed
- lftp wang@linuxprobe.org:~> ls
- drwxr-xr-x 2 1000 1000 23 Jul 19 01:33 public_html
- -rw-r--r-- 1 1000 1000 399 Jul 20 16:32 test.py
- -rw-r--r-- 1 1000 1000 10 Jul 20 17:06 test.txt
- # 删除FTP服务器上当前目录中的一些文件
- lftp wang@linuxprobe.org:~> mrm redhat.txt test.txt
- rm ok,2 files removed
- lftp wang@linuxprobe.org:~> ls
- drwxr-xr-x 2 1000 1000 23 Jul 19 01:33 public_html
- # 使用“![command]”执行命令
- lftp wang@linuxprobe.org:~> !cat /etc/passwd
- root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin
- ...
- ...
- redhat:x:1001:1001::/home/redhat:/bin/bash
- # exit
- lftp wang@linuxprobe.org:~> quit
- 221 Goodbye.