Samba服务—SMB协议
在windows当中我们最常见的就是网上邻居可以看到同一互联网上连接的所有用户
在服务器端,linux与window Server相比的稳定性,安全性执行效率以及性价比都是较高的。所以好多window Server下跑的一些服务都会切换到运行在linux服务上,但是对于一些桌面用户来说用到的较多的就是文件共享协议。而在linux中我们可以使用 FTP NFS这类型文件共享协议,但是对于window上比较简单的直接打开的服务在linux中的nfs协议来说是不能在window上使用的这种直接将文件系统共享出来的协议为SMB。
与ftp的区别是不用将文件下载下来在使用,是直接可以在共享中打开使用的,所以说这种共享方式在使用当中是非常方便的,但是SMB是window当中的一种私有协议。即使如此在linux当也提供对SMB协议的一种支持。(虽然是window下的私有协议但是我们的开源技术团队为我们的linux也提供了这种服务称为samba服务,在开发过程中也是相当的艰苦 ,由于在window下是闭源的所以开发者是通过抓包分析window下所产生的数据包来实现的。弄清楚它的一个原理。)
SMB(Server Message block)协议是window下所使用的文件共享协议,我们在linux系统或者其类unix系统当中可以通过samba服务来实现SMB功能。
Samba服务是SMB的一个开源实现。
SMB的功能有哪些:
1.通过SMB协议进行文件共享
2.通过SMB协议进行打印共享(我们可以通过在linux上通过smb配置打印服务器,为window提供打印服务)
3.加入一个windows2000/2003/2008域环境(在企业环境当中应用最多,目前smb是支持这三种主流的window服务操作系统的,好多企业当中整个的企业环境当中是使用window的域环境进行管理的,而所有的用户组,权限,组策略信息都是在window域环境进行配置的,那么但是我们的企业又想把一些应用服务和需要用到的一些域环境进行认证或者是做权限控制的这些应用服务去切换到linux系统当中,那在这种情况下就涉及到我如何和window下的这些域环境进行兼容,那么smb是可以加入window域环境当中,并且是可以和window下的这些域环境进行认证操作的。所以smb这个协议是相当强大的不仅限于只是实现文件共享)
4.通过windows域环境进行认证操作
在linux中怎么启动SAMBA?
安装samba。
Yum install samba -y
Samba拥有两个主服务(相关服务),对于一般使用的服务他只有一个主服务
smbd (提供samba核心功能也是使用最多的一种功能) 提供文件及打印共享服务功能,使用139/445端口
nmbd 提供Netbios(解析协议慢慢的被淘汰)支持,使用137/138端口,而对于这种协议使用较少,现在都是dns进行解析
一般作为文件共享使用samba,则只需要smbd服务
SAMBA 配置文件:
端口号:
配置文件模块详解:
[global]
workgroup = MYGROUP 定义该Samba服务器所在的工作组或者域(如果下面的security=domain的话)
server string = Samba Server Version %v
设定机器的描述,当我们通过网络邻居访问的时候可以在备注里面看见这个内容,而且还可以使用%v = Samba服务的版本号。
log file = /var/log/samba/log.%m 定义记录文件的位置LogFileName
max log size = 50
定义记录文件的大小size(单位是KB,如果是0的话就不限大小)
security = user
定义Samba的安全级别,按从低到高分为四级:share,user,server,domain。它们对应的验证方式如下:
* share:没有安全性的级别,任何用户都可以不要用户名和口令访问服务器上的资源。
* user:samba的默认配置,要求用户在访问共享资源之前资源必须先提供用户名和密码进行验证。
* server:和user安全级别类似,但用户名和密码是递交到另外一个服务器去验证,比如递交给一台NT服务器。如果递交失败,就退到user安全级。
* domain:这个安全级别要求网络上存在一台Windows的主域控制器,samba把用户名和密码递交给它去验证。
后面三种安全级都要求用户在本Linux机器上也要系统帐户。否则是不能访问的。
load printers = yes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[homes]
smb.conf文件中一般没有对这个目录的设定特定内容比如路径等。
当客户机发出服务请求时,就在smb.conf文件的其它部分查找友特定内容的服务。
如果没有发现这些服务,并且提供了homes段时,那么就搜索密码文件得到用户的Home目录。
通过Homes段,Samba可以得到用户的Home目录并使之共享。
下面是这个段的最基本的几个设置。
comment = Home Directories
browseable = no
writable = yes
1
2
3
4
5
6
7
8
[printers]
comment = All Printers
path = /var/spool/samba
browseable = no
guest ok = no
writable = no
printable = yes
write list = +staff @用来指定可以在该共享下写入文件的用户
这里printable指明该打印机可以打印, guest ok说明游客也能打印,path指明打印的文件队列暂时放到/var/spool/samba目录下。
1
2
3
4
5
6
7
8
SAMBA 配置文件的格式
[global] ###全局控制段
workgroup = workgroup(MYGROUP) #工作组
server string = Samba Server Version %v
security = user
encrypt passwords = yes #密码加密
wins support = yes #wins支持
log level = 1 #日志级别
max log size = 1000 #最大日志kb
read only = no #可读写
1
2
3
4
5
6
7
8
[homes] 共享目录名称 #家目录
browsable = no #浏览
map archive = yes
1
2
[printers] #打印机
path = /var/tmp #指定目录
printable = yes #是个打印机
min print space = 2000 #空间
1
2
3
[test] #共享的目录
browsable = yes #可浏览
read only = yes #只读
path = /usr/local/samba/tmp #共享的服务器目录
1
2
3
例子:
[global]
workgroup = workgroup
[homes]
browseable = no
writable = yes
[test]
path = /share
comment = test a directory
#重启服务
[root@mail samba]# systemctl restart smb
[root@mail samba]# systemctl restart nmb
windows系统中删除登陆缓存信息
cmd>net use * /delete
在window资源设备器上去访问:\192.168.0.130
提示要账号和密码:
添加samba用户
(先useradd添加用户)
[root@localhost samba]# smbpasswd -a xixi
New SMB password:
Retype new SMB password:
Added user xixi.
查看samba用户用
#pdbedit -L
最后看到两个目录 用户家目录 xixi test 对应得是/share
实验提升:
要求:
1、通过samba实现公司的文件交换服务器,
2、实现/public 目录让所有人访问,所有人都可以写入文件
配置示例:
[root@localhost samba]# cat smb.conf
[global]
workgroup = workgroup
[public]
path = /public
public = yes
comment = file
writable = yes
注意:selinux开启的状态下,需要执行:chcon -t samba_share_t /public -R
用户控制:
1.public =所有用户都可以访问 / guest ok =yes/no
2. map to guest = Bad User 匿名访问
3. browsable = 可浏览(设置共享是否可游览,如果是no表示隐藏,通过ip+共享名进行访问)
4. writable = yes 可写,还要看目录权限
5. writable list = maomao,@GROUPNAME,+GROUPNAME
6. readonly = yes 只读设置
7. create mask = 0644 客户机创建文件权限
8. directory mask = 0744 客户机创建目录的权限
9. valid users = user1,user2,@group1//禁止登录用户,用户用逗号隔开,组用@ //禁止
invalid = //允许访问控制
10. max connections = 最大连接数目
11. deadtime = 断掉连接时间(分钟,0为不限制
12. hosts allow = 允许主机
hosts deny = 拒绝主机(允许优先)
实验提升2:
案例2 要求:
1、通过samba提供一个公共文件服务器,所有人都可以访问并写入,但是不可以删除和修改他人的文件。
2、技术部需要一个文件服务器,用于存放常用的软件工具,所有人都可以访问,但是只有技术部可以写入
3、每个人都可以进入自己的独立家目录,别人不可以访问。
配置示例:
[root@localhost ~]# vim /etc/samba/smb.conf
[global]
workgroup = workgroup
security = user
[public] 共享名
path = /public 共享路径
public = yes 指定该共享目录是否允许guest账户访问
comment = file 共享目录的描述
writable = yes 该目录路径是否可写
[soft]
path = /soft
public = yes
comment = soft
write list = @jishubu (表示技术部组的人可以写添加技术部组将用户加入组,并将用户改为samba用户)
[homes]
browsable = no
writable = yes
[root@localhost ~]# chcon -t samba_share_t /soft
[root@localhost ~]# chcon -t samba_share_t /share
[root@localhost ~]# setsebool -P samba_export_all_rw on
注意SELINUX开启的情况下,需要执行setsebool -P samba_enable_home_dirs on 否则,用户不能进入自己的家目录
————————————————
版权声明:本文为CSDN博主「时不待我。」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/csdn10086110/article/details/89174589