SAMBA协议
一、定义
1.samba协议用来提供cifs协议,实现linux和windows系统的文件共享
2.yum install samba samba-common samba-client -y
##samba 提供samba服务的主命令;samba-common 提供管理命令;samba-client 提供测试服务
3.systemctl start smb nmb ##开启smaba,nmb服务
systemctl enable smb nmb ##开机时自动开启服务
二、测试--测试主机有samba-client服务软件
<1>匿名用户登录
smbclient -L //172.25.254.109 ##匿名登录
<2>本机用户登录
1.smbclient -L //172.25.254.109 -U student ##本机用户登录,显示内容如下:
[kiosk@foundation9 Desktop]$ smbclient -L//172.25.254.109 -U student
Enter student's password: ##应输入本机用户在samba协议中的密码
session setup failed:NT_STATUS_LOGON_FAILURE ##登录失败,未输入在smb中的密码
当不输入密码时,相当于匿名登录:
2.在服务端查看
pdbedit -L ##查看允许登录的用户,显示内容中无student用户
(1)添加smb用户--必须是本机用户
smbpasswd -a 用户名 ##添加smb用户,此用户必须是本机用户
[root@localhost ~]# smbpasswd -a student
New SMB password: ##设置用户student在samba中的密码
Retype new SMB password: ##确认密码
Added user student.
pdbedit -L ##再次查看
[root@localhost ~]# pdbedit -L
student:1000:Student User
(2)测试
smbclient -L //172.25.254.109 -U student
三、共享目录
[root@localhost mnt]# getsebool -a | grepsamba ##查看samba在selinu中的服务状态
samba_create_home_dirs --> off
samba_domain_controller --> off
samba_enable_home_dirs --> off ##共享目录
samba_export_all_ro --> off ##只读文件共享
samba_export_all_rw --> off ##读写文件共享
samba_portmapper --> off
samba_run_unconfined --> off
samba_share_fusefs --> off
samba_share_nfs --> off
sanlock_use_samba --> off
use_samba_home_dirs --> off
virt_sandbox_use_samba --> off
virt_use_samba --> off
<1>共享用户家目录
[kiosk@foundation9 Desktop]$ smbclient//172.25.254.109/student -U student
##未开启共享功能前,可以登录但不能访问家目录
Enter student's password:
Domain=[MYGROUP] OS=[Windows 6.1]Server=[Samba 4.2.3]
smb: \> ls
NT_STATUS_ACCESS_DENIED listing \*
1.服务端
setsebool -P samba_enable_home_dirs on
setsebool -P samba_enable_home_dirs 1
##在selinux中永久设定smb用户可以访问家目录
2.测试端
smbclient //172.25.254.109/student -U student
##smb用户student访问其家目录/student
<2>共享自建的目录
(1)服务端--172.25.254.109
setsebool -P samba_enable_home_dirs 0 ##关闭共享家目录服务
mkdir /smbshare ##建立共享目录
(2)vim /etc/samba/smb.conf ##编辑主配置文件
89 workgroup = MYGROUP ##设置工作组
在文件结尾出编辑内容如下:
[hello] ##设置共享文件名称,可任意设定
comment= local directory ##添加说明,可任意
path= /smbshare ##共享文件
:wq
(3)systemctl restart smb ##重启服务
(4)再次在客户端访问,仍被拒绝,因为存在安全上下文问题
semanage fcontext -a -t samba_share_t '/smbshare(/.*)?' ##永久设置
restorecon -RvvF /smbshare ##刷新
(5)客户端
smbclient -L//172.25.254.109 -U student ##查看共享文件,显示内容如下:
Domain=[WESTOS]OS=[Windows 6.1] Server=[Samba 4.2.3]
Sharename Type Comment
--------- ---- -------
hello Disk local directory
IPC$ IPC IPC Service (Samba Server Version 4.2.3)
student Disk Home Directories
##Domian表示工作组,为WESTOS;
##Sharename表示共享文件名,为hello(上文编辑内容可查看)
smbclient //172.25.254.109/hello -U student
##访问共享文件,实际访问的是/smbshare
<3>共享系统目录
1.vim /etc/samba/smb.conf
89 workgroup = WESTOS ##设置工作组
在文件结尾出编辑内容如下:
[hello] ##设置共享文件名称,可任意设定
comment= local directory ##添加说明,可任意
path= /mnt ##共享系统文件/mnt
:wq
2.setsebool samba_create_home_dirs 0 ##此时可以访问但看不到文件内容
3.setsebool samba_export_all_ro on
##只读文件共享,此后再共享文件均不需更改安全上下文,因为该命令会忽略安全上下文
4.systemctl restart smb ##重启服务
5.测试
smbclient //172.25.254.109/hello -U student
##访问共享文件,实际访问的是/mnt,此时可以只读文件内容
四、samba中的参数
<1>匿名用户访问家目录
匿名用户默认是不能访问家目录的:
1.vim /etc/samba/smb.conf
编辑内容如下:
[hello]
322 comment = localdirectory
323 path = /mnt
324 guest ok = yes ##允许匿名用户登录
125 map to guest = baduser ##匿名用户均指定到guest
2.systemctl restart smb
3.客户端测试:smbclient //172.25.254.109/hello
<2>IP访问控制
1.指定IP 禁止访问
vim /etc/samba/smb.conf
89 workgroup = MYGROUP ##设置工作组
文件结尾处编辑内容如下:
[hello] ##设置共享文件名称,可任意设定
comment= local directory ##添加说明,可任意
path= /mnt ##共享系统文件/mnt
hosts deny = 指定IP ##该IP不被允许访问
:wq
systemctl restart smb ##重启服务
测试结果显示如下:
2.指定IP可以访问
vim /etc/samba/smb.conf
89 workgroup = MYGROUP ##设置工作组
文件结尾处编辑内容如下:
[hello] ##设置共享文件名称,可任意设定
comment= local directory ##添加说明,可任意
path= /mnt ##共享系统文件/mnt
hosts allow= 指定IP ##只允许该IP主机访问
:wq
systemctl restart smb ##重启服务
测试结果显示如下:
<3>用户访问控制
1.指定用户可以访问
vim /etc/samba/smb.conf
89 workgroup = MYGROUP ##设置工作组
文件结尾处编辑内容如下:
[hello] ##设置共享文件名称,可任意设定
comment= local directory ##添加说明,可任意
path= /mnt ##共享系统文件/mnt
validusers = 用户名 ##指定用户可以访问
:wq
systemctl restart smb ##重启服务
测试结果显示如下:
2.指定组,属于该组的用户可以访问
vim /etc/samba/smb.conf
89 workgroup = MYGROUP ##设置工作组
文件结尾处编辑内容如下:
[hello] ##设置共享文件名称,可任意设定
comment= local directory ##添加说明,可任意
path= /mnt ##共享系统文件/mnt
validusers = +组名 ##属于该组的用户可以访问
validusers = @组名 ##属于该组的用户可以访问
:wq
给用westos添加附加组student,访问结果如下:
<4>读写访问
1.setsebool -P samba_export_all_rw on
##在selinux中允许samba读写功能
2.vim /etc/samba/smb.conf
89 workgroup = MYGROUP ##设置工作组
文件结尾处编辑内容如下:
[hello] ##设置共享文件名称,可任意设定
comment= local directory ##添加说明,可任意
path= /mnt ##共享系统文件/mnt
writable= yes ##允许写操作
:wq
另外一种格式如下示
vim /etc/samba/smb.conf
89 workgroup = MYGROUP ##设置工作组
文件结尾处编辑内容如下:
[hello] ##设置共享文件名称,可任意设定
comment= local directory ##添加说明,可任意
path= /mnt ##共享系统文件/mnt
writable= no
write list = 用户名 ##仅允许指定用户可以写
write list = +用户名 ##仅允许指定组中的用户可以写
write list = @用户名 ##仅允许指定组中的用户可以写
:wq
3.chmod o+w /mnt ##添加访问权限
4.systemctl restart smb ##重启服务
5.测试
(1)挂载
mount -o username=用户名,password=smb用户的密码 //172.25.254.109/hello /mnt
##使用通过smb认证的用户将服务端的共享目录挂载至客户端的/mnt下,便可以对其进行操作
(2)访问
cd /mnt ##若切换成功,并可以进行文件建立、删除更操作,则设置成功
若是允许属于westos组的用户访问时:
只允许student用户进行读写,显示内容如下:
<5>.共享的超级用户指定
(1)chmod o-w /mnt
/mnt对other有可写权限
(2)vim /etc/samba/smb.conf
89 workgroup = MYGROUP ##设置工作组
文件结尾处编辑内容如下:
[hello]
comment = local directory
path = /mnt
writable = yes
admin users = westos
##指定共享文件的超级用户为westos,即在客户端通过smb用户在共享目录中新建的文件,实际上是共享文件的超级用户身份建立的
:wq
(3)systemctl restart smb ##重启服务
(4)测试
注:超级用户的设置,即只能以超级用户身份访问,因为此时/mnt的权限
如下:设置超级用户为student,只有smb认证的超级用户即student可以访问/mnt
<6>smb多用户挂载
一一般在root用户下挂载共享文件后,再切换到普通用户,仍是可以访问共享文件的,这样是极不安全的。因此,需要使用多用户挂载,示现普通用户访问时需要通过认证
1.在客户端--172.25.254.209
(1)vim /root/文件名 ##用户认证文件
如:vim /etc/haha
username=student
password=stu ##通过smb认证的用户
(2)chmod 600 /root/haha ##设置权限
(3)yum install cifs-utils -y ##多用户挂载服务
(4)mount -o credentials=/root/haha,multiuser,sec=ntlmassp //172.25.254.109/hello
##超级用户下挂载
##credentials=/root/haha 指定挂载时所用到的用户文件
##multiuser 支持多用户认证
##sec=ntlmassp 认证方式为标准smb认证方式
(5)再切换至普通用户,将不能直接访问共享目录
(6)普通用户环境执行如下命令:
cifscreds add -u student 172.25.254.109
##可以实现普通用户使用smb上的student用户去访问共享目录