FTP和NFS服务器

文件服务器主要有3种:FTP,NFS,Samba,这里主要介绍FTP 和NFS
ftp服务器:
ftp(File transfer protocol)文件传输协议,主要功能是在客户端和服务器端进行文件的传输。这种古老的协议使用的是明码传输方式,安全性能差,所以我们主要介绍红帽自带的vsftpd(有关ftp安全的软件)的功能。
 
ftp额外功能
1、不同等级用户身份的登陆:
ftp 用户的类型:
1),匿名用户:不需要账号密码就可以自动登录,访问的文件是自己家目录下的文件(即/var/ftp)
2),系统用户:访问的是各自的家目录
虚拟用户:没有家目录,它可以映射为一个系统用户,没有系统用户的相关权限,和系统用户的用户名和密码也都不相同
 
2、命令记录与登陆文件记录:
ftp可以利用系统syslogd来进行记录数据,这些数据包括了用户曾经下达过的命令和用户传输数据的记录(在/var/log里)
 
3、可以限制用户活动的权限:
为了避免用户在你的linux系统中随意进入其他文件系统,所以可以将用户的工作范围限制在自己的家目录下。
 
ftp的工作流程以及使用到的端口号:
ftp的传输使用的是tcp封包协议,tcp在建立时会经过3次握手,但是ftp会麻烦一些,在ftp的客户端和服务器端建立连接时,会进行2次联机,建立2个信道,分别是命令信道和数据信道。而在该过程中会牵涉到主动联机和被动联机的过程(这个过程是相对于服务器而言的)
 
建立命令信道的时候是客户端向服务器端发起连接,开启的是服务器端的21号端口,这种模式是被动联机。
建立数据通道时,服务器端会启用自己的20号端口主动向客户端发起连接,请求发送数据,这种过程是服务器的主动连接。
工作模式如下:
 

ftp的安全问题:
这里我们以红帽自带的安全软件vsftpd来讲解下。
如果你的系统没有安装vsftpd这个软件的话,可以利用yum命令安装即可。它的主配置文件的目录/etc/vsftpd/vsftpd.conf
 
ftp的安全问题:
这里我们以红帽自带的安全软件vsftpd来讲解下。
如果你的系统没有安装vsftpd这个软件的话,可以利用yum命令安装即可。它的主配置文件的目录/etc/vsftpd/vsftpd.conf
 
我们先了解下主配置文件中的几个相关配置:
 
配置文件的格式:
开头是#加空格的是注释,#紧跟内容的是可以启用的项,没有启用的项目也会有一个默认值,不想用默认值的话可以启用给它一个非默认值。
 
 
  
  1. anonymous_enable=YES    #是否启用匿名用户 
  2. local_enable=YES    #是否可以使用系统用户 
  3. write_enable=YES    #是否允许本地用户可写 
  4. local_umask=022     #用户上传的文件或目录的反掩码 
  5. anon_upload_enable=YES  #是否允许匿名用户上传 
  6. anon_mkdir_write_enable=YES     #是否允许创建目录 
  7. anon_other_write_enable=YES     #允许其他写权限(这个是自己手动添加的) 
  8.   
  9. dirmessage_enable=YES   #目录信息启用 
  10. xferlog_enable=YES      #是否打开传输日志 
  11. xferlog_file=/var/log/xferlog   #日志所在文件 
  12. connect_from_port_20=YES    #主动模式下开启的端口 
  13.  
  14. chown_uploads=YES   #修改上传文件的属主 
  15. chown_username=whoever  #修改属主为谁 
  16. bind 
  17. chroot_list_enable=YES      #通过这项可以限制用户活动的权限(禁锢用户到其家目录下) 
  18. chroot_list_file=/etc/vsftpd/chroot_list    #指定禁锢的用户文件 
  19. chroot_local_enable=YES  #禁锢所有用户 
 
 
  
  1. userlist_enabel=YES 是否启用用户列表/etc/vsftpd/user_list 中的用户 
  2. userlist_deny=YES|NO 是否拒绝使用用户列表中的用户 
  3. 这项具体的定义在/etc/pam.d/vsftpd 中 
可以启用这些选项,自己尝试操作一下哦(在这里就不作具体操作了)
 
下面介绍下ftps
ftps:基于SSL的ftp
 
如何让vsftpd支持ssl???
在主配置文件中添加以下条件即可:
 
 
  
  1. vim /etc/vsftpd/vsftpd.conf 
  2.  
  3. ssl_enable=YES  #启用ssl 
  4. allow_anon_ssl=NO   #不允许匿名用户ssl 
  5. force_local_data_ssl=YES    #强制本地用户传输必须使用ssl 
  6. force_local_logins_ssl=YES  #登陆时账号密码也使用ssl 
  7. ssl_tlsv1=YES   #定义支持tlsv1协议 
  8. ssl_sslv2=NO     
  9. ssl_sslv3=NO 
  10. rsa_cert_file=/path/to/file     #指定证书文件所在路径 
  11. rsa_private_key_file=/path/to/file  #指定密钥文件所在路径 
创建证书的过程不再操作。
然后可以在网上下载一个客户端工具如:flashFXP ,在本地连接到该ftp服务器,就可以实现基于ssl的ftp进行认证了。
 
如何让vsftpd支持虚拟用户???
1.建立虚拟FTP用户的帐号数据库文件
建立虚拟用户的账户名、密码列表
奇数行为帐号名
偶数行为上一行中帐号的密码
转化为Berkeley DB格式的数据文件
db_load为 转换工具
这一步骤需安装db4-utils软件包(系统自带,使用yum命令可以直接安装)
 
 
  
  1. vim /etc/vsftpd/vusers.list 
  2. tom 
  3. 123 
  4. jerry 
  5. 456 
 
 
  
  1. cd /etc/vsftpd/ 
  2. db_load -T -t hash -f vusers.list   vusers.db 
  3. file vusers.db      #查看该文件的格式 
  4. vusers.db: Berkeley DB (Hash, version 8, native byte-order) 
  5. chmod 600 /etc/vsftpd/vusers.* 
2.创建FTP根目录及虚拟用户映射的系统用户
 
 
  
  1. mkdir /var/ftproot 
  2. useradd -d /var/ftproot -s /sbin/nologin virtual 
  3. chmod 755 /var/ftproot/  
3.建立支持虚拟用户的PAM认证文件
 
 
  
  1. vim /etc/pam.d/vsftpd.vu    #这个文件里主要用来身份认证之用,还有一些用户身份的抵挡功能 
  2.  
  3. auth       required     pam_userdb.so db=/etc/vsftpd/vusers 
  4. account    required     pam_userdb.so db=/etc/vsftpd/vusers 

4.在vsftpd.conf文件中添加支持配置
 
 
  
  1. vim  /etc/vsftpd/vsftpd.conf 
  2. anonymous_enable=NO 
  3. local_enable=YES 
  4. write_enable=YES 
  5. anon_umask=022 
  6. guest_enable=YES 
  7. guest_username=virtual  
  8. pam_service_name=vsftpd.vu 
5.为个别虚拟用户建立独立的配置文件
 
 
  
  1. 在vsftpd.conf文件中添加用户配置目录支持 
  2.  user_config_dir=/etc/vsftpd/vusers_dir  
为用户tom、jerry建立独立的配置目录及文件
 配置文件名与用户名同名
 
 
  
  1. mkdir /etc/vsftpd/vusers_dir 
  2. cd /etc/vsftpd/vusers_dir 
  3.  
  4. vim jerry 
  5. anon_upload_enable=YES 
  6. anon_mkdir_write_enable=YES 
6.重新加载vsftpd配置
 
 
  
  1. service vsftpd reload 
7.使用虚拟FTP账户访问测试
 
分别用tom、jerry用户登录FTP服务器进行下载、上传测试
 tom用户可以登录,并可以浏览、下载文件,但无法上传
 jerry用户可以登录,并可以浏览、下载文件,也可以上传
 匿名用户或其他系统用户将不能登录
 
 
 
NFS服务器
 
NFS(Network  FileSystem)网络文件系统,它最大的功能就是可以透过网络,让不同的机、不同的操作系统、可以彼此分享个别的文件。这个NFS可以让个人PC机将网络远程NFS服务器分享的目录,挂载到本地的机器当中,自己就可以像调用本地磁盘上的文件系统一样进行操作了。
 
NFS是基于RPC(remote procefure call)远程过程调用来进行文件共享的,所以启动NFS服务器时要启动RPC才能工作哦。

那么什么是RPC呢???
RPC的主要功能就是在指定每个NFS功能所对应的端口号,并且回报给客户端,让客户端连接到正确的端口号。RPC 是使用固定端口号111来工作的。
nfs server端的端口是tcp/2049和udp/2049
当客户端发出请求时,先到达一个能帮助server认证的地方,rpc.mounted 

怎样实现共享??
在/etc/exports中设置:
每一行定义一个共享的文件系统,包含了用空格隔开的客户端列表及其访问属性
 
如,/data 172.16.0.0/24(访问属性) 10.0.0.0/8(访问属性)
 
:客户端列表间用空白分割
多个属性剑用逗号分割
某客户端和其属性之间不能有其他任意字符而是直接跟上用小括号括起来的属性列表
 
客户端列表表示方法:
1、单个主机
FQDN:完整的主机名
IP
 
2、通配符也可以在这里使用
*:匹配多个字符
?:匹配单个字符
 
3、网络地址:
掩码格式可以使用完全格式:172.16.0.0/255.255.0.0
也可以使用CIDR格式:172.16.0.0/16
常用属性:
ro:只读
rw:可读写
sync:同步
async:异步
root_squash:对root进行限制
all_squash:对所有的进行限制
no_root_squash:不对管理员进行限制
 
 
实现重新导出:
exportfs 
-r :重新导出
-u :关闭某个共享目录
-u client:directory
-a :导出所有
-v :显示所有
一般使用: -rva
-uv
-ua
 
关闭一个共享文件:eg:exportfs -vu 172.16.0.0/16:/shared
 
showmount  查看导出的文件系统:
-e server-ip: 用于显示某server上所有导出的文件系统
-d server_ip: 用于显示某服务器导出的所有文件系统中至少被挂载使用的文件系统
-a server_ip: 显示某服务器导出文件系统中所有任何客户所使用的文件系统的情况列表
eg:
 
 
  
  1. [root@www ~]# showmount -e 172.16.9.2 
  2. Export list for 172.16.9.2: 
  3. /tmp  172.16.0.0/16 
  4. /data 192.168.0.0/24,172.16.0.0/16 
  5. [root@www ~]# exportfs -uv 172.16.0.0/16:/data 
  6. unexporting 172.16.0.0/16:/data 
  7. [root@www ~]# showmount -e 172.16.9.2 
  8. Export list for 172.16.9.2: 
  9. /tmp  172.16.0.0/16 
  10. /data 192.168.0.0/24