企业级文件共享服务

简介:

NFS服务:

常见文件服务:

nfs:network files system,常常专用于linux同平台的文件共享,当然也可以使用samba来完成。

samba:基于smb(协议)实现跨平台共享,在linux 实现cifs(windows)。

将linux加入到域内需要winbind来完成。

ftp:应用层协议,可以跨越平台。所有应用层协议都是跨平台的协议。

nfs和samba是工作在第五层,是通过rpc来实现的(remote procedure call,远程过程调用,过程就是函数。)

运行的前提条件:

1、rpcbind,为nfs提供远程过程调用服务,

        nfs本身由多个程序组成,在启用nfs服务的过程中会调用多个程序,就要涉及到端口,除了2049端口是固定的其它端口都是随机的小于1024的端口,所有需要rpc来协调。

        nfs启动的前提是rpcbind需要先启动,并且如果rpcbind重启了,那么nfs也需要重新启动,因为随机端口需要重新再rpc上注册。

2、nfs-utils,包含nfsd及nfs-daemons服务的软件包。

            nfs验证用户是通过用户的uid和gid来进行验证身份的。

文件共享权限由两部分组成:

文件共享权限和文件权限(和windows的权限类似)

nfs的认证

认证主机,不是认证用户。

服务脚本:/etc/rc.d/init.d/nfs

配置文件:/etc/exports

nfsd监控端口: 2049/tcp 2049/udp。

rpc服务监听端口:随机

一般情况下是在内网通讯的,如果要跨防火墙的话,要使用固定端口配置/etc/sysconfig/nfs文件,将mount_port、rquotad_port、lockd_tcpport、lockd_udpport修改为指定端口。

rpcbind为rpc提供服务,端口为111。所以111端口必须启动,如果没有启动nfs也不可能提供服务。

配置文件/etc/exports格式

export host(options,options,options) host(options)

/data 192.168.1.9(rw) 

/data 本地共享的文件名

ip:可以访问的主机或者网络号 主机号(192.168.1.0/24     sut??.com.cn     *.inno.com) 主机名的方式要求必须可以被解析,通过dns、hosts。

rw:权限。

共享选项:

rw:读写

ro:只读

secure:限制用户只能使用小于1024端口的访问请求,默认开启,关闭使用insecure。

sync:同步写入,立即写入到服务端,性能差,可靠性高,。

async:异步写入,完成后写入服务端,性能好,可靠性差,建议async

wdelay:写入延迟,no_wdelay,不延迟。

nohide:不隐藏服务端挂载的其它nfs目录。

root_squash:压缩root权限,root变为最小权限。

no_root_squash:不压缩

all_squash:y压缩所有用户权限

anonuid:以某一个用户身份执行

anonuid=nfsuser

默认情况下nfs里面root的权限是最小的,

NFS软件结构:

客户端查询服务器端共享资源的命令:showmount

showmount 

-d:显示当前主机所共享的NFS文件系统中,有哪些已经被客户端挂载。

-e ipaddr:显示指定ip可以挂载 的nfs文件系统。

-a:显示当前系统主机的nfs文件系统中,每个挂载链接。(服务器端)

客户端显示的文件权限均为nobody。

服务器端nfs文件系统维护命令:exportfs

exportfs:避免重新启动nfs服务。

-r:重新挂载exports里面的共享目录

-a:挂载所有共享目录

-u:卸载共享目录

日志文件:/var/lib/nfs/*tab

etab:主要记录NFS共享文件系统的权限设置值。

xtab:记录曾经链接到此服务器的客户端信息。

理解NFS文件系统权限问题:

1、服务端的nfs文件共享出来权限是收到两部分影响的,配置文件/etc/exports的选项权限,第二就是nfs共享文件本身的权限。

2、客户端访问使用的用户账户在nfs端是不被验证的,实际验证的是用户的id号码,也就是说,客户端用户的id如果是501,那么在服务端对应的501账户就应该有文件访问权限(这个账户可能和客户端账户不同,不必考虑),所有要求设置服务端对应的ID号具有文件相应的读写权限。

client gongbing id:501------>>server zhang id:501----->>setfacl -m zhang:rwx /data。

AUTOFS

自动挂载远程共享文件夹,并在空闲时卸载远程文件夹。

安装程序:autofs

主配置文件:/etc/auto.master

配置文件规则:

FTP服务

ftp协议:文件传输和管理

主要功能:

1、三种不同用户身份,系统实体用户、guest、anonymous

2、命令记录和日志记录/var/log/

3、限制用户登录的目录,chroot(显示的根目录就是用户的家目录),就是说用户只能登录自己的家目录,不能随意进入linux系统目录。

命令链接:21/tcp(控制端口) 20/tcp(数据端口)

C6DA07434FFA4509BD6DCFE3181E0F61

数据连接:

        主动模式:

                        1、 客户端使用随机端口连接服务器21端口,通过三次握手后建立通讯控制通道

                        2、当用户要传输数据时,通过自己的另一个随机端口申请。

                        3、服务器会使用20端口主动创建数据传输通道。

                            缺点:客户端如果是在NAT或者防火墙后面,由于是服务器发动主动请求,客户端端口是随机的,往往造成建立数据通道失败。

                            解决办法:1、通过iptables的FTP检测模块:ip_conntrack_ftp、ip_nat_ftp,需要加载在中间的防火墙或NAT上面。

                                              2、通过被动模式

        被动模式:1、客户端发起ftp请求,通过21端口建立连接

                         2、客户端想要建立数据通道,通过pasv提出申请

                         3、服务器创建一个随机端口,告知客户端,等待连接

                         4、客户端随机使用一个端口连接服务器给得端口。

服务器端

ftp软件:vsftpd proftpd filezilla

windows版本:serv-u,IIS。

客户端:ftp,lftp

转义响应码:

1**:服务器信息。

2**:正确响应信息。

3**:正常响应,但操作过程不完成,需要进一步补充。

4**:客户端错误

5**:服务器错误

vsftp的用户类型:

匿名用户:实际上是映射的一个系统用户。根目录为/var/ftp

本地用户:服务器端存在的用户,建议禁用本地用户,因为是明文传输。

如果可以登录建议设置为chroot模式。

访客用户:服务器端自动映射的一个系统用户。

                多个虚拟用户可以同时被映射为一个系统用户,但不同的虚拟用户可以有不同的权限。

配置虚拟用户的配置文件:/etc/pam.d/vsftpd

vsftpd:

服务脚本:/etc/rc.d/init.d/vsftpd

主配置文件:/etc/vsftpd/vsftpd.conf

                     /etc/pam.d/vsftpd        //用户身份验证

用户身份限制:

方法一、通过/etc/pam.d/vsftpd里面的file=/etc/vsftpd/ftpusers

来禁止file文件指定的用户登录FTP服务。

方法二、修改/etc/vsftpd/user_list文件

这个文件的生效需要在vsftpd.conf里面添加两个参数:

userlist_enable=yes   是否开启user_list文件功能

userlist_deny=yes|no   如果是yes表示user_list里面的账户都拒绝,其他允许,如果为no表示里面的都允许,其他为拒绝。

设置白名单(只有里面的用户可以登录,其他用户不可以登录)

1、在user_list里面创建用户

2、在vsftp.conf里面添加userlist_deny=NO即可。

设置黑名单(只有里面的用户不可登录,其他用户可以登录)

1、在user_list里面创建用户

2、在vsftp.conf里面添加userlist_deny=YES即可。


限制用户目录:/etc/vsftpd/chroot_list,需要创建

此文件需要vsftpd.conf里面的两个参数:

chroot_list_enable

chroot_list_file

方法:

chroot:禁锢用户于其自己的家目录。

1、禁锢所有用户

chroot_local_user=yes   //所有本地用户都锁定在家目录。

2、禁锢指定用户 (黑名单)

chroot_list_enable=yes

chroot_list_file=/etc/vsftpd/chroot_list   //禁锢指定文件内的用户,这个chroot_list需要创建,并且里面设置用户名,一个用户名一行。

3、如果三个选项都启用,那么chroot_list里面的用户就是没有被禁锢的。

vsftpd.conf常见设置值:

与服务器相关

1、connect_from_port_20=YES|NO 

设置主动连接工作时监听的端口号。

2、dirmessage_enable=YES|NO

设置用户进入某个目录时的显示信息, message_file=.message,在目录中创建。

3、pasv_enable=YES|NO

设置是否启动被动工作模式。

4、write_enable=YES|NO

是否允许用户上传

5、accept_timeout=60

     data_connection_timeout=300

     idle_session_timeout=300

6、max_clients=0

最大客户端连接数

7、max_per_ip=0

同一个ip最大连接数

8、pasv_min_port=1024 pasv_max_prot=1122

设置被动连接时服务器开启的pasv端口号范围

9、use_localtime=YES

设置登陆后使用本地时间显示

与系统用户相关:

1、guest_enable=YES|NO

设置访问模式是否开启,如果开启任何系统账号登陆都会变成guest账号。

2、guest_username=ftp

设置系统账号转换成的guest名称。3

3、local_enable=YES|NO

设置使用系统账号登陆,

4、local_max_rate=0

设置用户传输数率

5、chroot_local_user=YES

设置是否现在用户的chroot。

6、chroot_list_enable=YES

是否启用chroot写入列表功能

7、chroot_list_file=/etc/vsftpd/chroot_list

5/6/7配合使用,chroot_list里面的用户可以进入其他目录,不在chroot_list里的用户执行chroot限制。

与匿名用户相关:

1、anonymous_enabl=YES

所有匿名配置都依赖于他是否为YES。

与安全有关:

1、one_process_model=YES|NO

YES表示每个连接都拥有一个process来负责,缺点是消耗系统资源,建议NO。

2、tcp_wrappers=YES

3、xferlog_enable=YES   xferlog_std_format=/var/log/xferlog

设置用户行为日志记录开启功能及存储位置。

 


Linux下登陆FTP服务器报错“不能改变目录” 具体语句如下:500 OOPS:cannot change directory:/home/xxx

是由于设置了selinux,可以通过getsebool -a |grep ftp来查找,并修改过ftpd_disable_trans和ftp_home_dir为on即1,setsebool ftpd_disable_trans 1

设置ftps加密传输的方法,首先需要创建证书。然后在vsftpd.conf中添加一下内容。

CF12441353114064BA998CCAD9021E1F

ftp目录的权限设置

  默认情况下,ftp的根目录为/var/ftp,为了安全,这个目录默认不允许设置为777权限,否则ftp将无法访问。但是我们要匿名上传文件,需要“other”用户的写权限,正确的做法:

  在/var/ftp中建立一个upload(名子自己起吧)文件夹,将个文件夹权限设置为777(视具体需要自己设),在upload这个文件夹中,匿名用户可以上传文件、创建文件夹、删除文件等。

  一般至此,便实现vsftpd匿名用户的上传下载了。如果还不行,就是下面的问题。

  3、selinux的配置

  SELinux(Security-Enhanced Linux) 是美国国家安全局(NAS)对于强制访问控制的实现,是 Linux上最杰出的新安全子系统。NSA是在Linux社区的帮助下开发了一种访问控制体系,在这种访问控制体系的限制下,进程只能访问那些在他的任务中所需要文件。SELinux 默认安装在 Fedora  Red Hat Enterprise Linux 上,也可以作为其他发行版上容易安装的包得到。

  最简单的办法,关闭selinux

  方法1:修改/etc/selinux/config文件中的SELINUX="" 为 disabled ,然后重启。

  方法2:用命令setenforce 0,无需重启。(setenforce的格式:setenforce [ Enforcing | Permissive | 1 | 0 ])

  方法3:在lilo或者grub的启动参数中增加:selinux=0,也可以关闭selinux。

  使用getenforce查看当前selinux是否正在运行。

  不关闭selinux,就要设置selinux的ftp权限。

  1、使用getsebool -a | grep ftp查看ftp相关设置状态,我们要将allow_ftpd_anon_write设为on。

  2、使用setsebool -P 进行设置。例:setsebool -P allow_ftpd_anon_write=on。

   或使用togglesebool进行bool值取反,例如togglesebool allow_ftpd_anon_write。




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

相关文章
企业级NFS网络文件共享服务
企业级NFS网络文件共享服务
127 0
|
存储 容灾 Linux
UOS统一操作系统,让我们拥抱中文操作系统,打造属于自己的私人企业级网盘
UOS统一操作系统,让我们拥抱中文操作系统,打造属于自己的私人企业级网盘
561 0
UOS统一操作系统,让我们拥抱中文操作系统,打造属于自己的私人企业级网盘
|
存储 SQL 分布式计算
云端共享文件系统 JuiceFS 在 2021 年选择开源
云端共享文件系统 JuiceFS 在 2021 年选择开源
133 0
|
弹性计算 安全 网络安全
AD管控下的弹性云桌面和文件共享最佳实践
本最佳实践适用于员工通过弹性云桌面客户端连接到弹性云桌面进行日常操作。企业用户账户、共享文件服务、及IDC资源,通过微软ActiveDirectory(以下简称AD)集中管控。云桌面的创建和分配通过云桌面管理控制台完成。主要解决企业基础办公环境在弹性云桌面上的部署问题。
AD管控下的弹性云桌面和文件共享最佳实践
|
存储 缓存 安全
利用云存储网关搭建Windows文件共享服务器
如果你希望你的数据最终能够存储于阿里云对象存储之上,同时你又希望能够提供传统的文件共享的接口,主要就是SMB/NFS的文件访问协议接口,那么云存储网关绝对是你的不二选择。本文将主要介绍如何基于云存储网关搭建Windows文件共享服务器。
3219 0
利用云存储网关搭建Windows文件共享服务器
|
存储 网络安全 虚拟化
混合云存储构建VMware虚拟化平台
本文以混合云存储阵列SA2600系统为例,介绍如何在混合云存储环境下部署VMware虚拟化平台,以及混合云环境下虚拟机的部署、扩容、云备份等功能演示
675 0
混合云存储构建VMware虚拟化平台
|
存储 安全 文件存储
桌面云+企业云盘,超完美的桌面数据存储管理解决方案
怎样提高桌面云“存储力”,并实现企业的数据权限管理?桌面云与企业云盘的结合,让企业在减轻IT运维管理压力的同时,提升数据的安全管理能力。
4912 0
|
网络协议 关系型数据库 MySQL