samba服务的介绍
samba是架构在NetBIOS(Network Basic Input/Output System,网上基本输入输出系统)这个通信协议上面所开发出来的。NetBIOS是由IBM发展出来,目的是要让局域网络内少数计算机进行网络连接的一个通信协议,因此NetBIOS是无法跨越路由的,而现在Samba不仅能与局域网主机分享资源,还能与全世界的电脑分享资源,就是由NetBIOS over TCP/IP技术解决。由于NetBIOS在局域网内实在是很好用,所以微软的网络架构就使用了这个协议。而samba最早发展的时候,其实是想要让linux系统可以加入windows的系统当中来共享使用彼此的文件数据,所以samba就架构在NetBIOS发展出来了。
samba的功能:
①共享linux磁盘给win95/NT
②共享win95/NT磁盘给linux机器
③共享linux打印机给win95/NT
④共享win95/NT打印机给linux机器
使用端口:现在使用的是445
port 137(udp)
port 138 (udp)
port 139 (tcp)
port 445 (tcp)
samba通过两个服务来控制管理工作组和samba主机共享的目录,分别是:
nmbd:这个服务是来管理工作组、NetBIOS Name等的解析。主要利用UDP协议开启port137、port138来负责名称解析的任务。
smbd:这个服务的主要功能是用来管理samba主机共享的目录、文件与打印机等。主要利用可靠的TCP协议来传输数据,开放的端口为139和445(不一定存在)。
samba服务的相关软件包说明:
samba:该软件主要提供了smb服务器所需的各项服务程序(smbd及nmbd)、相关的文件。
samba-client:这个软件提供了当linux作为samba client时,所需要的工具命令。例如挂载samba文件格式的mount.cifs。
samba-common:这个软件提供的则是服务器与客户端都会使用到的数据,包括samba的主要配置文件(smb.conf)等。
SAMBA服务器的搭建
samba服务的主配置文件:/etc/samba/smb.conf
在该文件中,“#”和“;”都是注释符号。
在该文件中,不区分大小写。
安装过程:
使用yum安装
# yum install samba -y
关闭防火墙、selinux
起服务
# systemctl stop firewalld
# setenforce 0
# systemctl start smb nmb
目前就可以使用默认的配置来进行文件的传输了。
客户端:Windows主机
服务端:linux虚拟机
windows下指定smb服务使用\\192.168.83.133(使用自己的虚拟机主机的ip)
需要等一下才会弹出对话框
查看配置文件:
# vim /etc/samba/smb.conf
查看示例文件:
# vim /etc/samba/smb.conf.example
分析示例文件中的内容:
[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 定义记录文件的大小(单位是KB,如果是0的话就不限制大小)
- security = user
定义samba的安全级别,按照从低到高可分为四级:share,user,server,domain
验证方式:
share:没有安全性的级别,任何用户都可以不要用户名和口令访问服务器上的资源
user:samba的默认配置,要求用户在访问共享资源之前必须先提供用户名和木马进行 验证
server:与user的安全级别类似,但用户名和密码是递交到另一个服务器去验证,比 如 递交到一台NT服务器,如果递交失败,就遇到user安全级别。
domain:这个安全级别要求网络上存在一台Windows的主域控制器,samba把用户名 和密码递交给他去验证
后面三种安全级别都要求用户在linux虚拟机上也有系统账户,否则是不能访问的。
- load printers = yes
[homes](共享目录名称)
在sbm.conf文件中一般没有对这个目录设定特定的内容,比如路径等,当客户机发出服务请求时,就在smb.conf文件的其他部分查找有特定的内容的服务,如果没有发现这些服务,并且提供了homes段时,那么就搜索密码文件得到用户的Home目录。通过Homes段,samba可以得到用户的Home目录并使之共享。
Home段最基本的几个设置:
comment = Home Directories 家目录信息(注释信息)
browseable = no 浏览开启/不开启(当前是不开启)
writable = yes 读写权限 只读用readonly = yes
; valid users = %S
; valid users = MYDOMAIN\%S
[printers] 共享打印机
comment = All Printers
path = /var/spool/samba
browseable = no
guest ok = no
writable = no
printable = yes 打印权限
browseable=可浏览(设置共享是否可浏览,如果是no表示隐藏,通过ip+共享名进行访问)
writable=yes 可写,还要看目录权限,rw
write list = xixi,@GROUPNAME,+GROUPNAME
read only = yes 只读设置 ro
create mask =0644 客户拒创建文件权限
directory mask = 0755 客户机创建目录的权限
balid user = // 允许
invalid = user,use人,@group1//禁止登录用户,用户用逗号隔开,组用@隔开 //禁止
访问控制
hosts allow = 允许主机192.168.83.133. 把主机位省略但是要加.
hosts deny = 拒绝主机,允许优先
max connections = 最大连接数目
deadtime = 断掉连接时间(分钟,0位不限制)
public=所有用户都可以访问 / guest OK=yes/no
map to guest = Bad User 匿名访问
测试一:Windows作为客户端
# vim /etc/samba/smb.conf
先对配置文件进行修改
最后只要这几条参数即可
修改完成之后重启服务(这里特殊注意一下,启动的是两个服务:smb和nmb)
# systemctl restart smb nmb
启动这里前提是要把防火墙和selinux提前给关闭,要不然会报一个0x80070035的错误,这个可能是因为防火墙和selinux没关导致的,关闭防火墙和selinux之后再重启就不会报错了。
会出现下面这个情况,是因为没有创建smb用户和设置密码
添加一个smb用户
首先先添加一个本地用户,先查看是否有本地用户,没有则添加一个
[root@bogon ~]# id haha
id: “haha”:无此用户
[root@bogon ~]# useradd haha
有了本地用户,在创建smb用户(注:这里密码不会显示),这里我创建两个用户”haha和xixi“
[root@bogon ~]# smbpasswd -a haha
New SMB password:
Retype new SMB password:
Added user haha.
[root@bogon ~]# useradd xixi
[root@bogon ~]# smbpasswd -a xixi
New SMB password:
Retype new SMB password:
Added user xixi.
“成功添加hahasmb用户
查看是否创建成功,查询smb用户的指令:
[root@bogon ~]# pdbedit -L
haha:1001:
xixi:1002:
查到了两个smb用户:haha和xixi
点击确定就会看到haha这个家目录文件
[homes]是指家目录的名称,在这里是指haha用户的家目录
配置文件当中browseable = NO是指当前用户可以看到自己的家目录,但是别人并不能看到
里面什么也没有,但是从Windows上可以上传文件和删除
上传成功
对上传的文件也有写的操作
进行删除,删除成功
这个是默认的配置文件,接下来自定义共享信息
FTP是不可以做自定义共享目录,只能使用默认路径来共享信息,但是smb可以做自定义
修改配置文件:
添加一个test目录
根据写的配置文件创建/test目录
# mkdir /test
# touch /test/{1..10}
重启服务:
# systemctl restart smb nmb
刷新之后还是看不到test目录。是因为browseable = NO,这里将NO改为YES就可看到
改成yes之后即可看到test
打开test文件,里面的内容只有读取的权限,没有写,以及删除等权限,
加上写的权限:两层
①系统文件 write list =haha
在配置文件中加上写的权限
查看有没有写的权限:
# ll /test -d
drwxr-xr-x. 2 root root 97 11月 3 14:54 /test
发现并没有写的权限
②目录层 # chmod o+w /test
两层都加上之后就可以上传文件了
、
有了写的权限,则可以正常的删除文件
只能删除自己创建的,不能删除别人创建的,否则会报错: # chmod o+t /test
也可以只开启这个写的权限:
测试二:
让linux主机作为客户端来访问
未完待续......