首页 > 代码库 > 文件共享
文件共享
文件共享使用常规的httpd也可以共享文件,但是有缺点,下载别人共享的文件没问题但是,当我们共享自己的文件的时候文件的上传将变得很麻烦,并且影响系统的安全,需要有一个账号登录系统然后上传文件,有时我们也需要共享一些文件给特定的人,httpd也很难满足条件。
正是因为这些麻烦,文件共享服务的功能就是解决这些问题,这里会介绍三种文件共享的工具。1ftp,它主要是用于互联网上共享文件,具有很多权限控制功能;2nfs,linux之间共享文件工具,它的安全性低于ftp,主要使用在内网环境中,应用于无盘服务器和共享存储;3samba,主要用于与windows之间共享文件,多用在公司内文件的共享,它具有比ftp更强大的权限管理功能。
一 ftp
vsftpd是ftp共享文件的一个实现软件,还有其它的共享文件的软件,vsftpd使用的比较广泛,这里介绍vsftpd。vsftpd主配置文件的位置:/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 和2049共4个端口
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.com,IP 不可以
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 非持续请求
intr和hard配合,请求可 中断
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
文件共享