文件共享

本文涉及的产品
运维安全中心(堡垒机),免费版 6个月
简介:

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

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

 ftp

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

基本配置

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 服务指定用户身份运行


匿名用户的管理

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

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  #用户列表


虚拟用户管理

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文件内容的格式是第一行名字第二行密码,多个用户的话一次排列即可


传输管理

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  #允许以文本的格式下载


加密传输

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

非独立模式运行

配置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文件系统调用的一个流程图

wKioL1had0TRD3dLAABpiZFmen4750.png-wh_50

配置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 20494个端口

2 nfs共享文件的配置文件

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

其格式如下

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

主机格式

单个主机: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 :表示使用通配所有客户端

选项格式

默认选项(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

使用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

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

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

不会影响本地目录结构

示例:

/etc/auto.master:

/- /etc/auto.direct

/etc/auto.direct:

/foo server1:/export/foo

/user/local/ server1:/usr/local

 samba

基础

相关包:

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

配置文件格式

全局设置:

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

特定共享设置:

[homes] 用户的家目录共享

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

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

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

共享目录格式

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

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  特定用户才能访问该共享,如为空,将允许所有用户,用户名之间用空格分隔


总结

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




      本文转自Ailu0li 51CTO博客,原文链接:http://blog.51cto.com/oldking/1884876 ,如需转载请自行联系原作者




相关文章
|
6月前
|
网络协议 Linux
基于 NFS 的文件共享实现
基于 NFS 的文件共享实现
|
存储 网络协议 Linux
Linux网络服务之NFS(文件共享服务)
1 NFS简介 NFS(Network File System 网络文件服务),是一种基于 TCP/IP 传输的网络文件系统协议,最初由 Sun 公司开发。
743 1
|
存储 网络协议 Linux
使用Samba实现文件共享
SMB服务消息块协议,指在解决局域网内的文件或打印机等资源的共享问题,这也使得在多个主机之间共享文件变得越来越简单.到了1991年,当时还在读大学的Tridgwell为了解决Linux系统与Windows系统的文件共享问题,基于SMB协议,开发出了SMBServer服务程序,后来由于名称冲突,改名为Samba,而如今Samba服务已经成为了,Linux系统与Windows系统之间数据传输的最佳选择.
302 0
|
Linux 应用服务中间件 网络安全
Linux服务器打造一个简单的文件共享系统
Linux服务器打造一个简单的文件共享系统
Linux服务器打造一个简单的文件共享系统
|
开发工具
|
Linux 开发工具 数据安全/隐私保护