首页 > 其他分享 > FTP、NFS、Samba

FTP、NFS、Samba

时间:2023-07-05 11:35:45浏览次数:46  
标签:选项 FTP Samba 用户 vsftpd NFS mysql YES

FTP(File Transfer Protocol,文件传输协议),是一种应用层协议,可以实现很好的实现跨平台,但是无法实现一些其他的功能,像如文件系统挂载等功能。NFS(Network File System,网路文件系统)是工作在内核模式下的,因此不能很好的实现跨平台,一般只能是Linux主机或者Unix主机之间,但可以实现挂载使用等功能。SMB(Service Message Block,服务消息块协议),能够实现Windows和Linux主机之间的文件共享服务,可实现跨平台,在Linux上实现了CIFS(Common Internet File System)协议。

一、FTP协议

1、FTP原理知识

是一种C/S架构,基于套接字通信,用来在两台机器之间相互传输文件。FTP协议用到2种tcp连接:一是命令连接,用于客户端和服务端之间传递命令,监听在tcp/21端口;另一个是数据传输连接,用来传输数据,监听的端口是随机的。

2、FTP的被动模式、主动模式

主动模式的原理如下图:

 

 

主动模式存在的问题是,在客户端一般都会有防火墙的设置,当服务端与客户端数据进行数据通信时,客户端的防火墙会将服务端的端口挡在外面。此时,通信就会受阻。因此,被动模式就产生了。

被动模式的原理图如下:

 

 

被动模式也会存在防火墙的问题,客户端与服务端传输数据时,在服务端也会有防火墙,但在服务端的防火墙有连接追踪的功能,解决了防火墙的问题。因此,一般使用被动模式比较多。

3、FTP的用户认证

FTP支持系统用户,匿名用户,和虚拟用户三种用户认证。

匿名用户:登陆用户名是anonymous,没有密码

系统用户:是FTP服务器端的本地用户和对应的密码,默认访问的是用户家目录

虚拟用户:仅用于访问服务器中特定的资源,常见的虚拟用户认证的方式有使用文件认证或使用数据库进行认证。最终也会将这些虚拟用户同一映射为一个系统用户,访问的默认目录就是这个系统用户的家目录。

4、常见的状态信息码

1**:提示信息

2**:成功执行的状态码

3**:需要进一步提供补充类的信息码,例如在输入用户账号信息后出现此状态,提示继续输入密码

4**:客户端类的错误

5**:服务端错误

5、常见的实现FTP协议的工具

服务端:

Linux端:wu-ftpd,pureftp,vsftpd(Centos 6上默认提供的)

windows端:ServU,FileZilla-Server

客户端工具:

Linux操作系统:ftp,lftp,lftpget,wget,cul,gftp等

windows操作系统:FileZilla

6、vsftpd

在CentOS上默认提供的是vsftpd(Very Secure FTP),以安全著称。

用户认证配置文件:/etc/pam.d/vsftpd      
服务脚本:/etc/rc.d/init.d/vsftpd      
配置文件目录:/etc/vsftpd       
主配置文件:vsftpd.conf       
匿名用户(映射为ftp用户)共享资源位置:/var/ftp       
系统用户通过ftp访问的资源的位置:用户自己的家目录       
虚拟用户通过ftp访问的资源的位置:给虚拟用户指定的映射成为的系统用户的家目录

7、常见的的vsftpd的参数设置

匿名用户的配置:

  1.  anonymous_enable=YES    #允许匿名用户登录
  2.  anon_upload_enable=YES     #允许匿名用户上传文件
  3.  anon_mkdir_write_enable=YES    #允许匿名用户创建目录
  4.  anon_ohter_write_enable=YES    #允许其他的写权限(删除目录,文件)

系统用户的配置:

  1.  local_enable=YES    #允许本地用户的登录
  2.  write_enable=YES    # 本地用户可写
  3.  local_umask=022    # 本地用户的umask

禁锢所有的ftp本地用户于其家目录中:

chroot_local_user=YES      #允许本地用户只能访问自己的家目录,不允许访问其他目录,适用于所有的用户

 

 

禁锢文件中指定的ftp本地用户于其家目录中:

  1.  chroot_list_enable=YES 
  2.  chroot_list_file=/etc/vsftpd/chroot_list

目录消息:

dirmessage_enable=YES # 开启目录提示信息

在对应的目录下创建一个.message的文件,里面的内容当我们在访问时此目录时,会看到提示的信息。

 

 

日志:

  1.  xferlog_enable=YES      # 打开传输日志
  2.  xferlog_std_format=YES   # 是否使用标准格式
  3.  xferlog_file=/var/log/xferlog  #日志文件路径

改变上传文件的属主:

  1.  chown_uploads=YES 
  2.  chown_username=whoever #上传文件后立即改变文件的属主名

vsftpd使用pam完成用户认证,其用到的pam配置文件:

pam_service_name=vsftpd   #用户认证文件,在/etc/pam.d/目录下

是否启用控制用户登录的列表文件

  1.  userlist_enable=YES
  2.  userlist_deny=YES|NO   # 为yes的意思是,userlist_file是黑名单文件;是no的意思是userlist_file是白名单文件
  3.  userlist_file=/etc/vsftpd/user_list,默认文件为/etc/vsftpd/user_list

连接限制:

max_clients: 最大并发连接数;

max_per_ip: 每个IP可同时发起的并发请求数;

传输速率:

anon_max_rate: 匿名用户的最大传输速率, 单位是“字节/秒”;

local_max_rate: 本地用户的最大传输速率, 单位是“字节/秒”;

8、虚拟用户(基于mysql实现)

一、安装所需要程序

1

2

3

4

5

1、安装mysql和pam_mysql

 

# yum -y install vsftpd mysql-server mysql-devel pam_mysql

 

注意:pam_mysql由epel源提供。

二、创建虚拟用户账号

1.准备数据库及相关表

首先请确保mysql服务已经正常启动。而后,按需要建立存储虚拟用户的数据库即可,

这里将其创建为vsftpd数据库。

  1.  mysql> create database vsftpd;
  2. mysql> grant select on vsftpd.* to vsftpd@'%' identified by 'vsftpd';
  3. mysql> flush privileges;
  4. mysql> use vsftpd;
  5. mysql> create table users (
  6.     -> id int AUTO_INCREMENT NOT NULL,
  7.     -> name char(20) binary NOT NULL,
  8.     -> password char(48) binary NOT NULL,
  9.     -> primary key(id)
  10.     -> );

 

2、添加测试的虚拟用户

根据需要添加所需要的用户,需要说明的是,这里将其密码为了安全起见应该使用PASSWORD

函数加密后存储。

  1.  mysql> insert into users(name,password) values('tom',password('tom'));
  2. mysql> insert into users(name,password) values('jerry',password('tom'));

三、配置vsftpd

1.建立pam认证所需文件

#vi /etc/pam.d/vsftpd.mysql

添加如下两行

  1.  auth required /lib/security/pam_mysql.so user=vsftpd passwd=www.magedu.com host=localhost
  2.  db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
  3. account required /lib/security/pam_mysql.so user=vsftpd passwd=www.magedu.com host=localh
  4. ost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2

注意:由于mysql的安装方式不同,pam_mysql.so基于unix sock连接mysql服务器时可能会出问题,

此时,建议授权一个可远程连接的mysql并访问vsftpd数据库的用户。

2.修改vsftpd的配置文件,使其适应mysql认证

建立虚拟用户映射的系统用户及对应的目录

  1.  # useradd -s /sbin/nologin -d /var/ftproot vuser
  2. # chmod go+rx /var/ftproot

请确保/etc/vsftpd.conf中已经启用了以下选项

  1.  anonymous_enable=YES
  2. local_enable=YES
  3. write_enable=YES
  4. anon_upload_enable=NO
  5. anon_mkdir_write_enable=NO
  6. chroot_local_user=YES

而后添加以下选项

  1.  guest_enable=YES
  2. guest_username=vuser

 

并确保pam_service_name选项的值如下所示

pam_service_name=vsftpd.mysql

四、启动vsftpd服务

1

2

# service vsftpd start

# chkconfig vsftpd on

五、配置虚拟用户具有不同的访问权限

vsftpd可以在配置文件目录中为每个用户提供单独的配置文件以定义其ftp服务访问权限,

每个虚拟用户的配置文件名同虚拟用户的用户名。配置文件目录可以是任意未使用目录,

只需要在vsftpd.conf指定其路径及名称即可。

 

1、配置vsftpd为虚拟用户使用配置文件目录

 

# vim vsftpd.conf

添加如下选项

user_config_dir=/etc/vsftpd/vusers_config 

2、创建所需要目录,并为虚拟用户提供配置文件

  1.  # mkdir /etc/vsftpd/vusers_config/
  2. # cd /etc/vsftpd/vusers_config/
  3. # touch tom jerry

 

3、配置虚拟用户的访问权限

 虚拟用户对vsftpd服务的访问权限是通过匿名用户的相关指令进行的。比如,如果需要让tom用

户具有上传文件的权限,可以修改/etc/vsftpd/vusers_config/tom文件,在里面添加如下选项即可。

  1.  anon_upload_enable={YES|NO}
  2. anon_mkdir_write_enable={YES|NO}
  3. anon_other_write_enable={YES|NO}

 

二、NFS协议

1、NFS的几个概念

RPC(Remote Procedure Call Protocol远程过程调用协议):

简单的说是函数调用(远程主机上的函数) 一部分功能由本地程序完成 另一部分功能由远程主机上的函数完成。客户端挂载了nfs服务器的文件系统时,进行一些操作,但是这些操作服务端如何知道呢??这可是在内核级别上实现协议。RPC就解决了这个问题,它会将客户端的操作的函数调用发送到服务器端,由服务器端执行这些函数调用。

idmapd:

想想这种情形,nfs客户端在挂载文件系统以后,在本地以某用户的身份创建了一个文件,在服务器端这个文件的属主和属组是哪个用户呢?早期是通过NIS(Network Information Services网络信息服务)来解决这个问题的,但是在传输账号和密码时,使用的是明文传输,现在使用LDAP+clbbler来实现的。但是,NFS使用的是idmapd这个服务,有rpc提供,将所有的用户后映射为nfsnobody,但是在访问的时候,还是以本地UID对应的本地用户来使用的。

mounted:

NFS是通过什么来控制那些客户端可以访问,那些不可以访问的呢?NFS只支持通过IP来控制客户端,而这个功能是由守护进程mounted来实现的,它监听的端口是半随机的。所谓的半随机指的是,这个随机端口是由rpc服务来决定的,而rpc是通过随机的方式。作用等等同于小区大门保安的作用。

2、NFS请求过程

在CentOS6.5中,NFS服务端监听在tcp和udp的2049端口,服务名是nfs、pc监听于tcp和udp的111号端口,服务名是portmapper。

请求过程:当客户端试这去挂载使用nfs共享的文件系统是,客户端首先回去与postmapper(tcp/111)端口去注册使用,此时postmapper会随机分配一个端口给mounted,然后mounted这个守护进程会来验证客户端的合法性,验证通过后,会把请求交给nfs服务,客户端此时可以挂载使用了,用户在创建文件时,会使用到idmapd的守护进程来映射属主。其实idmapd也是有rpc服务提供的,只不过在这里,nfs服务使用到用户映射的功能时,会自动的去调用此守护进程。

3、服务的配置

在服务端,只需要安装nfs-utils就可以直接使用,nfs服务直接是内核的模块。

1

2

3

4

5

6

7

# smod | grep nfs

nfsd                  309196  13 

lockd                  73662  1 nfsd

nfs_acl                 2647  1 nfsd

auth_rpcgss            44949  1 nfsd

sunrpc                262768  17 nfsd,lockd,nfs_acl,auth_rpcgss

exportfs                4236  1 nfsd

服务端共享的目录是通过 /etc/exports这个文件共享出去的。这个文件的书写格式如下:

共享目录    客户端(选项1,选项2) 客户端(选项1,选项2) …  示例:

/mydata   172.16.0.0/16(ro,async,no_root_squash)   www.example.com(ro)

  1.  ########################客户端的表示方式##########################
  2. 主机IP地址:例如 192.168.1.10
  3. 网络地址:例如 172.16.0.0/24
  4. 域名表示:例如 www.example.com(指定主机),*.example.com(对应域名下的所有主机)
  5. *:表示所有的主机
  6. ##############################常见的选项###############################
  7. 有几个常用的选项可以对 NFS 实现进行定制。这些选项包括:
  8. secure: 这个选项是缺省选项,它使用了 1024 以下的 TCP/IP 端口实现 NFS 的连接。
  9.   指定 insecure 可以禁用这个选项。
  10. rw: 这个选项允许 NFS 客户机进行读/写访问。缺省选项是只读的。
  11. async: 异步存储(所有的客户端操作先在内存中缓存,等待cpu空闲的时候写入磁盘)。
  12.   这个选项可以改进性能,但是如果没有完全关闭 NFS 守护进程就重新启动了 NFS 服务器,
  13.   这也可能会造成数据丢失。与之相反的是syns,是同步写入磁盘。
  14. no_wdelay: 这个选项关闭写延时。如果设置了 async,那么 NFS 就会忽略这个选项。
  15. nohide: 如果将一个目录挂载到另外一个目录之上,那么原来的目录通常就被隐藏起来
  16.   或看起来像空的一样。要禁用这种行为,需启用 hide 选项。
  17. no_subtree_check: 这个选项关闭子树检查,子树检查会执行一些不想忽略的安全性检查。
  18.   缺省选项是启用子树检查。
  19. no_auth_nlm: 这个选项也可以作为 insecure_locks 指定,它告诉 NFS 守护进程不要对加
  20.   锁请求进行认证。如果关心安全性问题,就要避免使用这个选项。缺省选项是 auth_nlm 或 
  21.   secure_locks。
  22. mp (mountpoint=path): 通过显式地声明这个选项,NFS 要求挂载所导出的目录。
  23. fsid=num: 这个选项通常都在 NFS 故障恢复的情况中使用。如果希望实现 NFS 的故障恢复,
  24.   请参考 NFS 文档。
  25. #####################用户映射的选项############################
  26. root_squash: 这个选项不允许 root 用户访问挂载上来的 NFS 卷。
  27. no_root_squash: 这个选项允许 root 用户访问挂载上来的 NFS 卷。
  28. all_squash: 这个选项对于公共访问的 NFS 卷来说非常有用,它会限制所有的 UID 和 GID,
  29.   只使用匿名用户。缺省设置是 no_all_squash。
  30. anonuid 和 anongid: 这两个选项将匿名 UID 和 GID 修改成特定用户和组帐号。

4、常用命令

showmount是用来查看nfs服务的情况

用法:showmount [ -adehv ] [ --all ] [ --directories ] [ --exports ] [ --help ] [ --version ] [ host ]

可以使用短选型,也可以使用长选项。

-a :这个参数是一般在NFS SERVER上使用,是用来显示已经mount上本机nfs目录的cline机器。   
-e :显示指定的NFS SERVER上export出来的目录。 

exportfs:一般用在当NFS服务启动后,使用此命令来控制共享目录的导出

用法:exportfs [-aruv] 

  1.  -a :全部mount或者unmount /etc/exports中的内容 
  2.  -r :重新mount /etc/exports中分享出来的目录 
  3.  -u :umount目录 
  4.  -v :在export的时候,将详细的信息输出到屏幕上。 
  5.  具体例子: 
  6.  # exportfs -au 卸载所有共享目录 
  7.  # exportfs -rv 重新共享所有目录并输出详细信息

5、客户端的使用

先使用 showmont -e SER_NAME 来发现服务端的共享的目录

然后使用mount挂载使用,格式:

mount -t nfs SER_NAME:/data /parth/to/someponit [-o 选项]

mount -t nfs 192.168.1.99:/mydat /mnt -o rsize=4096

rsize 的值是从服务器读取的字节数。wsize 是写入到服务器的字节数。默认都是1024, 如果使用比较高的值,如8192,可以提高传输速度。

三、samba服务(基本介绍)

1、协议

smb: Service Message Block

CIFS: Common Internet File System通用网络文件系统,是windows主机之间共享的协议,samba实现了这个协议,所以可以实现wondows与linux之间的文件共享服务。

监听的端口有:

tcp/137 udp/137 tcp/139 udp/139

137:是实现NetBIOS协议,实现解析windows之间主机名的解析,实现在windows的网上邻居可以看到Linux的主机名。

139:是实现cifs协议

2、如何访问?

在Linux中:

 

交互式数据访问:

1

smbclient -L HOST -U USERNAME

获取到共享信息之后,

1

smbclint //SERVER/shared_name -U USERNAME

基于挂载的方式访问:

1

mount -t cifs //SERVER/shared_name  /mount_point -o username=USERNAME,password=PASSWORD

3、如何配置samba服务器(Linux)

# yum -y install samba

服务脚本:

  1.  /etc/rc.d/init.d/nmb # 实现 NetBIOS协议
  2.    /etc/rc.d/init.d/smb  # 实现cifs协议

主配置文件:

     /etc/samba/smb.conf

samba用户:

     账号:都是系统用户, /etc/passwd

     密码:samba服务自有密码文件,

     将系统用户添加为samba的命令:smbpasswd

     smbpasswd:

         -a Sys_User: 添加系统用户为samba用户

         -d :禁用用户

         -e: 启用用户

         -x: 删除用户

配置文件:

/etc/samba/smb.conf   配置文件包括全局设定,特定共享的设定,私有家目录,打印机共享,自定义共享

全局配置:

1

2

3

workgroup = MYGROUP  # 工作组

hosts allow = 127. 192.168.12. 192.168.13. # 访问控制,IP控制

interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24 # 接口+ip控制

自定义共享:

1

2

3

4

5

6

[shared_name] #共享名称

path = /path/to/share_directory #共享路径

comment = Comment String # 注释信息

guest ok = {yes|no} | public = {yes|no} # 是否启用来宾账号

writable = {yes|no} |  read only = {yes|no} # 共享目录是否可写

write list = +GROUP_NAME  # 允许可写的用户列表,前面有+是代表允许可写的组

测试配置文件是否有语法错误,以及显示最终生效的配置:

1

testparm

 

    至此,三种常见的文件服务介绍完成。

 

 

 

 

文章来源:https://blog.csdn.net/lyn631579741/article/details/129493798

标签:选项,FTP,Samba,用户,vsftpd,NFS,mysql,YES
From: https://www.cnblogs.com/jiaodaoniujava/p/17528075.html

相关文章

  • kali搭建ftp服务
    0x01vsftpd简介​ vsftpd是verysecureFTPdaemon的缩写,安全性是它的一个最大的特点。vsftpd是一个UNIX类操作系统上运行的服务器的名字,它可以运行在诸如Linux、BSD、Solaris、HP-UNIX等系统上面,是一个完全免费的、开放源代码的ftp服务器软件,支持很多其他的FTP服务器......
  • 推荐使用集串口,SSH远程登录和FTP传输三合一工具MobaXterm
    在以前的资料里,串口和SSH远程登使用SecureCRT,window与ubuntu数据传输使用filezilla,窗口切换来切换去,麻烦也眼花缭乱。有没有一个工具搞定串口、SSH和FTP?有!它就是MobaXterm。是不是特别高效呢?MobaXterm是一个全功能的终端软件。除了支持SSH连接还能支持FTP、串口等协议。其拥有以下......
  • Apache FtpServer Spring3 整合
    配置运行成功,以备遗忘。Spring配置当中加入 <importresource="applicationFTP.xml"/>在Spring配置同级目录创建 applicationFTP.xml<?xmlversion="1.0"encoding="UTF-8"?><serverxmlns="http://mina.apache.org/ftpserver/spring/v1"  ......
  • NFS挂载的2种方式
    交流群一:QQ群:869222007(鸿蒙开发/Linux/嵌入式/驱动/资料下载)交流群二:QQ群:536785813(单片机-嵌入式)公 众 号:百问科技版本日期作者说明V12020韦东山摘自《嵌入式Linux应用开发完全手册》在第一期视频:第0课第7节_刚接触开发板之制作根文件系统及初试驱动.wmv,因为要测试驱动,所以......
  • nfs 存储类
    1.建立nfsservercat/etc/exports/data/nfs_pro192.168.31.0/24(rw,no_root_squash) 2.建立sa,绑定权限kubectlcreatesanfs-provisionerkubectlcreateclusterrolebindingnfs-provisioner-clusterolebinding--clusterrole=cluster-admin--serviceaccount=defa......
  • 搭建vsftp服务器,教程简单值得推荐
    centos7之vsftp安装和使用 centos7之vsftp安装和使用-Charles.L-博客园(cnblogs.com)......
  • sftp命令详解
    Lookslikesftpdoesn't distinguishBinaryfilesandASCIIfilesatall.Thatmeansitdoesntsupportthecommandslike'bin'or'ascii'thatftpsupports.sftp>helpAvailablecommands:byeQui......
  • 云服务器 搭建NFS 文件系统 用于解决负载均衡session 文件共享等
    解决的问题:如果多台服务器负载均衡用户没有根据TCP设置分配在一台服务器那么session无法共享文件无法共享一台服务器创建了文件另外一台也会同步创建1.搭建NFSServe注意:共享系统的服务端和客户端不能安装在同一台服务器上例如你做负载均衡的2台服务器内网ip 12.20.10......
  • FTP的管理与应用
    FTP的管理与应用安装FTP挂载光盘安装服务器和客户端服务开机自启ftp主配置所在文件删除删除空行修改主配置文件可上传可下载配置本地身份验证FTP创建用户并且设置密码创建组将xx,yy加入组创建FTP验证根目录授权用户操作权限修改主配置文件重启FTP服务写入数据使用yy登录可上传可下......
  • 超算环境为什么不推荐使用 NFS
    概述NFS英文即NetworkFileSystem,网络文件系统,是由SUN公司研制的UNIX表示层协议(presentationlayerprotocol),它最大的功能就是可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件,能使使用者访问网络上别处的文件就像在使用自己的计算机一样。NFS作为最常用的......