文件共享使用常规的httpd也可以共享文件,但是有缺点,下载别人共享的文件没问题但是,当我们共享自己的文件的时候文件的上传将变得很麻烦,并且影响系统的安全,需要有一个账号登录系统然后上传文件,有时我们也需要共享一些文件给特定的人,httpd也很难满足条件。
正是因为这些麻烦,文件共享服务的功能就是解决这些问题,这里会介绍三种文件共享的工具。1ftp,它主要是用于互联网上共享文件,具有很多权限控制功能;2nfs,linux之间共享文件工具,它的安全性低于ftp,主要使用在内网环境中,应用于无盘服务器和共享存储;3samba,主要用于与windows之间共享文件,多用在公司内文件的共享,它具有比ftp更强大的权限管理功能。
一 ftp
vsftpd是ftp共享文件的一个实现软件,还有其它的共享文件的软件,vsftpd使用的比较广泛,这里介绍vsftpd。vsftpd主配置文件的位置:/etc/vsftpd/vsftpd.conf
1 基本配置
1
2
3
4
5
6
7
8
9
|
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 匿名用户的管理
匿名用户就是我们访问共享文件不使用账号,这时使用的账号就是匿名账号。
1
2
3
4
5
6
7
8
9
|
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 系统用户管理
1
2
3
4
5
6
7
8
|
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 虚拟用户管理
1
2
3
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 传输管理
1
2
3
4
5
6
7
8
9
10
|
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 加密传输
1
2
3
4
5
|
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服务。
1
2
3
4
5
6
7
8
9
10
11
|
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 使用固定端口
1
2
3
4
5
6
7
|
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共享文件的配置文件
1
2
|
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 共享目录格式
[ 共享名称] 远程网络看到的共享名称
1
2
3
4
5
6
7
8
|
comment 注释信息
path 所共享的目录路径
public 能否被guest 访问的共享,和guest ok 类似
browsable 是否允许所有用户浏览到此共享
writable=
yes
可以被所有用户读写,默认为no
read
only=no 和writable=
yes
等价,如与以上设置冲突,放在后面的设置生效
write list 三种形式:用户,@ 组名,+ 组名, 用,分隔如writable=no ,列表中用户或组可读写,不在列表中用户只读
valid
users
特定用户才能访问该共享,如为空,将允许所有用户,用户名之间用空格分隔
|
总结
这个三种文件共享方式,我们都有可能使用,并且可能需要很精密的权限配置,每项配置不一定需要全部记住,但是需要了解大致的功能,适当的查看文档实现需求,并且很多都是一次性配置永久使用。