文件共享使用常规的httpd也可以共享文件,但是有缺点,下载别人共享的文件没问题但是,当我们共享自己的文件的时候文件的上传将变得很麻烦,并且影响系统的安全,需要有一个账号登录系统然后上传文件,有时我们也需要共享一些文件给特定的人,httpd也很难满足条件。

  正是因为这些麻烦,文件共享服务的功能就是解决这些问题,这里会介绍三种文件共享的工具。1ftp,它主要是用于互联网上共享文件,具有很多权限控制功能;2nfslinux之间共享文件工具,它的安全性低于ftp,主要使用在内网环境中,应用于无盘服务器和共享存储;3samba,主要用于与windows之间共享文件,多用在公司内文件的共享,它具有比ftp更强大的权限管理功能。

ftp

  vsftpdftp共享文件的一个实现软件,还有其它的共享文件的软件,vsftpd使用的比较广泛,这里介绍vsftpdvsftpd主配置文件的位置:/etc/vsftpd/vsftpd.conf

1 基本配置

listen_port=21 #监听端口connect_from_port_20=YES #主动模式端口为20ftp_data_port=20 #指定主动模式的端口,和上面设置相似linux 客户端默认使用 被动模式windows 客户端默认使用主动模式pasv_min_port=6000 #端口范围最小值pasv_max_port=6010 #端口范围最大值use_localtime=YES #使用当地时间,默认为NO,使用GMTnopriv_user=nobody #vsftpd 服务指定用户身份运行

2 匿名用户的管理

  匿名用户就是我们访问共享文件不使用账号,这时使用的账号就是匿名账号。

anonymous_enable=YES #支持匿名用户no_anon_password=YES #默认NO,匿名用户略过口令检查anon_upload_enable=YES #匿名上传,注意: 文件系统权限anon_mkdir_write_enable=YES #允许创建文件夹anon_other_write_enable=YES #可删除和修改上传的文件anon_umask=077 #指定匿名上传umaskchown_uploads=YES #默认NO,是否更改上传文件的属主chown_username=tom #指定属主为tomchown_upload_mode=0644 #上传文件的权限

3   系统用户管理

guest_enable=YES #所有系统用户都映射成guest 用户guest_username=ftp #配合上面选项才生效,指定guest 身份local_enable=YES #是否允许linux 用户登录write_enable=YES #允许写local_umask=022 #创建文件的默认umaskchroot_local_user=YES #默认NO ,不禁锢,这个很重要,假如没有开启这个选项用户登录ftp后,不仅可以访问家目录内的文件还可以进入其他目录,进而下载系统的其它数据。chroot_list_enable=YES #上一项为yes时,凡是下一项文件内的存在的用户名都不禁锢在家目录里;no时,都禁锢在家目录里。Chroot_list_file=/etc/vsftpd/chroot_list #用户列表

4 虚拟用户管理

pam_service_name=vsftpd #使用pam验证模块,这是一个公共模块,可以给其它应用提供认证功能,这里的vsftpd是使用/etc/pam.d/vsftpd文件作为pam对vsftpd的认证管理文件userlist_enable=YES #启用虚拟用户功能userlist_deny=YES #黑名单,不提示口令,NO为 为 白名单userlist_file=/etc/vsftpd/users_list #虚拟用户存放的文件夹,/etc/vsftpd/users_list文件内容的格式是第一行名字第二行密码,多个用户的话一次排列即可

5 传输管理

max_clients=0 #最大并发连接数max_per_ip=0 #每个IP同时发起的最大连接数anon_max_rate=0 #匿名用户的最大传输速率local_max_rate=0 #本地用户的最大传输速率connect_timeout=60 #主动模式数据连接超时时长accept_timeout=60 #被动模式数据连接超时时长data_connection_timeout=300 #数据连接无数据输超时时长idle_session_timeout=60 #无命令操作超时时长ascii_upload_enable=YES #允许以文本的格式上传ascii_download_enable=YES #允许以文本的格式下载

6 加密传输

ssl_enable=YES #启用SSLallow_anon_ssl=NO #匿名不支持SSLforce_local_logins_ssl=YES #本地用户登录加密force_local_data_ssl=YES #本地用户数据传输加密rsa_cert_file=/etc/pki/tls/certs/vsftpd.pem#加密证书,生成证书的命令make /etc/pki/tls/certs/vsftpd.pem

7 非独立模式运行

配置FTP 服务以非独立服务方运行:listen=NO。这个使用的场景主要是服务器的ftp服务偶尔有人访问,并且不能关闭ftp服务。

vim /etc/xinetd.d/vsftpdservice ftp{flags = REUSEsocket_type = streamwait = nouser = rootserver = /usr/sbin/vsftpdlog_on_failure += USERIDdisable = no}

8 ftp 工具

axel -n 3 -o /root /aa #n代表开启几个线程一起下载,o输出的目录,最后代表url

lftp或者ftp,连接ftp服务器的命令,例子:lftp 172.16.29.2

nfs

       nfs文件系统调用的一个流程图

1 配置NFS 使用固定端口

vim /etc/sysconfig/nfsRQUOTAD_PORT=875LOCKD_TCPPORT=32803LOCKD_UDPPORT=32769MOUNTD_PORT=892STATD_PORT=662STATD_OUTGOING_PORT=2020

防火墙除开放上述端口,还需开放TCP UDP 111 20494个端口

2 nfs共享文件的配置文件

vim /etc/exports/var/ftp/pub *(rw)

其格式如下

/dir 主机1(opt1,opt2) 主机2(opt1,opt2)...

3 主机格式

单个主机:ipv4 ipv6 FQDN

IP networks :两种掩码格式均 支持

172.18.0.0/255.255.0.0

172.18.0.0/16

wildcards :主机名通配,例如*.magedu.comIP 不可以

netgrops NIS 域的主机组,@group_name

anonymous :表示使用* 通配所有客户端

4 选项格式

默认选项(ro,sync,root_squash)

ro,rw 只读和读写

async 异步,数据变化后不立即写磁盘,性能高

sync 1.0.0 后为默认)同步,数据在请求时立即写入共享

no_all_squash (默认)保留共享文件的UID GID

all_squash 不论NFS 使用户者的身份如何,使用者身份都

变成nfsnobody

root_squash (默认)远程root 映射为nfsnobody,UID

65534 CentOS5 之前是4294967294 (nfsnobody)

no_root_squash 远程root 映射成root 用户

anonuid anongid 指明匿名用户映射为特定用户和组,而

nfsnobody

5 使用nfs共享的文件

showmount -e hostname #显示某个主机共享的目录,可以挂载子目录

mount nfsserver:/ /mnt/nfs #挂载

NFS 相关的挂载选项:

fg (默认)前台挂载,bg 后台挂载

hard(默认)持续请求,soft 非持续请求

intrhard配合,请求可 中断

rsize wsize 读和写block 大小,rsize=32768

_netdev 无网络不挂载

开机挂载:/etc/fstab

172.16.0.1:/public /mnt/nfs nfs defaults 00

6 不经常使用的nfs文件可以使用autofs自动挂载

直接匹配包括绝对路径名称

不会影响本地目录结构

示例:

/etc/auto.master:

/- /etc/auto.direct

/etc/auto.direct:

/foo server1:/export/foo

/user/local/ server1:/usr/local

samba

1 基础

相关包:

Samba 提供smb 服务

Samba-client 客户端 软件

samba-common 通用软件

cifs-utils smb 客户端工具

相关服务进程:

smbd 提供smb cifs )服务 TCP:139,445

nmbd NetBIOS 名称解析 UDP:137,138

主配置文件:/etc/samba/smb.conf

语法检查: testparm[-v] [/etc/samba/smb.conf]

客户端工具:smbclient,mount.cifs

2 配置文件格式

全局设置:

[global] 服务器 通用或全局设置 的部分

特定共享设置:

[homes] 用户的家目录共享

[printers] 定义打印机资源和服务

[sharename] 自定义的共享目录配置

其中:# ; 开头的语句 为注释,大 小写不 敏感

3 共享目录格式

[ 共享名称] 远程网络看到的共享名称

 comment 注释信息 path 所共享的目录路径 public 能否被guest 访问的共享,和guest ok 类似 browsable 是否允许所有用户浏览到此共享 writable=yes 可以被所有用户读写,默认为no read only=no 和writable=yes 等价,如与以上设置冲突,放在后面的设置生效 write list 三种形式:用户,@ 组名,+ 组名, 用,分隔如writable=no ,列表中用户或组可读写,不在列表中用户只读 valid users 特定用户才能访问该共享,如为空,将允许所有用户,用户名之间用空格分隔

总结

  这个三种文件共享方式,我们都有可能使用,并且可能需要很精密的权限配置,每项配置不一定需要全部记住,但是需要了解大致的功能,适当的查看文档实现需求,并且很多都是一次性配置永久使用。