Linux自学笔记——文件共享服务之ftp

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

文件共享服务:
ftp:应用层,C/S架构,文件共享;
nfs,cifs:文件系统接口,网络文件系统;
nfs:(network file system)是unix和linux系统上常见的内核的网络文件共享服务;
cifs:(common Internet file system),是Windows上常见的网络文件共享服务;
samba:是在linux之上实现cifs协议来解决跨平台的文件共享服务;

ftp:file transfer protocol
应用层协议:tcp,21/tcp
C/S:
Client:客户端
Server:服务器
数据:
命令连接:文件管理类命令,始终在线的连接;
数据连接:数据传输,按需创建及关闭的连接
数据传输格式:
文本传输;
二进制传输;
主动:由服务器创建连接
命令:client:5000  server:21
数据:server:20/tcp  client: 5000+1
被动:由客户端创建连接
命令:Client:50000 --> Server: 21
数据:Client:50000+1 --> Server: 随机端口
C/S:服务及工具
Server:
wu-ftpd
proftpd
pureftpd
vsftpd:very secure
ServU
Client:
ftp
lftp,lftpget
wget,curl
filezilla
gftp(Linux GUI)

    flashfxp
    cuteftp
响应码:
    1xx:信息;
    2xx:成功类的状态码;
    3xx:提示需进一步提供补充类信息的状态码
    4xx:客户端错误;
    5xx:服务端错误;
用户认证:
    虚拟用户:仅用于访问某特定服务中的资源
        nsswitch:network server switch,名称解析框架
            配置文件:/etc/nsswitch.conf
            模块:/lib64/libnss*,/usr/lib64/libnss*
        Pam:pluggable authentication module,用户认证框架

演示:用一台主机ftp连接另一台vsftpd的服务器主机;

  1. 安装vsftpd;
    #yum install vsftpd –y
  2. 开启vsftpd服务并查看端口是否开启;
    Linux自学笔记——文件共享服务之ftp
  3. 远程连接测试;
    Linux自学笔记——文件共享服务之ftp
    发现当前目录为当前用户的家目录;
    Linux自学笔记——文件共享服务之ftp
    Centos6.6:vsftpd
    用户认证配置文件:/etc/pam.d/vsftpd
    服务脚本:/etc/tc.d/init.d/vsftpd
    配置文件目录:/etc/vsftpd
    主配置文件:vsftpd.conf
    匿名用户(映射为ftp用户)共享资源位置:/var/ftp
    系统用户通过ftp访问的资源的位置:用户自己的家目录
    虚拟用户通过ftp访问的资源的位置:给虚拟用户指定的映射称为的系统用户的家目录;
  4. 匿名用户的配置:
    anonymous_enable=YES
    anon_upload_enable=YES
    anon_mkdir_write_enable=YES
    anon_other_write_enable=YES
    Linux自学笔记——文件共享服务之ftp
    演示:
    1) 用匿名用户远程登录ftp服务器,发现没有上传文件权限和创建目录权限;
    Linux自学笔记——文件共享服务之ftp
    2) 修改ftp服务器配置文件如下;
    Linux自学笔记——文件共享服务之ftp
    3) 重启服务;
    #service vsftpd restart
    4) 重新远程ftp服务器,发现创建目录,上传文件等还是失败;
    Linux自学笔记——文件共享服务之ftp
    5) 因为ftp用户对/var/ftp没有写权限,为了稳妥,我们在ftp服务器上/var/ftp目录下我们创建了pub,upload目录,我们赋予子目录权限;
    Linux自学笔记——文件共享服务之ftp
    6) 重新测试,可以上传文件了;
    Linux自学笔记——文件共享服务之ftp
    也可以删除文件了;
    Linux自学笔记——文件共享服务之ftp
    7) 下载文件,发现错误提示failed to open file;
    Linux自学笔记——文件共享服务之ftp
    8) 编辑配置文件,添加以下项;
    Linux自学笔记——文件共享服务之ftp
    9) 重启服务后,重新测试,重新上传文件,重新下载,会成功下载;
    Linux自学笔记——文件共享服务之ftp
  5. 系统用户的配置:
    local_enable=YES
    write_enable=YES
    local_unmask=022
    禁锢所有的ftp本地用户于其家目录中:
    chroot_local_user=YES
    禁锢文件中指定的ftp本地用户于其家目录中:
    chroot_list_enable=YES
    chroot_list_file=/etc/vsftpd/chroot_list
    示例:
    1) 编辑配置文件,启用如下选项;
    Linux自学笔记——文件共享服务之ftp
    2) 编辑chroot_list_file;
    Linux自学笔记——文件共享服务之ftp
    3) 测试,显示已被锁定;
    Linux自学笔记——文件共享服务之ftp
    4) 用centos用户登录,没有被锁定在家目录;
    Linux自学笔记——文件共享服务之ftp
  6. 日志:
    xferlog_enable=YES #是否启用传输日志;
    xferlog_std_format=YES
    xferlog_file=/var/log/xferlog #日志文件,需要手动创建
  7. 改变上传文件的属主:
    chown_uploads=YES
    chown_username=whoever
  8. vsftpd使用pam完成用户认证,其用到的pam配置文件:/etc/pam.d/vsftpd
    pam_servcie_name=vsftpd
    演示:
    1) vsftpd使用pam完成认证;使用配置文件/etc/pam.d/vsftpd
    Linux自学笔记——文件共享服务之ftp
    可以看到用户控制的文件为/etc/vsftpd/ftpusers;
    2) 编辑配置文件/etc/vsftpd/vsftpd.conf,启用用户认证控制,其中userlist_deny=YES代表黑名单,NO的话代表白名单;
    Linux自学笔记——文件共享服务之ftp
    3) 编辑/etc/vsftpd/ftpusers配置文件;
    Linux自学笔记——文件共享服务之ftp
    4) 重载服务,测试,centos用户登录不上ftp服务器;
    Linux自学笔记——文件共享服务之ftp
  9. 是否启用控制用户登录的列表文件
    userlist_enable=YES
    userlist_deny=YES|NO #YES为黑名单,NO为白名单;
    默认文件为/etc/vsftpd/user_list
    演示:
    1) 编辑/etc/vsftpd/user_list文件;
    Linux自学笔记——文件共享服务之ftp
    2) 测试;
    Linux自学笔记——文件共享服务之ftp
  10. 连接限制:
    max_clients:最大并发连接数;
    max_per_ip:每个ip可同时发起的并发请求数;
  11. 传输速率:
    anon_max_rate:匿名用户的最大传输速率,单位是“字节/秒”;
    local_max_rate:本地用户的…
  12. 虚拟用户:
    所有的虚拟用户会被统一映射为一个指定的系统账号,访问的共享位置即为此系统账号的家目录;
    各虚拟用户可被赋予不同的访问权限:
    通过匿名用户的权限控制参数进行指定;
    各虚拟用户账号的存储方式:
    1) 存于文件中:编辑文件
    奇数行为用户名;
    偶数行为密码;
    此文件需要被编码为hash格式;
    2) 存于关系型数据库中的表中:
    即时查询数据库完成用户认证;
    Mysql库,pam要依赖与pam_mysql
    #yum –y insatall pam_mysql
    具体步骤:
    a. 在数据库中创建虚拟用户账号;
    Linux自学笔记——文件共享服务之ftp
    添加表内容;
    Linux自学笔记——文件共享服务之ftp
    b. 建立pam认证所需文件
    Linux自学笔记——文件共享服务之ftp
    c. 建立虚拟用户映射的本地用户及对应的目录;
    Linux自学笔记——文件共享服务之ftp
    d. 修改vsftpd的配置文件,使其使用mysql认证;
    编辑/etc/vsftpd/vsftpd.conf文件,首先确保已经启用如下选项;
    anonymous_enable=YES
    local_enable=YES
    write_enable=YES
    anon_upload_enable=NO
    anon_mkdir_write_enable=NO
    chroot_local_user=YES
    并添加以下选项:
    Guest_enable=YES #启用虚拟用户;
    Guest_username=vuser #指定映射到哪个本地用户
    Pam_service_name=vsftpd.mysql
    Linux自学笔记——文件共享服务之ftp
    e. 配置虚拟用户具有不同的访问权限;
    Vsftpd可以在配置文件中每一个用户提供单独的配置文件以及定义设置服务访问权限,每个虚拟用户的配置文件名同虚拟用户的用户名。配置文件目录可以是任意未使用的目录,只需要在主配置文件中指明路径即可;
    在主配置文件中定义目录;
    Linux自学笔记——文件共享服务之ftp
    创建相关目录及文件:
    Linux自学笔记——文件共享服务之ftp
    Note:虚拟用户对vsftpd服务的访问权限是通过匿名用户的相关指令进行的。
    f. 启动服务并测试;
    Linux自学笔记——文件共享服务之ftp
    Note:如果是二进制安装的mysql,可能会出现登录不了ftp服务器的情况,因为其socket默认路径不是/var/lib/mysql/msyql.socket,此时需要编辑/etc/my.cnf文件修改socket路径;

本文转自 claude_liu 51CTO博客,原文链接:http://blog.51cto.com/claude666/2047502,如需转载请自行联系原作者
相关文章
|
21天前
|
Linux 应用服务中间件 Shell
linux系统服务二!
本文详细介绍了Linux系统的启动流程,包括CentOS 7的具体启动步骤,从BIOS自检到加载内核、启动systemd程序等。同时,文章还对比了CentOS 6和CentOS 7的启动流程,分析了启动过程中的耗时情况。接着,文章讲解了Linux的运行级别及其管理命令,systemd的基本概念、优势及常用命令,并提供了自定义systemd启动文件的示例。最后,文章介绍了单用户模式和救援模式的使用方法,包括如何找回忘记的密码和修复启动故障。
42 5
linux系统服务二!
|
21天前
|
Linux 应用服务中间件 Shell
linux系统服务!!!
本文详细介绍了Linux系统(以CentOS7为例)的启动流程,包括BIOS自检、读取MBR信息、加载Grub菜单、加载内核及驱动程序、启动systemd程序加载必要文件等五个主要步骤。同时,文章还对比了CentOS6和CentOS7的启动流程图,并分析了启动流程的耗时。此外,文中还讲解了Linux的运行级别、systemd的基本概念及其优势,以及如何使用systemd管理服务。最后,文章提供了单用户模式和救援模式的实战案例,帮助读者理解如何在系统启动出现问题时进行修复。
41 3
linux系统服务!!!
|
25天前
|
Linux 数据库
Linux服务如何实现服务器重启后的服务延迟自启动?
【10月更文挑战第25天】Linux服务如何实现服务器重启后的服务延迟自启动?
131 3
|
25天前
|
关系型数据库 MySQL Linux
Linux系统如何设置自启动服务在MySQL数据库启动后执行?
【10月更文挑战第25天】Linux系统如何设置自启动服务在MySQL数据库启动后执行?
72 3
|
1月前
|
Ubuntu Linux 网络安全
Linux中服务管理问题
【10月更文挑战第4天】
26 2
|
1月前
|
应用服务中间件 Linux Shell
Linux 配置 Nginx 服务的详细步骤,绝对干货
Linux 配置 Nginx 服务的详细步骤,绝对干货
76 0
|
2月前
|
编解码 Linux 开发工具
Linux平台x86_64|aarch64架构RTMP推送|轻量级RTSP服务模块集成说明
支持x64_64架构、aarch64架构(需要glibc-2.21及以上版本的Linux系统, 需要libX11.so.6, 需要GLib–2.0, 需安装 libstdc++.so.6.0.21、GLIBCXX_3.4.21、 CXXABI_1.3.9)。
|
10天前
|
监控 Linux
如何检查 Linux 内存使用量是否耗尽?这 5 个命令堪称绝了!
本文介绍了在Linux系统中检查内存使用情况的5个常用命令:`free`、`top`、`vmstat`、`pidstat` 和 `/proc/meminfo` 文件,帮助用户准确监控内存状态,确保系统稳定运行。
92 6
|
11天前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
47 3
|
11天前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
36 2
下一篇
无影云桌面