一、samba
Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages
Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS
over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。samba:这个套件主要包含了 SAMBA 的主要 daemon档案 ( smbd 及 nmbd )、 SAMBA 的文件档 (
document )、以及其它与 SAMBA 相关的logrotate 设定文件及开机预设选项档案等;
samba-common:这个套件则主要提供了 SAMBA 的主要设定档(smb.conf) 、 smb.conf 语法检验的测试程序 (
testparm )等等; samba-client:这个套件则提供了当 Linux 做为SAMBA Client
端时,所需要的工具指令,例如挂载 SAMBA 档案格式的执行档 smbmount等等。
安装配置
1 yum install samba samba-client.x86_64 samba-common -y ##安装samba
-->systemctl start smb ##开启samba
-->systemctl enable smb.service ##设置开启启动
-->systemctl stop firewalld ##关闭firewalld服务
安装samba , samba-client, samba-servr套件
开启并设置开机启动
1.创建用户及基本命令
server
1 smbpasswd -a student
##创建samba用户,该用户必须系统已经存在,不然创建失败
2 pdbedit -L ##列出samba用户
3 pdbedit -x student ##删除samba用户
测试
client
1 smbclient //172.25.254.127/student -U student
##用samba用户student登陆127主机共享目录
-->ls
无法看到家目录
server
1 getsebool -a | grep samba ##查找过滤samba的selinux值
--> setsebool -P samba_enable_home_dirs on
##开启samba的家目录可以看
client
1 smbclient //172.25.254.127/student -U student33
##再次登陆,测试成功
-->ls
创建samba用户
列出samba用户,-x删除samba用户,再建立
client登陆无法访问家目录
打开samba共享家目路可见的selinux值
测试成功
二、共享目录
1.自创建的目录
server
1 mkdir /hello ##创建根下的hello目录
-->touch /hello/hello{1..3} ##在该目录下创建三个文件
2 semanage fcontext -a -t samba_share_t '/hello(/.*)?’
##更改hello目录的安全上下文
3 restorecon -RvvF /hello/ ##重新刷新安全上下文
4 vim /etc/samba/smb.conf ##编辑samba的配置文件
89 workgroup = hello ##设置共享目录为hello目录
321 [DATA] ##目录名称
322 comment = local directory /hello ##介绍
323 path = hello ##共享目录的绝对路径
-->systemctl restart smb ##重启samba服务
5 测试
client
smbclient //172.25.254.127/DATA -U student
##用samba用户student登陆127主机共享目录DATA
编辑samba的配置文件,共享目录是hello
名字是DATA,具体如图
创建共享目录,更改目录的安全上下文,并刷新安全上下文
测试成功
2.系统目录
1 vim /etc/samba/smb.conf ##编辑samba的配置文件
324 [CONFIG] ##目录名称
325 comment = local directory /mnt ##介绍
326 path = /mnt ##共享目录的绝对路径
-->systemctl restart smb ##重启samba服务
2 getsebool -a | grep samba ##共享目录的绝对路径
--> setsebool -P samba_export_all_ro on ##开启系统目录可以看
3 测试
client
smbclient //172.25.254.127/CONFIG -U student
##用samba用户student登陆127主机共享目录CONFIG
将系统目录写入配置文件如图
登陆成功不可见
打开系统目录可见的selinux值
测试成功
三、参数配置
1.读写控制
允许系统目录可写
1 vim /etc/samba/smb.conf ##编辑samba的配置文件
330 writable=yes ##允许用户可写
-->systemctl restart smb ##重启samba服务
2 setsebool -P samba_export_all_rw on ##开启系统目录可以写的selinux
3 测试
client
mount -o username=student,password=student //172.25.254.127
##用studnet用户可以直接登陆挂载
-->df
-->cd /mnt->ls
-->touch hello
配置文件允许用户可写
打开系统共享目录可写的selinux值
测试成功
指定用户可写
1 vim /etc/samba/smb.conf
330# writable=yes ##注释掉全部用户可写
331 write list = student ##指定student用户可写
-->systemctl restart smb
2 测试
client
mount -o username=student,password=student //172.25.254.127
##用studnet用户可以直接登陆挂载
-->df
-->cd /mnt->ls
-->rm -fr hello
mount -o username=nihao,password=nihao //172.25.254.127
##nihao用户可挂载但不可以写
-->df
-->cd /mnt->ls
-->touch nihao
指定student用户可写
测试nihao用户不可写
student用户可写
指定用户组可写
1 vim /etc/samba/smb.conf
331 write list = +student ##指定student用户组可以写
-->systemctl restart smb
2 usermod -G student nihao ##给nihao用户增加student附加组
-->id nihao ##查看nihao用户的id
3 测试
client
mount -o username=nihao,password=nihao //172.25.254.127 ##用studnet用户可以直接登陆挂载
-->df
-->cd /mnt->ls
-->touch nihao ##创建文件成功,测试成功
指定student用户组可写
nihao用户也student组
指定nihao用户为系统管理员
测试成功,可写,同时建立文件是root用户权限
2 .访问控制
匿名访问
1 vim /etc/samba/smb.conf
125 map to guest = bad user ##指向匿名用户
324 guet ok = yes ##允许匿名登陆
client测试
2 smbclient //172.25.254.127/DATA ##匿名登陆访问成功
匿名用户指向
允许匿名用户登陆
匿名用户登陆测试成功
通过IP控制访问
1 vim /etc/samba/smb.conf
325 hosts deny =172.25.254.227 ##拒绝227主机访问
2 vim /etc/samba/smb.conf
325 hosts allow =172.25.254.27 ##允许27主机访问
拒绝227主机访问
227主机访问被拒绝
允许27主机登陆访问
27主机登陆成功
指定用户登陆
3 vim /etc/samba/smb.conf
326 valid users = student ##允许student用户登陆
指定student用户可以登陆
student用户登陆成功
指定用户组登陆
4 vim /etc/samba/smb.conf
326 valid users = +student ##允许student用户组登陆
指定student组可以登陆
增加nihao用户,并加入samba用户
给nihao用户增加附加组student
nihao用户登陆成功
2.多用户挂载
client
1 yum install cifs-utils -y ##安装cifs-utils
2 vim /root/hello ##编辑认证文件
username=nihao ##用户
password=nihao ##密码
3 chmod 660 /root/hello ##给认证660权限
测试
1 monut -o credentials=/root/hello,multiuser,sec=ntlmssp //172.25.254.127/CONFIG /mnt/ ##匿名的登陆
-->df
2 su - student ##切换student用户
-->cd /mnt/
-->ls ##被拒绝
3 cifscreds add -u student 172.25.254.127 ##增加student用户登陆认证
-->ls ##测试成功
安装cifs-utils插件
编辑认证文件,并给该文件660权限
多用户挂载登陆,切换到student用户查看被拒绝,用cifscreds增加student用户,测试成功