Linux搭建FTP服务器

目录

1. 搭建ftp服务器

1.1 .安装vsftpd软件

1.1.1  查看vsftpd软件的信息:

1. 2  .启动vsftpd软件

1.2.1  如何知道一个进程已经启动?

1.查看进程

2.查看端口号

1.3. 登录ftp服务

1.3.1  下载客户端工具 ftp和lftp

1.3.2  登录lftp

1.3.3  查看lftp常用命令:

1.3.4  lcd命令 : 在本地切换目录

1.3.5  !ls : 查看本地目录内容

1.3.6  put命令 上传文件到ftp服务器·

1.3.7 mirror命令 下载文件夹到本地 

2.  了解ftp服务的配置文件 /etc/ftp/vsftpd

2.1  vsftpd.conf 主配置文件

2.1.1  一些常用配置:

是否允许匿名用户ftp登录,YES代表允许,NO不允许

是否允许本地登录

是否有写的权利

日志文件位置

2.2  ftpusers : ftp黑名单

2.3  user_list 黑名单或白名单

2.4  限制用户只能在自己家目录操作

示例 :新建用户bobo测试能否登陆

1.给bobo家目录去除写的权限。

linux系统的selinux可能会影响你的登陆

2.修改vsftpd.conf 文件

3. 使用ftp服务在linux和windows传文件

3.1   使用linux向windows传文件。

1.关闭防火墙

2.启动vsftpd 服务

3.登录ftp服务

 3.2  使用windows向linux传文件。


ftp 服务:

实现ftp功能的一个服务,安装vsftpd软件搭建一台ftp服务器

ftp协议:

文件传输协议 (file transfer protocol),在不同的机器之间实现文件传输功能,

例如

视频文件下载,源代码文件下载

公司内部:弄一个专门的文件服务器,将公司里的文档资料和视频都存放在服务器里面,所有的同事都可以去下载,起到集中存放文件的地方

1. 搭建ftp服务器

1.1 .安装vsftpd软件

yum install vsftpd -y
   
   

1.1.1  查看vsftpd软件的信息:

rpm -qi vsftpd


   
   
  1. [root@localhost ~] # rpm -qi vsftpd
  2. Name : vsftpd
  3. Version : 3.0.2
  4. Release : 29.el7_9
  5. Architecture: x86_64
  6. Install Date: 2022年04月09日 星期六 00时40分08秒
  7. Group : System Environment/Daemons
  8. Size : 361349
  9. License : GPLv2 with exceptions
  10. Signature : RSA/SHA256, 2021年06月11日 星期五 23时06分15秒, Key ID 24c6a8a7f4a80eb5
  11. Source RPM : vsftpd-3.0.2-29.el7_9.src.rpm
  12. Build Date : 2021年06月10日 星期四 00时15分50秒
  13. Build Host : x86-02.bsys.centos.org
  14. Relocations : (not relocatable)
  15. Packager : CentOS BuildSystem http://bugs.centos.org
  16. Vendor : CentOS
  17. URL : https://security.appspot.com/vsftpd.html
  18. Summary : Very Secure Ftp Daemon
  19. Description :
  20. vsftpd is a Very Secure FTP daemon. It was written completely from
  21. scratch.

vsftpd is a Very Secure FTP daemon.

vsftpd 是一个非常安全的ftp守护进程

daemon : 守护进程

守护进程:一直在内存里运行的进程,不会自动停止,除非人为停止,一般是对外提供服务的。

 #######################################

1. 2  .启动vsftpd软件

service vsftpd start(centos 7)


   
   
  1. [root@localhost ~] # service vsftpd start
  2. Redirecting to /bin/systemctl start vsftpd.service

 ####################################### 

1.2.1  如何知道一个进程已经启动?

1.查看进程

ps aux | grep vsftpd


   
   
  1. [root@localhost ~] # ps aux | grep vsftpd
  2. root 1690 0.0 0.0 53292 580 ? Ss 00:45 0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
  3. root 1692 0.0 0.0 112824 980 pts/0 S+ 00:46 0:00 grep --color=auto vsftpd

 ####################################### 

2.查看端口号

netstat -anplut | grep vsftpd


   
   
  1. [root@localhost network-scripts] # netstat -anplut | grep vsftpd
  2. tcp6 0 0 :::21 :::* LISTEN 1888/vsftpd

 ####################################### 

1.3. 登录ftp服务

1.3.1  下载客户端工具 ftp和lftp


   
   
  1. [root@localhost ~] # yum install ftp lftp -y
  2. 已安装:
  3. ftp.x86_64 0:0.17-67.el7 lftp.x86_64 0:4.4.8-12.el7_8.1
  4. 作为依赖被安装:
  5. gnutls.x86_64 0:3.3.29-9.el7_6 nettle.x86_64 0:2.7.1-9.el7_9
  6. trousers.x86_64 0:0.3.14-2.el7
  7. 完毕!

ftp访问:

默认情况下不允许root用户登录

vsftpd 使用的用户名和密码就是linux系统里面使用分用户和密码,不需要单独新建


   
   
  1. [root@localhost ~] # lftp 10.107.12.224
  2. lftp 10.107.12.224:~> ls
  3. ` ls ' at 0 [正在连接...]
  4. 中断
  5. lftp 10.107.12.224:~> exit

我们可以新建一个用户来测试ftp服务

新建用户sc


   
   
  1. [root@localhost ~] # useradd sc
  2. [root@localhost ~] # echo 123|passwd sc --stdin
  3. 更改用户 sc 的密码 。
  4. passwd:所有的身份验证令牌已经成功更新。

 ####################################### 

1.3.2  登录lftp

ftp使用的命令和linux基本相同,我们在ftp新建的文件夹都是存放在服务器上面的。

格式: lftp -u  用户名,密码 ip地址


   
   
  1. [root@localhost ~] # lftp -u sc,123 10.107.12.244
  2. lftp sc@10.107.12.244:~> ls
  3. lftp sc@10.107.12.244:~> pwd
  4. ftp://sc:123@10.107.12.244/%2Fhome/sc
  5. lftp sc@10.107.12.244:~> mkdir sanchuang
  6. mkdir 成功, 建立 `sanchuang '
  7. lftp sc@10.107.12.244:~> ls
  8. drwxr-xr-x 2 1000 1000 6 Apr 08 17:01 sanchuang

 ####################################### 

1.3.3  查看lftp常用命令:


   
   
  1. lftp sc@10.107.12.244:~> help
  2. !<shell-command> (commands)
  3. alias [<name> [<value>]] attach [PID]
  4. bookmark [SUBCMD] cache [SUBCMD]
  5. cat [-b] <files> cd <rdir>
  6. chmod [OPTS] mode file... close [-a]
  7. [re]cls [opts] [path/][pattern]
  8. debug [<level>|off] [-o <file>] du [options] < dirs>
  9. exit [<code>| bg]
  10. get [OPTS] <rfile> [-o <lfile>] glob [OPTS] <cmd> <args>
  11. help [<cmd>]
  12. history -w file|-r file|-c|-l [cnt] jobs [-v] [<job_no...>]
  13. kill all|<job_no> lcd <ldir>
  14. lftp [OPTS] <site> ln [-s] <file1> <file2>
  15. ls [<args>] mget [OPTS] <files>
  16. mirror [OPTS] [remote [ local]] mkdir [-p] < dirs>
  17. module name [args] more <files>
  18. mput [OPTS] <files> mrm <files>
  19. mv <file1> <file2> [re]nlist [<args>]
  20. open [OPTS] <site>
  21. pget [OPTS] <rfile> [-o <lfile>]
  22. put [OPTS] <lfile> [-o <rfile>] pwd [-p]
  23. queue [OPTS] [<cmd>] quote <cmd>
  24. repeat [OPTS] [delay] [ command] rm [-r] [-f] <files>
  25. rmdir [-f] < dirs> scache [<session_no>]
  26. set [OPT] [<var> [<val>]] site <site-cmd>
  27. source <file>
  28. torrent [-O < dir>] <file|URL>... user <user|URL> [<pass>]
  29. wait [<jobno>] zcat <files>
  30. zmore <files>

 ####################################### 

1.3.4  lcd命令 : 在本地切换目录

1.3.5  !ls : 查看本地目录内容


   
   
  1. lftp sc@10.107.12.244:~> lcd /boot
  2. lcd 成功, 本地目录=/boot
  3. lftp sc@10.107.12.244:~> ! ls
  4. config-3.10.0-1160.el7.x86_64
  5. efi
  6. grub
  7. grub2
  8. initramfs-0-rescue-649c8558acc34bc7b450781cc67d2041.img
  9. initramfs-3.10.0-1160.el7.x86_64.img
  10. initramfs-3.10.0-1160.el7.x86_64kdump.img
  11. symvers-3.10.0-1160.el7.x86_64.gz
  12. System.map-3.10.0-1160.el7.x86_64
  13. vmlinuz-0-rescue-649c8558acc34bc7b450781cc67d2041
  14. vmlinuz-3.10.0-1160.el7.x86_64

 ####################################### 

1.3.6  put命令 上传文件到ftp服务器·


   
   
  1. lftp sc@10.107.12.244:~> put initramfs-3.10.0-1160.el7.x86_64.img
  2. 21721039 bytes transferred
  3. lftp sc@10.107.12.244:~> ls
  4. -rw-r--r-- 1 1000 1000 21721039 Apr 08 17:06 initramfs-3.10.0-1160.el7.x86_64.img
  5. drwxr-xr-x 2 1000 1000 6 Apr 08 17:01 sanchuang

 ####################################### 

1.3.7 mirror命令 下载文件夹到本地 


   
   
  1. lftp sc@10.107.12.244:~> mirror sanchuang/
  2. Total: 1 directory, 0 files, 0 symlinks
  3. lftp sc@10.107.12.244:~> ! ls
  4. config-3.10.0-1160.el7.x86_64
  5. efi
  6. grub
  7. grub2
  8. initramfs-0-rescue-649c8558acc34bc7b450781cc67d2041.img
  9. initramfs-3.10.0-1160.el7.x86_64.img
  10. initramfs-3.10.0-1160.el7.x86_64kdump.img
  11. sanchuang
  12. symvers-3.10.0-1160.el7.x86_64.gz
  13. System.map-3.10.0-1160.el7.x86_64
  14. vmlinuz-0-rescue-649c8558acc34bc7b450781cc67d2041
  15. vmlinuz-3.10.0-1160.el7.x86_64

 ####################################### 

2.  了解ftp服务的配置文件 /etc/ftp/vsftpd


   
   
  1. [root@localhost ~] # cd /etc/vsftpd
  2. [root@localhost vsftpd] # ls
  3. ftpusers user_list vsftpd.conf vsftpd_conf_migrate.sh

 一般下载vsftpd服务后有四个重要的配置文件

 #######################################

2.1  vsftpd.conf 主配置文件

2.1.1  一些常用配置:

是否允许匿名用户ftp登录,YES代表允许,NO不允许

anonymous_enable=YES

是否允许本地登录

local_enable=YES

是否有写的权利

write_enable=YES

日志文件位置

xferlog_file=/var/log/xferlog 采用标准的日志格式

 #######################################

2.2  ftpusers : ftp黑名单

如果想让一个用户登录不了ftp服务,可以将用户加入黑名单


   
   
  1. [root@localhost vsftpd] # cat ftpusers
  2. Users that are not allowed to login via ftp
  3. root
  4. bin
  5. daemon
  6. adm
  7. lp
  8. sync
  9. shutdown
  10. halt
  11. mail
  12. news
  13. uucp
  14. operator
  15. games
  16. nobody

  #######################################

2.3  user_list 黑名单或白名单

If userlist_deny=NO, only allow users in this file

只有 userlist_deny=NO的时候,在这个文件里面所有的用户都可以使用ftp服务,这个时候文件就从黑名单变成白名单,


   
   
  1. [root@localhost vsftpd] # cat user_list
  2. vsftpd userlist
  3. If userlist_deny=NO, only allow users in this file
  4. If userlist_deny=YES (default), never allow users in this file, and
  5. do not even prompt for a password.
  6. Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers
  7. for users that are denied.
  8. root
  9. bin
  10. daemon
  11. adm
  12. lp
  13. sync
  14. shutdown
  15. halt
  16. mail
  17. news
  18. uucp
  19. operator
  20. games
  21. nobody

  #######################################

2.4  限制用户只能在自己家目录操作

如果让普通用户可以随便切换目录的话及其不安全

所以一般可以修改配置文件将用户限制在自己的家目录

在 vsftpd.conf 配置文件里面修改以下配置

chroot_list 文件默认不存在,需要在 /etc/vsftpd/下新建


   
   
  1. #对本地用户限制在自己的家目录里
  2. chroot_local_user =YES
  3. #启用限制名单
  4. chroot_list_enable =YES
  5. ( default follows)
  6. # 具体的名单路径,这个名单的用户不受限制,可以随意切换目录
  7. chroot_list_ file = /etc /vsftpd /chroot_list
  8. #这个目录没有,需要自己新建。

  #######################################

示例 :新建用户bobo测试能否登陆

1.修改上述配置

2.在/etc/vsftpd 下面新建文件 chroot_llist 

3.使用bobo用户登录


   
   
  1. [root@localhost vsftpd] # useradd bobo
  2. [root@localhost vsftpd] # echo 123|passwd bobo --stdin
  3. 更改用户 bobo 的密码 。
  4. passwd:所有的身份验证令牌已经成功更新。
  5. [root@localhost vsftpd] # lftp -u bobo,123 192.168.44.132
  6. lftp bobo@192.168.44.132:~> ls
  7. ls: 登录失败: 500 OOPS: chroot
  8. lftp bobo@192.168.44.132:~> cd /home
  9. cd: 登录失败: 500 OOPS: chroot
  10. lftp bobo@192.168.44.132:~>

会出现提示信息:500 oops:chroot

从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误。 

所以如果我们开启了限制用户在家目录的话,如果用户对家目录还有写权限的话就会报错

 #######################################

解决方法:

1.给bobo家目录去除写的权限。

去除写的权利以后这类用户只能下载不能上传。

chmod -w bobo


   
   
  1. [root@localhost home]# ll | grep bobo
  2. drwx------. 2 bobo bobo 83 410 19: 39 bobo
  3. [root@localhost home]# chmod -w bobo
  4. [root@localhost home]# ll | grep bobo
  5. dr-x------. 2 bobo bobo 83 410 19: 39 bobo

去除写的权利以后bobo用户就可以正常登陆,并且被限制在了家目录, 

如果想让bobo用户正常切换路径可以将bobo恢复写的权限以后添加到chroot_list 文件里面

注意:

 #######################################

linux系统的selinux可能会影响你的登陆

selinux是linux的一个内核模块,是linux的安全子系统。

SELinux 主要作用就是最大限度地减小系统中服务进程可访问的资源(最小权限原则)。

我们可以手动关闭它

getenforce  查看selinux状态

Enforcing 是代表强制的意思

setenforce 0 关闭selinux (临时)

Permissive 是放纵的,任由,


   
   
  1. [root@localhost vsftpd] # getenforce
  2. Enforcing
  3. [root@localhost vsftpd] # setenforce 0
  4. [root@localhost vsftpd] # getenforce
  5. Permissive

然后就可以正常登陆操作了。

可以看到我们正常登陆以后bobo用户就被限制在了家目录下面,不能随意切换目录了。


   
   
  1. [root@localhost home] # ll | grep bobo
  2. drwx------. 2 bobo bobo 83 4月 10 19:39 bobo
  3. [root@localhost home] # chmod -w bobo
  4. [root@localhost home] # ll | grep bobo
  5. dr-x------. 2 bobo bobo 83 4月 10 19:39 bobo
  6. [root@localhost vsftpd] # lftp -u bobo,123 192.168.44.132
  7. lftp bobo@192.168.44.132:~> ls
  8. lftp bobo@192.168.44.132:/> ls
  9. lftp bobo@192.168.44.132:/> cd /home
  10. cd: Access failed: 550 Failed to change directory. (/home)
  11. lftp bobo@192.168.44.132:/> cd /root
  12. cd: Access failed: 550 Failed to change directory. (/root)
  13. lftp bobo@192.168.44.132:/> cd /lianxi
  14. cd: Access failed: 550 Failed to change directory. (/lianxi)
  15. lftp bobo@192.168.44.132:/> cd /var/ftp/pub
  16. cd: Access failed: 550 Failed to change directory. (/var/ftp/pub)

注:这个时候我们还是可以使用lcd命令来切换本地的路径

但是我们依旧不能对文件进行操作。


   
   
  1. lftp bobo@192.168.44.132:/> lcd /lianxi/ftp
  2. lcd 成功, 本地目录=/lianxi/ftp
  3. lftp bobo@192.168.44.132:/> ! ls
  4. 1111.txt rr.sh
  5. lftp bobo@192.168.44.132:/> mkdir bobo.sh
  6. mkdir: Access failed: 550 Create directory operation failed. (bobo.sh)
  7. lftp bobo@192.168.44.132:/> ! ls
  8. 1111.txt rr.sh

 ####################################### 

2.修改vsftpd.conf 文件

添加allow_writeable_chroot=YES

添加这条规则


   
   
  1. chroot_local_user=YES
  2. chroot_list_enable=YES
  3. # (default follows)
  4. chroot_list_file=/etc/vsftpd/chroot_list
  5. allow_writeable_chroot=YES

  #######################################

3. 使用ftp服务在linux和windows传文件

3.1   使用linux向windows传文件。

搭建一个ftp服务,

 #######################################

1.关闭防火墙

service firewalld stop

 #######################################

2.启动vsftpd 服务

service vsftpd restart

将 rr.sh 复制到 /var/ftp/pub 目录下面


   
   
  1. root@localhost lianxi2] # cp rr.sh /var/ftp/pub/
  2. [root@localhost lianxi2] # cd /var/ftp/pub/
  3. [root@localhost pub] # ls
  4. rr.sh

  #######################################

3.登录ftp服务

这里新建一个用户hang

登录lftp客户端

可以看到这是因为我们开启了设置用户只能在自己家目录下面


   
   
  1. [root@localhost vsftpd] # useradd hang
  2. [root@localhost vsftpd] # echo 123 | passwd hang --stdin
  3. 更改用户 hang 的密码 。
  4. passwd:所有的身份验证令牌已经成功更新。
  5. [root@localhost vsftpd] # lftp -u hang,123 192.168.44.132
  6. lftp hang@192.168.44.132:~> ls
  7. lftp hang@192.168.44.132:/> cd /var/ftp/pub
  8. cd: Access failed: 550 Failed to change directory. (/var/ftp/pub)

解决方法:将 用户hang 加入到 /etc/vsftpd/chroot_list文件里

[root@localhost vsftpd]# vim chroot_list 
   
   

添加以后hang用户就可以切换到/var/ftp/pub目录了。


   
   
  1. [root@localhost vsftpd] # lftp -u hang,123 192.168.44.132
  2. lftp hang@192.168.44.132:~> cd /var/ftp/pub
  3. cd 成功, 当前目录=/var/ftp/pub
  4. lftp hang@192.168.44.132:/var/ftp/pub> ls
  5. -rw-r--r-- 1 0 0 0 Apr 10 08:32 1111.txt
  6. -rw-r--r-- 1 0 0 621 Mar 09 01:04 rr.sh

可以看到该目录下面有两个文件,

然后用在windows里面用浏览器访问ftp服务

注意:一定要关闭防火墙!

点击文件就可以下载了。

  #######################################

 3.2  使用windows向linux传文件。

使用资源浏览器访问ftp服务器

ftp://192.168.44.132/

右击登录

 

 登录成功以后将要上传的文件拖进来就可以啦

 在windows上传的文件保存在该登录用户的家目录里面。


   
   
  1. [root @localhost pub] # cd /home/hang
  2. [root @localhost hang] # ls
  3. 面试 ?? ?txt

这样就实现了windows和linux里面互传文件。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值