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用户
客户端设置
[root@client mnt]# yum install samba-client #安装客户端软件
[root@client mnt]# smbclient -L //172.25.254.180 #匿名查172.25.254.180主机的共享
[root@client mnt]# smbclient -L //172.25.254.180 -U westos #用服务端samba用户查看172.25.254.180主机的共享
由上图可知使用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 #匿名用户登陆
由上图可知,匿名用户是不能登陆的。除此之外,还可以使用挂载的方式登陆,以挂载形式,可以使用shell中的命令管理。
[root@client mnt]# mount -o username=westos,password=westos //172.25.254.180/westos /mnt/
当服务端selinux处于Enforcing状态时,是不允许客户端链接的。
所以需要打开samba的安全开关才可以登陆:
2.域名修改
在默认情况下查看共享目录时,所显示的Domain为MYGROUP:
修改其配置文件/etc/samba/smb.conf:
[root@servershare ~]# vim /etc/samba/smb.conf
再次查看时Domain=WESTOS:
注意:
Domain无论是大写还是小写,所显示的都为大写;
配置文件/etc/samba/smb.conf即改即生效,不需要重启服务。
3.黑白名单
在配置文件/etc/samba/smb.conf中添加下图内容:
表示只允许172.25.254.181主机共享。
测试如下,servershare主机IP=172.25.254.180所以无法登陆:
如果在配置文件中添加如下内容:
表示拒绝172.25.254.190主机登陆,client主机IP=172.25.254.190,所以不能登陆:
4.创建共享目录
[root@servershare ~]# vim /etc/samba/smb.conf
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/ #刷新
测试:
5.将系统目录/mnt/设置为共享目录
[root@servershare ~]# setsebool -P samba_export_all_ro on #打开安全开关
[root@servershare ~]# setsebool -P samba_export_all_rw on
[root@servershare ~]# chmod 777 /westos #添加文件系统权限
登陆测试:
6.权限设置
1)允许对共享目录可写
默认情况下,westos用户对于新创建的linux共享设备是不可写的,要使其可写,在配置文件/etc/samba/smb.conf中添加如下内容:
表示linux共享目录可写。
测试如下:
2)只允许某个用户或某个组可写
修改配置文件/etc/samba/smb.conf如下:
表示只有westos用户可写。
测试如下,student用户登陆不能删除,westos用户登陆删除成功:
如果是@westos表示只对westos组下的用户可写,配置文件如下:
表示只对westos组下的用户可写。要使student用户可写,可以将student添加到westos组中,如下:
测试如下:
3)只允许某个用户或者某个组登陆
配置文件如下修改表示只允许student用户登陆:
测试如下:
将配置文件如下修改,表示只允许student组下成员登陆:
注意:@student和+student都表示student组
将westos加入到student组后就可以登陆:
测试如下:
4)隐藏共享目录
默认情况下,westos查看共享目录时会显示linux共享目录:
配置文件如下修改:
再次查看时就会将linux共享目录隐藏起来,但是不影响其它功能:
5)让某个用户登陆时继承root身份
配置文件如下修改,表示客户端如果使用samba用户student登陆时,如果客户端是root用户,则继承root用户的身份:
分别用westos和student帐号登陆,长传文件:
则westos帐号登陆上传的文件所有人为westos,以student帐号登陆上传的文件所有人为root:
6)允许匿名用户登陆
默认情况下匿名用户不能登陆,要使匿名用户可以登陆,配置文件如下修改:
测试如下:
7.多用户挂载
当客户端为root用户时通过westos帐号登陆之后,其它用户也可以查看共享的内容,如下:
这种方式不是特别安全。客户端安装以下软件:
[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用户其它用户查看共享内容时必须通过认证:
如果student用户要使用共享的内容,必须通过认证,如下:
表示student通过suu帐号进行认证。
8.永久挂载
编辑/etc/fstab文件,如下:
当系统重启时,就会挂载。