首页 > 代码库 > 文件共享

文件共享

  文件共享使用常规的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 #主动模式端口为20
ftp_data_port=20 #指定主动模式的端口,和上面设置相似
linux 客户端默认使用 被动模式
windows 客户端默认使用主动模式
pasv_min_port=6000 #端口范围最小值
pasv_max_port=6010 #端口范围最大值
use_localtime=YES #使用当地时间,默认为NO,使用GMT
nopriv_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 #指定匿名上传umask
chown_uploads=YES #默认NO,是否更改上传文件的属主
chown_username=tom #指定属主为tom
chown_upload_mode=0644 #上传文件的权限


3   系统用户管理

guest_enable=YES #所有系统用户都映射成guest 用户
guest_username=ftp #配合上面选项才生效,指定guest 身份
local_enable=YES #是否允许linux 用户登录
write_enable=YES #允许写
local_umask=022 #创建文件的默认umask
chroot_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 #启用SSL
allow_anon_ssl=NO #匿名不支持SSL
force_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/vsftpd
service ftp
{
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/vsftpd
log_on_failure += USERID
disable = no
}

8 ftp 工具

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

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

nfs

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

技术分享

1 配置NFS 使用固定端口

vim /etc/sysconfig/nfs
RQUOTAD_PORT=875
LOCKD_TCPPORT=32803
LOCKD_UDPPORT=32769
MOUNTD_PORT=892
STATD_PORT=662
STATD_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 特定用户才能访问该共享,如为空,将允许所有用户,用户名之间用空格分隔


总结

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


本文出自 “老王linux旅程” 博客,请务必保留此出处http://oldking.blog.51cto.com/10402759/1884876

文件共享