FTP服务搭建与配置
https://blog.csdn.net/zhengyshan/article/details/81058194 原作者写的很好.. 比我写的好一百倍..
原创zhengyshan 发布于2018-07-15 22:52:06 阅读数 69 收藏
展开
FTP介绍
FTP是File Transfer Protocol(文件传输协议,简称文传协议)的英文简称,用于在Internet上控制文件的双向传输。
FTP的主要作用就是让用户连接一个远程计算机(这些计算机上运行着FTP服务器程序),并查看远程计算机中的文件,然后把文件从远程计算机复制到本地计算机,或把本地计算机的文件传送到远程计算机。
小公司用的多,大企业不用FTP,因为不安全。
使用vsftpd搭建ftp服务
centos系统上自带vsftpd
安装vsftpd
[[email protected] ~]# yum install -y vsftpd
创建普通用户,目的为了让虚拟用户来映射
[[email protected] ~]# useradd -s /sbin/nologin virftp
虚拟用户的密码文件配置(可以自定义).
内容如下,奇数行为用户名,偶数行为密码,多个用户就写多行
[[email protected] ~]# vim /etc/vsftpd/vsftpd_login
testuser1
zyshanlinux
设置好密码,接着要配置密码文件的权限
[[email protected] ~]# chmod 600 /etc/vsftpd/vsftpd_login
接着需要把密码文件的文本文件转换为计算机识别的二进制文件
[[email protected] ~]# db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db
[[email protected] ~]# ls -l /etc/vsftpd
total 36
-rw-------. 1 root root 125 Aug 3 2017 ftpusers
-rw-------. 1 root root 361 Aug 3 2017 user_list
-rw-------. 1 root root 5030 Aug 3 2017 vsftpd.conf
-rwxr--r--. 1 root root 338 Aug 3 2017 vsftpd_conf_migrate.sh
-rw------- 1 root root 22 Jul 16 09:25 vsftpd_login
-rw-r--r-- 1 root root 12288 Jul 16 09:29 vsftpd_login.db ##生成的二进制文件,db结尾
创建虚拟用户的配置文件所在的目录(自定义)
[[email protected] ~]# mkdir /etc/vsftpd/vsftpd_user_conf
跳转到该目录
[[email protected] ~]# cd !$
cd /etc/vsftpd/vsftpd_user_conf
创建虚拟用户的配置文件,创建的文件名字需要和用户名一致。
[[email protected] vsftpd_user_conf]# vim testuser1
配置内容
local_root=/home/virftp/testuser1 ##虚拟用户的家目录
anonymous_enable=NO ##是否允许匿名用户,不
write_enable=YES ##是否允许可写,是
local_umask=022 ##定义新建的文件或目录的权限是什么
anon_upload_enable=NO ##是否允许匿名用户可上传,不
anon_mkdir_write_enable=NO ##是否允许匿名用户创建目录并且可写,不
idle_session_timeout=600 ##连接超时600秒
data_connection_timeout=120 ##数据传输超时时间120秒
max_clients=10 ##最大的客户端数目10
创建虚拟用户的家目录,新建测试文件,对虚拟用户权限做修改
[[email protected] vsftpd_user_conf]# mkdir /home/virftp/testuser1
[[email protected] vsftpd_user_conf]# touch /home/virftp/testuser1/zyshan.txt
[[email protected] vsftpd_user_conf]# chown -R virftp:virftp /home/virftp
重要:
配置认证文件
[[email protected] vsftpd_user_conf]# vim /etc/pam.d/vsftpd
##配置内容
[[email protected] vsftpd_user_conf]# cat !$
cat /etc/pam.d/vsftpd
#%PAM-1.0
?
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
?
session optional pam_keyinit.so force revoke
auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth required pam_shells.so
auth include password-auth
account include password-auth
session required pam_loginuid.so
session include password-auth
?
编辑vsftpd的主配置
[[email protected] vsftpd_user_conf]# vim /etc/vsftpd/vsftpd.conf
##配置内容
将anonymous_enable=YES 改为 anonymous_enable=NO
将#anon_upload_enable=YES 改为 anon_upload_enable=NO
将#anon_mkdir_write_enable=YES 改为 anon_mkdir_write_enable=NO
再增加如下内容
chroot_local_user=YES
guest_enable=YES
guest_username=virftp ##映射到系统用户
virtual_use_local_privs=YES ##告诉服务使用的是虚拟用户,映射
user_config_dir=/etc/vsftpd/vsftpd_user_conf ##定义虚拟用户配置文件所在的路径
allow_writeable_chroot=YES
启动vsftpd服务
[[email protected] vsftpd_user_conf]# systemctl start vsftpd
[[email protected] vsftpd_user_conf]# ps aux |grep vsftp
root 11979 0.0 0.0 53256 576 ? Ss 10:17 0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
root 12413 0.0 0.0 112704 956 pts/0 R+ 10:17 0:00 grep --color=auto vsftp
##可以看看监听的端口,是21
[[email protected] vsftpd_user_conf]# netstat -lnpt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 570/rpcbind
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1295/nginx: master
tcp 0 0 0.0.0.0:20048 0.0.0.0:* LISTEN 1116/rpc.mountd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1101/sshd
tcp 0 0 0.0.0.0:44888 0.0.0.0:* LISTEN 1118/rpc.statd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1373/master
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 1295/nginx: master
tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:42792 0.0.0.0:* LISTEN -
tcp6 0 0 :::111 :::* LISTEN 570/rpcbind
tcp6 0 0 :::20048 :::* LISTEN 1116/rpc.mountd
tcp6 0 0 :::21 :::* LISTEN 11979/vsftpd
tcp6 0 0 :::22 :::* LISTEN 1101/sshd
tcp6 0 0 ::1:25 :::* LISTEN 1373/master
tcp6 0 0 :::56347 :::* LISTEN 1118/rpc.statd
tcp6 0 0 :::36797 :::* LISTEN -
tcp6 0 0 :::2049 :::* LISTEN -
tcp6 0 0 :::3306 :::* LISTEN 1491/mysqld
23端口是telnet监听的,但现在几乎没人用了。
在Linux上测试:
安装lftp测试工具
[[email protected] ~]# yum install lftp
测试操作~
[[email protected] ~]# lftp [email protected]
Password:
lftp [email protected]:~> ls
-rw-r--r-- 1 1018 1019 0 Jul 16 01:42 zyshan.txt
lftp [email protected]:/>
可以查看该状态下能够运行的命令
lftp [email protected]:/> ?
!<shell-command> (commands) alias [<name> [<value>]]
attach [PID] bookmark [SUBCMD] cache [SUBCMD]
cat [-b] <files> cd <rdir> chmod [OPTS] mode file...
close [-a] [re]cls [opts] [path/][pattern] debug [<level>|off] [-o <file>]
du [options] <dirs> exit [<code>|bg] get [OPTS] <rfile> [-o <lfile>]
glob [OPTS] <cmd> <args> help [<cmd>]
history -w file|-r file|-c|-l [cnt] jobs [-v] [<job_no...>] kill all|<job_no>
lcd <ldir> lftp [OPTS] <site> ln [-s] <file1> <file2>
ls [<args>] mget [OPTS] <files> mirror [OPTS] [remote [local]]
mkdir [-p] <dirs> module name [args] more <files>
mput [OPTS] <files> mrm <files> mv <file1> <file2>
[re]nlist [<args>] open [OPTS] <site>
pget [OPTS] <rfile> [-o <lfile>] put [OPTS] <lfile> [-o <rfile>] pwd [-p]
queue [OPTS] [<cmd>] quote <cmd> repeat [OPTS] [delay] [command]
rm [-r] [-f] <files> rmdir [-f] <dirs> scache [<session_no>]
set [OPT] [<var> [<val>]] site <site-cmd> source <file>
torrent [-O <dir>] <file|URL>... user <user|URL> [<pass>] wait [<jobno>]
zcat <files> zmore <files>
获取Ftp上的文件,下载到当前目录的。命令quit退出
lftp [email protected]:/> get zyshan.txt
lftp [email protected]:/> quit
[[email protected] ~]# ls -lt |head
total 20
-rw-r--r-- 1 root root 0 Jul 16 09:42 zyshan.txt ##新下载的测试文件
-rw-r--r--. 1 root root 0 Jun 11 09:16 zyshanlinux-01.ssh:
-rw-r--r--. 1 root root 0 Jun 11 09:16 192.168.106.1.wins:
-rw-r--r--. 1 root root 0 Jun 11 09:16 239.255.255.250.ssdp:
-rw-r--r--. 1 root root 12 Jun 6 22:19 1.txt
-rw-r--r--. 1 root root 53 Jun 6 22:19 a.txt
drwxr-xr-x. 2 root root 22 Jun 3 20:13 awk
drwxr-xr-x. 2 root root 42 Jun 3 17:45 sed
drwxr-xr-x. 2 root root 35 Jun 3 15:59 grep
若不正常查看日志/var/log/messages和/var/log/secure
windows下安装filezilla客户端软件,进行测试
即使关闭vsftpd服务,Filezilla也可以访问sftp://[email protected]
使用pure-ftpd搭建ftp服务
pure-ftpd比vsftpd更加轻量,更加简单。
更新源,把epel-release换回来
[[email protected] ~]# yum install -y epel-release
安装pure-ftpd
[[email protected] ~]# yum install -y pure-ftpd
编辑配置文件,找到pureftpd.pdb这行,把行首的#删除
[[email protected] ~]# vim /etc/pure-ftpd/pure-ftpd.conf
PureDB /etc/pure-ftpd/pureftpd.pdb ##指定密码配置文件
由于pure-ftpd和vsftpd都是监听21端口,所以要运行pure-ftpd,就必须停掉vsftpd,否则会出错。
[[email protected] ~]# systemctl stop vsftpd
[[email protected] ~]# systemctl start pure-ftpd
[[email protected] ~]# ps aux |grep ftp
root 6997 0.0 0.0 202516 1200 ? Ss 11:06 0:00 pure-ftpd (SERVER)
root 7673 0.0 0.0 112704 960 pts/0 S+ 11:06 0:00 grep --color=auto ftp
[[email protected] ~]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 570/rpcbind
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1295/nginx: master
tcp 0 0 0.0.0.0:20048 0.0.0.0:* LISTEN 1116/rpc.mountd
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 6997/pure-ftpd (SER
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1101/sshd
tcp 0 0 0.0.0.0:44888 0.0.0.0:* LISTEN 1118/rpc.statd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1373/master
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 1295/nginx: master
tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:42792 0.0.0.0:* LISTEN -
tcp6 0 0 :::111 :::* LISTEN 570/rpcbind
tcp6 0 0 :::20048 :::* LISTEN 1116/rpc.mountd
tcp6 0 0 :::21 :::* LISTEN 6997/pure-ftpd (SER
tcp6 0 0 :::22 :::* LISTEN 1101/sshd
tcp6 0 0 ::1:25 :::* LISTEN 1373/master
tcp6 0 0 :::56347 :::* LISTEN 1118/rpc.statd
tcp6 0 0 :::36797 :::* LISTEN -
tcp6 0 0 :::2049 :::* LISTEN -
tcp6 0 0 :::3306 :::* LISTEN 1491/mysqld
创建测试目录,是给pure-ftpd用户使用
[[email protected] ~]# mkdir /data/ftp
创建普通用户,1010不唯一就是已存在了,那就创建1020
[[email protected] ~]# useradd -u 1010 pure-ftp
useradd: UID 1010 is not unique
[[email protected] ~]# useradd -u 1020 pure-ftp
更改属主属组
[[email protected] ~]# chown -R pure-ftp:pure-ftp /data/ftp
创建用户,指定用户名ftp_usera,指定系统用户是谁(映射)-u pure-ftp,虚拟用户的家目录指定-d /data/ftp,输入密码2遍。
[[email protected] ~]# pure-pw useradd ftp_usera -u pure-ftp -d /data/ftp
Password:
Enter it again:
[[email protected] ~]#
把密码生成系统识别的文件(二进制),不执行这步是无法登录的。
[[email protected] ~]# pure-pw mkdb
ftp_usera支持哪些用法
[[email protected] ~]# pure-pw list/userdel/usermod/passwd
或者
[[email protected] ~]# pure-pw --help
测试
[[email protected] ~]# pure-pw useradd ftp_usera -u pure-ftp -d /data/ftp^C
[[email protected] ~]# touch /data/ftp/123.txt
[[email protected] ~]# lftp [email protected]
Password:
lftp [email protected]:~> ls
drwxr-xr-x 2 1020 pure-ftp 21 Jul 16 11:23 .
drwxr-xr-x 2 1020 pure-ftp 21 Jul 16 11:23 ..
-rw-r--r-- 1 0 0 0 Jul 16 11:23 123.txt
lftp [email protected]:/>
可以更改一下属主属组,属主映射成uid,属组映射系统组的名字。
lftp [email protected]:/> quit
[[email protected] ~]# chown pure-ftp:pure-ftp /data/ftp/123.txt
[[email protected] ~]# lftp [email protected]
Password:
lftp [email protected]:~> ls
drwxr-xr-x 2 1020 pure-ftp 21 Jul 16 11:23 .
drwxr-xr-x 2 1020 pure-ftp 21 Jul 16 11:23 ..
-rw-r--r-- 1 1020 pure-ftp 0 Jul 16 11:23 123.txt
?
扩展 :
vsftp使用mysql存放虚拟用户并验证 http://www.aminglinux.com/bbs/thread-342-1-1.html
ftp的主动和被动模式 http://www.aminglinux.com/bbs/thread-961-1-1.html
————————————————
版权声明:本文为CSDN博主「zhengyshan」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zhengyshan/article/details/81058194
原文地址:https://www.cnblogs.com/jinanxiaolaohu/p/12089462.html