Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。
1.安装
服务端设置:

[root@servershare ~]# yum install samba samba-common samba-client -y

samba #服务器应用程序
samba-common #Samba的支持文件
samba-client #客户端应用程序

[root@servershare ~]# systemctl start smb		#打开smb
[root@servershare ~]# systemctl enable smb		#开机启动
[root@servershare ~]# systemctl stop firewalld.service 	#关闭火墙
[root@servershare ~]# systemctl disable firewalld.service #设置开机不启动火墙
[root@servershare ~]# setenforce 0  #设置selinux为Premissing,如果selinux处于关闭状态,可以不设置
[root@servershare ~]# smbpasswd -a westos	#将westos添加为samb用户
[root@servershare ~]# smbpasswd -a student #将student用户添加为samb用户
[root@servershare ~]# pdbedit -L	#查看samba用户
[root@servershare ~]# pdbedit -x student	#删除samba用户

liunx停止samba服务的命令是 linux如何关闭samba服务_共享目录


客户端设置

[root@client mnt]# yum install samba-client	#安装客户端软件
[root@client mnt]# smbclient -L //172.25.254.180	#匿名查172.25.254.180主机的共享

liunx停止samba服务的命令是 linux如何关闭samba服务_共享目录_02

[root@client mnt]# smbclient -L //172.25.254.180 -U westos #用服务端samba用户查看172.25.254.180主机的共享

liunx停止samba服务的命令是 linux如何关闭samba服务_配置文件_03


 由上图可知使用samba用户westos登陆时可以共享/home/westos目录,即westos的家目录。

登陆

[root@client mnt]# smbclient //172.25.254.180/westos -U westos	#samba用户westos登陆
[root@client mnt]# smbclient //172.25.254.180/westos #匿名用户登陆

liunx停止samba服务的命令是 linux如何关闭samba服务_liunx停止samba服务的命令是_04


 由上图可知,匿名用户是不能登陆的。除此之外,还可以使用挂载的方式登陆,以挂载形式,可以使用shell中的命令管理。

[root@client mnt]# mount -o username=westos,password=westos //172.25.254.180/westos /mnt/

liunx停止samba服务的命令是 linux如何关闭samba服务_共享目录_05


 当服务端selinux处于Enforcing状态时,是不允许客户端链接的。

liunx停止samba服务的命令是 linux如何关闭samba服务_liunx停止samba服务的命令是_06


 所以需要打开samba的安全开关才可以登陆:

liunx停止samba服务的命令是 linux如何关闭samba服务_liunx停止samba服务的命令是_07

2.域名修改

 在默认情况下查看共享目录时,所显示的Domain为MYGROUP:

liunx停止samba服务的命令是 linux如何关闭samba服务_共享目录_08


 修改其配置文件/etc/samba/smb.conf:

[root@servershare ~]# vim /etc/samba/smb.conf

liunx停止samba服务的命令是 linux如何关闭samba服务_配置文件_09


 再次查看时Domain=WESTOS:

liunx停止samba服务的命令是 linux如何关闭samba服务_linux_10


注意:

Domain无论是大写还是小写,所显示的都为大写;
配置文件/etc/samba/smb.conf即改即生效,不需要重启服务。

3.黑白名单

 在配置文件/etc/samba/smb.conf中添加下图内容:

liunx停止samba服务的命令是 linux如何关闭samba服务_linux_11


 表示只允许172.25.254.181主机共享。

 测试如下,servershare主机IP=172.25.254.180所以无法登陆:

liunx停止samba服务的命令是 linux如何关闭samba服务_共享目录_12


 如果在配置文件中添加如下内容:

liunx停止samba服务的命令是 linux如何关闭samba服务_共享目录_13

 表示拒绝172.25.254.190主机登陆,client主机IP=172.25.254.190,所以不能登陆:

liunx停止samba服务的命令是 linux如何关闭samba服务_共享目录_14


4.创建共享目录

[root@servershare ~]# vim /etc/samba/smb.conf

liunx停止samba服务的命令是 linux如何关闭samba服务_配置文件_15

comment #描述
path=/westos #共享的目录为/westos目录

[root@servershare ~]# mkdir /westos 
[root@servershare ~]# touch /westos/test{0..5} #创建测试文件
[root@servershare ~]# semanage fcontext -a -t samba_share_t '/westos(/.*)?' #修改安全上下文
[root@servershare ~]# restorecon -RvvF /westos/ #刷新

liunx停止samba服务的命令是 linux如何关闭samba服务_共享目录_16


测试:

liunx停止samba服务的命令是 linux如何关闭samba服务_liunx停止samba服务的命令是_17


5.将系统目录/mnt/设置为共享目录

liunx停止samba服务的命令是 linux如何关闭samba服务_共享目录_18

[root@servershare ~]# setsebool -P samba_export_all_ro on #打开安全开关
[root@servershare ~]# setsebool -P samba_export_all_rw on
[root@servershare ~]# chmod 777 /westos #添加文件系统权限

登陆测试:

liunx停止samba服务的命令是 linux如何关闭samba服务_配置文件_19


6.权限设置

1)允许对共享目录可写

 默认情况下,westos用户对于新创建的linux共享设备是不可写的,要使其可写,在配置文件/etc/samba/smb.conf中添加如下内容:

liunx停止samba服务的命令是 linux如何关闭samba服务_配置文件_20


 表示linux共享目录可写。

 测试如下:

liunx停止samba服务的命令是 linux如何关闭samba服务_共享目录_21


2)只允许某个用户或某个组可写

 修改配置文件/etc/samba/smb.conf如下:

liunx停止samba服务的命令是 linux如何关闭samba服务_共享目录_22


表示只有westos用户可写。

测试如下,student用户登陆不能删除,westos用户登陆删除成功:

liunx停止samba服务的命令是 linux如何关闭samba服务_linux_23


 如果是@westos表示只对westos组下的用户可写,配置文件如下:

liunx停止samba服务的命令是 linux如何关闭samba服务_配置文件_24


 表示只对westos组下的用户可写。要使student用户可写,可以将student添加到westos组中,如下:

liunx停止samba服务的命令是 linux如何关闭samba服务_配置文件_25

 测试如下:

liunx停止samba服务的命令是 linux如何关闭samba服务_共享目录_26


3)只允许某个用户或者某个组登陆

 配置文件如下修改表示只允许student用户登陆:

liunx停止samba服务的命令是 linux如何关闭samba服务_liunx停止samba服务的命令是_27


测试如下:

liunx停止samba服务的命令是 linux如何关闭samba服务_liunx停止samba服务的命令是_28


 将配置文件如下修改,表示只允许student组下成员登陆:

liunx停止samba服务的命令是 linux如何关闭samba服务_配置文件_29


注意:@student和+student都表示student组
将westos加入到student组后就可以登陆:

liunx停止samba服务的命令是 linux如何关闭samba服务_共享目录_30


 测试如下:

liunx停止samba服务的命令是 linux如何关闭samba服务_linux_31


4)隐藏共享目录

 默认情况下,westos查看共享目录时会显示linux共享目录:

liunx停止samba服务的命令是 linux如何关闭samba服务_配置文件_32


 配置文件如下修改:

liunx停止samba服务的命令是 linux如何关闭samba服务_liunx停止samba服务的命令是_33


 再次查看时就会将linux共享目录隐藏起来,但是不影响其它功能:

liunx停止samba服务的命令是 linux如何关闭samba服务_共享目录_34


5)让某个用户登陆时继承root身份

 配置文件如下修改,表示客户端如果使用samba用户student登陆时,如果客户端是root用户,则继承root用户的身份:

liunx停止samba服务的命令是 linux如何关闭samba服务_liunx停止samba服务的命令是_35


 分别用westos和student帐号登陆,长传文件:

liunx停止samba服务的命令是 linux如何关闭samba服务_linux_36


 则westos帐号登陆上传的文件所有人为westos,以student帐号登陆上传的文件所有人为root:

liunx停止samba服务的命令是 linux如何关闭samba服务_linux_37


6)允许匿名用户登陆

 默认情况下匿名用户不能登陆,要使匿名用户可以登陆,配置文件如下修改:

liunx停止samba服务的命令是 linux如何关闭samba服务_liunx停止samba服务的命令是_38


liunx停止samba服务的命令是 linux如何关闭samba服务_linux_39


 测试如下:

liunx停止samba服务的命令是 linux如何关闭samba服务_共享目录_40


7.多用户挂载

 当客户端为root用户时通过westos帐号登陆之后,其它用户也可以查看共享的内容,如下:

liunx停止samba服务的命令是 linux如何关闭samba服务_配置文件_41


 这种方式不是特别安全。客户端安装以下软件:

[root@client ~]# yum install cifs-utils.x86_64 -y

 如下编辑文件:

[root@client ~]# vim /root/smbpass
username=westos #用户
password=westos #密码
[root@client ~]# chmod 600 /root/smbpass

 挂载:

[root@client ~]# mount -o credentials=/root/smbpass,sec=ntlmssp,multiuser //172.25.254.180/linux /mnt/

 当以此种方式挂载时表示:当前用户挂载时是通过/root/smbpass文件通过认证,sec=ntlmssp(其它用户挂载时的认证方式),multiuser(允许多用户挂载)。

 此时除了root用户其它用户查看共享内容时必须通过认证:

liunx停止samba服务的命令是 linux如何关闭samba服务_linux_42


 如果student用户要使用共享的内容,必须通过认证,如下:

liunx停止samba服务的命令是 linux如何关闭samba服务_liunx停止samba服务的命令是_43


 表示student通过suu帐号进行认证。

8.永久挂载

编辑/etc/fstab文件,如下:

liunx停止samba服务的命令是 linux如何关闭samba服务_liunx停止samba服务的命令是_44


当系统重启时,就会挂载。