SMB-server (Samba)node
Samba是个桑巴舞,是舞蹈的名字。linux
Linux系统和Windows系统共享。数据库
下面咱们开始作实验vim
先安装samba软件包yum -y install samba安全
而后咱们配置程序的主配置文件。服务器
配置文件后缀通常都是conf.网络
300多条。那么我急继续老办法。dom
这里分号开抬头的也是注释,而后-v是反选。而后写入到sam.conf,由于咱们开头给他原来的更名了,而后咱们会发现还有好多空行也很烦人,那么咱们也能够这么作。async
再加一个grep -v "^$"这表明就是一个空行。测试
咱们就会看到都过滤出来了。
而后咱们来编辑这个配置文件
能够看出来咱们原来320行的内容,如今只剩下了20行,是否是就很爽了。
Samba服务程序中的参数以及做用
[global] | #全局参数。 | |
workgroup = MYGROUP | #工做组名称 | |
server string = Samba Server Version %v | #服务器介绍信息,参数%v为显示SMB版本号 | |
log file = /var/log/samba/log.%m | #定义日志文件的存放位置与名称,参数%m为来访的主机名 | |
max log size = 50 | #定义日志文件的最大容量为50KB | |
security = user | #安全验证的方式,总共有4种 | |
#share:来访主机无需验证口令;比较方便,但安全性不好 | ||
#user:需验证来访主机提供的口令后才能够访问;提高了安全性 | ||
#server:使用独立的远程主机验证来访主机提供的口令(集中管理帐户) | ||
#domain:使用域控制器进行身份验证 | ||
passdb backend = tdbsam | #定义用户后台的类型,共有3种 | |
#smbpasswd:使用smbpasswd命令为系统用户设置Samba服务程序的密码 | ||
#tdbsam:建立数据库文件并使用pdbedit命令创建Samba服务程序的用户 | ||
#ldapsam:基于LDAP服务进行帐户验证 | ||
load printers = yes | #设置在Samba服务启动时是否共享打印机设备 | |
cups options = raw | #打印机的选项 | |
[homes] | #共享参数 | |
comment = Home Directories | #描述信息 | |
browseable = no | #指定共享信息是否在“网上邻居”中可见 | |
writable = yes | #定义是否能够执行写入操做,与“read only”相反 | |
[printers] | #打印机共享参数 | |
comment = All Printers | ||
path = /var/spool/samba | #共享文件的实际路径(重要)。 | |
browseable = no | ||
guest ok = no | #是否全部人可见,等同于"public"参数。 | |
writable = no | ||
printable = yes |
最后一列printers是共享打印机参数,咱们这里没有,给他删掉。
而后咱们看一下homes是共享出去每一个用户家目录,不太安全,删掉
而后咱们看到有用得信息就这么9行
而后咱们说一下这些参数做用。
1.[global] 共享的名称
2.workgroup = MYGROUP 共享的用户组
3.server string = Samba Server Version %v 共享出去的信息,%v是让别人知道咱们服务器的版本
4.log file = /var/log/samba/log.%m 定义日志文件的存放位置与名称,参数%m为来访的主机名
5.max log size = 50 定义日志文件的最大容量为50KB,就是说50K保存一个
6.security = user 安全验证的方式,总共有4种
7.passdb backend = tdbsam 定义用户后台的类型,共有3种
而后配置共享资源
用于设置Samba服务程序的参数以及做用
参数 | 做用 |
[database] | 共享名称为database |
comment = Do not arbitrarily modify the database file | 警告用户不要随意修改数据库 |
path = /home/database | 共享目录为/home/database |
public = no | 关闭“全部人可见” |
writable = yes | 容许写入操做 |
第1步:建立用于访问共享资源的帐户信息。在RHEL 7系统中,Samba服务程序默认使用的是用户口令认证模式(user)。这种认证模式能够确保仅让有密码且受信任的用户访问共享资源,并且验证过程也十分简单。不过,只有创建帐户信息数据库以后,才能使用用户口令认证模式。另外,Samba服务程序的数据库要求帐户必须在当前系统中已经存在,不然往后建立文件时将致使文件的权限属性混乱不堪,由此引起错误。
pdbedit命令用于管理SMB服务程序的帐户信息数据库,格式为“pdbedit [选项] 帐户”。在第一次把帐户信息写入到数据库时须要使用-a参数,之后在执行修改密码、删除帐户等操做时就再也不须要该参数了。pdbedit命令中使用的参数以及做用如表
用于pdbedit命令的参数以及做用
参数 | 做用 |
-a 用户名 | 创建Samba用户 |
-x 用户名 | 删除Samba用户 |
-L | 列出用户列表 |
-Lv | 列出用户详细信息的列表 |
如今在咱们本地有这么一个用户linuxprobe ,必须是要存在的一个用户。而后咱们将这个用户给他加入到这个samba的数据库里面,作一个验证,-a表明咱们第一次加就能够了,把这个用户加入到数据库里面,也就是创建samba用户。-u表明用户的名称。而后咱们设置一下专门给他验证samba服务的这么一个密码。
而后咱们给他建立一个共享目录database,而后再给他777权限,让其余用户也能够进行操做。
若是你感受不够安全的话就给他设置一下全部组和全部者。
接下来别忘了SELinux会限制咱们的行为,因此咱们要给他把域设为容许。
而后咱们过滤出来以后用setsebool 命令给他修改成on,-P是永久生效。其中samba_enable_home_dirs是表明开启咱们用户的访问权限。
而后如今咱们建立出来本身的共享信息了,那么接下来咱们再回到配置文件。
说一下这些新加的注释的做用:
[database] 挂载的名称,你们注意,这个名称不是没有用,咱们待会挂载设备的时候就是用的这个名称,若是你写了其余的,那么一会要注意也挂载设备名称也是你写的那个。
comment = 你能够对这个共享用一段话来描述。
path = 定义咱们的目录,就是咱们刚才建立的共享目录,那里写的什么这里就写什么。
public = no 是不是公开模式,咱们选择no,由于咱们这里但愿是一个帐号密码的验证,不想公开
writable = yes 是否能进行写入,咱们选择能够。
而后咱们保存退出重启smb服务而且加入开机启动项。
这样就完了么,并无,咱们看一下虚拟机和我的电脑通不通。
是通的,那么好。咱们准备第二台虚拟机。
咱们接下来测试用Windows访问Linux Linux访问Linux的测试,进行跨平台的实验。
咱们发现报错了。
那么咱们找一下错误,先试试防火墙吧,咱们执行一下咱们的iptables -F
而后咱们再试一下,果真能够了,而后输入帐户密码,由于咱们设置的事须要帐号密码验证的,linuxpro 密码是本身设置的。登录以后就如上图。
让咱们点击这个文件的时候他会提醒咱们权限不足,那么这是什么缘由呢,咱们权限都设置为777了,你们会不会第一时间就想到SELinux.咱们试一下。
咱们先setenforce 0临时关闭一下SELinux。
果真,进来了。
而后咱们不能给他一直关闭,这不是个好办法,由于不安全,因此咱们给他再开启了,单独容许samba的域进行容许,先过滤。
而后咱们看一下,咱们此次开启一下samba_export_all_rw 这个应该是samba共享的读写权限,咱们再试一下。
确实能够。说明咱们刚才开错了,应该开这一条才对,尴尬。
而后咱们在里面进行添加修改删除操做,发现能够,咱们回linux看一下里面有没有我在本机上建立的这两个文件。
发现有了。可是咱们还没试一试Linux了呢
老样子,先ping一下。
而后咱们想用Linux共享的话必须安装一个软件cifs-utils
而后咱们建立一个认证文件,名称无所谓
在Linux客户端,按照Samba服务的用户名、密码、共享域的顺序将相关信息写入到一个认证文件中。为了保证不被其余人随意看到,最后把这个认证文件的权限修改成仅root管理员才可以读写:
而后咱们写上参数,先写上用户名称username=linuxprobe就是待会咱们用谁来验证的,而后写上验证密码。domaim= 是工做组,这个不要瞎写,不知道的话这样查。在服务器上查cat /etc/samba/smb.conf
配置好认证文件后咱们给他一个600权限,不让其余人查看到这个文件信息。
在Linux客户端上建立一个用于挂载Samba服务共享资源的目录,并把挂载信息写入到/etc/fstab文件中,以确保共享挂载信息在服务器重启后依然生效:
而后咱们编辑一下/etc/fstab配置挂载
格式就是先来两个//而后写上共享服务器的IP而后是/database,就是咱们配置samba的时候[]里面的名称,千万别瞎写。而后挂在到本地/database. 格式叫作cifs ,而后认证文件,咱们是经过调取文件的方式进行认证的,而不是把咱们帐户和密码写入到文件的。
而后咱们就能够挂载咱们文件中定义好的设备了mount -a
而后咱们查看df -h
而后咱们能够看到,里面有文件,就是咱们开始和Windows测试建立的,如今咱们进行一下修改等操做。咱们发现能够编辑,在外面查看也发现没问题。
--------------------------------------------------------------------------------------------------------------------
若是你们以为Samba服务程序的配置太麻烦,并且恰巧须要共享文件的主机都是Linux系统,那么咱们推荐NFS,NFS(网络文件系统)服务能够将远程Linux系统上的文件共享资源挂载到本地主机的目录上,从而使得本地主机(Linux客户端)基于TCP/IP协议,像使用本地主机上的资源那样读写远程Linux系统上的共享文件。这通常是对于Linux和Linux之间的共享。
作实验前先准备两台Linux,而且还原一下,避免和上一个实验冲突。
在这以前咱们还要准备一下给别人共享的文件夹。
先在服务端(192.168.10.10)建立一个共享的目录,而后进入这个目录在里面放一个文件而且随便写一些内容,而后给这个目录一个777的权限来让别人也可以进行读写的权限。
而后咱们编辑一下咱们NFS的配置文件,和其余的可能不同,这个须要特殊记一下。
用于配置NFS服务程序配置文件的参数
参数 | 做用 |
ro | 只读 |
rw | 读写 |
root_squash | 当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户 |
no_root_squash | 当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员 |
all_squash | 不管NFS客户端使用什么帐户访问,均映射为NFS服务器的匿名用户 |
sync | 同时将数据写入到内存与硬盘中,保证不丢失数据 |
async | 优先将数据保存到内存,而后再写入硬盘;这样效率更高,但可能会丢失数据 |
打开后咱们发现是空的,那就对了。他就是空的咱们本身写东西。
第一列就是咱们共享设备的名称也就是咱们刚才建立的共享目录/gongxiang。
第二列写的是共享给谁也就是咱们的*,表明共享给全部人,咱们也能够写成192.168.0.0/24 共享给这个网段,或者192.168.10.20共享给某个主机。
注意小括号和*之间不能有空格,连着写的。
第三个写的是()里面写的参数,rw是给他们读写的权限,若是只读就是ro,sync表明数据进行一个同步,当咱们客户端死机或者网络中断的状况下,他能够将咱们数据实时同步到咱们的硬盘,让咱们数据尽可能不要丢失。root_squash是说咱们将对方来访的超级用户root给他映射成咱们本地的一个虚拟(匿名)用户.
其余参数设置到看上面参数列表。
而后咱们执行一个命令export -a,这是让咱们配置文件可以去生效。
而后咱们重启一下nfs服务而且添加到开机启动里面。
而后别忘了清空一下咱们的iptables -F,而且咱们把iptables状态进行一个保存
而后咱们就能够进去到咱们的客户端里面了。
别忘了ping一下看通不通,小问题每每最容易被忽视浪费时间。
NFS客户端的配置步骤也十分简单。先使用showmount命令(以及必要的参数,见表)查询NFS服务器的远程共享信息,其输出格式为“共享的目录名称 容许使用客户端地址”。
showmount命令中可用的参数以及做用
参数 | 做用 |
-e | 显示NFS服务器的共享列表 |
-a | 显示本机挂载的文件资源的状况NFS资源的状况 |
-v | 显示版本号 |
而后咱们配置一下vim /etc/fstab
咱们最前面写上服务端的地址192.168.10.10. 对方服务器共享目录/gongxiang ,而后是本地路径/gongxiang,咱们方便记忆都起同样,这里别忘了一会出去建立这个目录。咱们都没建立呢在客户端。而后文件格式是nfs,权限是defaults 而后是不备份,没有校验。
而后咱们建立出来咱们的本地共享目录,而后挂载,而后df -h看挂载上了没有,有时候会出现mount -a执行完了报错,这时候不急,你直接df -h看一下,是否是已经挂载上了。
而后咱们立刻到共享目录看一下,发现有了,而后再进行里面内容修改增长等操做,彻底没问题。
咱们在客户端进行修改操做,而后去服务端去查看,果真发生了变化,没问题。
----------------------------------------------------------------------------------------------------------------------------------
不管是Samba服务仍是NFS服务,都要把挂载信息写入到/etc/fstab中,这样远程共享资源就会自动随服务器开机而进行挂载。虽然这很方便,可是若是挂载的远程资源太多,则会给网络带宽和服务器的硬件资源带来很大负载。若是在资源挂载后长期不使用,也会形成服务器硬件资源的浪费。可能会有读者说,“能够在每次使用以前执行mount命令进行手动挂载”。这是一个不错的选择,可是每次都须要先挂载再使用,您不以为麻烦吗?
autofs自动挂载服务能够帮咱们解决这一问题。与mount命令不一样,autofs服务程序是一种Linux系统守护进程,当检测到用户试图访问一个还没有挂载的文件系统时,将自动挂载该文件系统。换句话说,咱们将挂载信息填入/etc/fstab文件后,系统在每次开机时都自动将其挂载,而autofs服务程序则是在用户须要使用该文件系统时才去动态挂载,从而节约了网络资源和服务器的硬件资源。
第一步咱们先安装autofs软件
而后咱们卸载掉咱们一直部署的yum文件系统,把挂载卸载掉。
而后咱们编辑一下autofs的主配置文件。
处于生产环境中的Linux服务器,通常会同时管理许多设备的挂载操做。若是把这些设备挂载信息都写入到autofs服务的主配置文件中,无疑会让主配置文件臃肿不堪,不利于服务执行效率,也不利于往后修改里面的配置内容,所以在autofs服务程序的主配置文件中须要按照“挂载目录 子配置文件”的格式进行填写。挂载目录是设备挂载位置的上一级目录。例如,光盘设备通常挂载到/media/cdrom目录中,那么挂载目录写成/media便可。对应的子配置文件则是对这个挂载目录内的挂载设备信息做进一步的说明。子配置文件须要用户自行定义,文件名字没有严格要求,但后缀建议以.misc结束。
在子配置文件中,应按照“挂载目录 挂载文件类型及权限 :设备名称”的格式进行填写。例如,要把光盘设备挂载到/media/iso目录中,可将挂载目录写为iso,而-fstype为文件系统格式参数,iso9660为光盘设备格式,ro、nosuid及nodev为光盘设备具体的权限参数,/dev/cdrom则是定义要挂载的设备名称。配置完成后再顺手将autofs服务程序启动并加入到系统启动项中:
这里是咱们本身建立的子配置文件,不是系统原有的,你们注意一下。
其中咱们是要将光盘设备挂载到/media/iso中,那么咱们直接写iso 就行了,而-fstype为文件系统格式参数,iso9660为光盘设备格式,ro是只读,nosuid和nodev是当咱们光盘里面出现了suid和dev的这个设备文件的话,那么咱们当作通常文件来进行处理,防止一些黑客篡改咱们的文件,这个参数能够写能够不写。最后要写上咱们挂在的设备的名称/dev/cdrom。
而后咱们给他重启服务而且添加到开机启动项。
咱们看一下咱们的光盘如今确实是没有被挂载上的。
咱们再进入media目录看一下,没有任何文件。
而后咱们看一下cd到里面的iso,这时候里面没有目录应该报错才对,可是,没有报错,好进去了,而且里面有文件,那么这时候咱们立刻df -h查看一下挂载信息,发现莫名挂在上了。这就是咱们的自动挂载autofs.