Samba服务 - SMB协议
Samba协议基础
在NetBIOS 出现之后,Microsoft就使用NetBIOS实现了一个网络文件/打印服务系统,这个系统基于NetBIOS设定了一套文件共享协议, Microsoft称之为SMB(Server Message Block)协议。这个协议被Microsoft用于它们Lan Manager和Windows NT服务器系统中,实现不同计算机之间共享打印机、串行口和通讯抽象(如命名管道、邮件插槽等)。
随着 Internet的流行,Microsoft希望将这个协议扩展到Internet上去,成为Inter net上计算机之间相互共享数据的一种标准。因此它将原有的几乎没有多少技术文档的SMB协议进行整理,重新命名为 CIFS(Common Internet File System),并打算将它与NetBIOS相脱离,试图使它成为Internet上的一个标准协议。
SAMBA配置文件
Samba的配置文件为/etc/samba/smb.conf
配置文件分为三个部分:
- [global] 定义全局性配置(配置samba服务的相关参数)
- [homes] 定义对用户家目录的共享配置(其实在默认情况下不做任何设置,直接启用服务我们就可以通过smb协议访问所有用户的家目录)
- [printers] 定义打印机共享配置
browseable = 可浏览(设置共享是否可游览,如果是no表示隐藏,通过ip+共享名进行访问)
writable = yes 可写,还要看目录权限 rw
write list = maomao,@GROUPNAME,+GROUPNAME
read only = yes 只读设置 ro
create mask = 0644 客户机创建文件权限
directory mask = 0755 客户机创建目录的权限
valid user = //允许
invalid = user1,user2,@group1//禁止登录用户,用户用逗号隔开,组用@ //禁止
访问控制
hosts allow = 允许主机 192.168.100.
hosts deny = 拒绝主机 允许优先
max connections = 最大连接数目
deadtime = 断掉连接时间(分钟,0为不限制)
public =所有用户都可以访问 / guest ok=yes/no
map to guest = Bad User 匿名访问
使用的端口
- Port 137 (UDP) - NetBIOS 名字服务 ; nmbd
- Port 139 (TCP) - 文件和打印共享 ; smbd (基于SMB(Server Message Block)协议,主要在局域网中使用,文件共享协议)
- Port 138 (UDP) - NetBIOS 数据报服务
- Port 445 (TCP) - NetBIOS服务在windos 2000及以后版本使用此端口, (Common Internet File System,CIFS,它是SMB协议扩展到Internet后,实现Internet文件共享) 139/445
实现文件共享
Linux服务端:
[root@localhost ~]
[root@localhost ~]
[root@localhost ~]
[global]
workgroup = SAMBA
security = user
[homes]
comment = Home Directories
valid users = %S, %D%w%S
browseable = No
read only = No
inherit acls = Yes
[root@localhost ~]
[root@localhost ~]
New SMB password:
Retype new SMB password:
[root@localhost ~]
lisi:1006:
[root@localhost ~]
下面在Windows上测试
用户自定义共享文件
1、通过samba提供一个公共文件服务器,所有人都可以访问并写入,但是当前用户不可以删除和修改他人的文件
[root@localhost ~]
[public]
comment = this is public
writable = yes
path = /pubtest
create mask = 0644
directory mask = 755
[root@localhost ~]
[root@localhost ~]
[root@localhost ~]
total 0
-rw-r--r--. 1 root root 0 Aug 26 21:40 1
-rw-r--r--. 1 root root 0 Aug 26 21:40 2
-rw-r--r--. 1 root root 0 Aug 26 21:40 3
-rw-r--r--. 1 root root 0 Aug 26 21:40 4
-rw-r--r--. 1 root root 0 Aug 26 21:40 5
[root@localhost ~]
在Windows上测试 要想实现用户不可以删除和修改他人的文件,就是只能对自己的文件删除修改就要对 /pubtest 目录进行下面的操作
[root@localhost ~]
效果如下,我用lisi想删除root的4文件,会提示没有权限:
2、技术部需要一个文件服务器,用于存放常用的软件工具,所有人都可以访问,但是只有技术部里的用户可以写入
[root@localhost ~]
[soft]
comment =this is soft
path = /soft
read only = yes
write list = @soft
[root@localhost ~]
[root@localhost ~]
[root@localhost ~]
[root@localhost ~]
[root@localhost ~]
New SMB password:
Retype new SMB password:
Added user zhangsan.
[root@localhost ~]
Adding user zhangsan to group soft
[root@localhost ~]
lisi:1006:
zhangsan:1007:
[root@localhost ~]
drwxr-xr-x. 2 root root 51 Aug 26 22:00 /soft/
[root@localhost ~]
[root@localhost ~]
在Windows上测试: 果然:
清除缓存 win + r 进入cmd 输入:net use * /delete 切换到zhangsan来试试:
在Linux客户机上访问共享文件
方式一:使用smbclient
[root@localhost ~]
[root@localhost ~]
[root@localhost ~]
Enter zhangsan's password:
Domain=[SAMBA] OS=[Windows 6.1] Server=[Samba 4.10.4]
Sharename Type Comment
--------- ---- -------
public Disk this is public
soft Disk this is soft
IPC$ IPC IPC Service (Samba 4.10.4)
zhangsan Disk Home Directories
Domain=[SAMBA] OS=[Windows 6.1] Server=[Samba 4.10.4]
Server Comment
--------- -------
LOCALHOST Samba 4.10.4
Workgroup Master
--------- -------
SAMBA LOCALHOST
[root@localhost ~]# smbclient //192.168.72.130/soft/ -U zhangsan
Enter zhangsan's password:
Domain=[SAMBA] OS=[Windows 6.1] Server=[Samba 4.10.4]
smb: \>
smb: \> get 综合练习:.md
getting file \综合练习:.md of size 895 as 综合练习:.md (58.3 KiloBytes/sec) (average 58.3 KiloBytes/sec)
在当前客户机上新建一个文件newfile
smb: \> put newfile
putting file newfile as \newfile (0.0 kb/s) (average 0.0 kb/s)
方式二:挂载
[root@localhost ~]
[root@localhost ~]
[root@localhost ~]
total 4
-rw-r--r--. 1 root root 0 Aug 26 22:00 1
-rw-r--r--. 1 root root 0 Aug 26 22:00 2
-rw-r--r--. 1 root root 0 Aug 26 22:00 3
-rw-r--r--. 1 root root 0 Aug 26 22:00 4
-rw-r--r--. 1 root root 0 Aug 26 22:00 5
-rwxr--r--. 1 1007 1009 0 Aug 26 22:44 newfile
-rwxr--r--. 1 1007 1009 895 Aug 26 17:03 综合练习:.md
附加练习:多用户挂载的验证策略 (条件:多个用户对当前文件系统有不同的权限并且客户端要求只能通过某一个挂载点目录访问文件系统) 再服务器上通过SMB共享目录/devops,并满足以下要求 1、共享名为devops 2、共享目录devops只能被192.168.100.0/24网段中的客户端使用 3、共享目录devops必须可以被浏览 browseable =Yes 4、用户xixi必须能以读的方式访问此共享,访问密码是redhat 5、用户heihei必须能以读写的方式访问此共享,访问密码是redhat 此共享永久挂载在192.168.171.144上的/devops/目录,并使用用户xixi作为认证任何用户可以通过用户heihei来临时获取写的权限
在服务端:
[root@localhost ~]
[devops]
hosts allow = 192.168.72.
browseable = yes
read only = yes
write list = heihei
path = /devops
[root@localhost ~]
[root@localhost ~]
[root@localhost ~]
[root@localhost ~]
[root@localhost ~]
New SMB password:
Retype new SMB password:
Added user xixi.
[root@localhost ~]
New SMB password:
Retype new SMB password:
Added user heihei.
[root@localhost ~]
[root@localhost ~]
在客户端
[root@localhost ~]
[root@localhost ~]
[root@localhost ~]
//192.168.72.130/devops /devops cifs defaults,username=xixi,password=200001,multiuser,sec=ntlmssp 0 0
multiuser 支持多用户认证 sec=ntlmssp 认证方式为标准smb认证方式
[root@localhost ~]
[root@localhost ~]
[root@localhost ~]
[root@localhost ~]
[root@localhost devops]
total 0
-rw-r--r--. 1 root root 0 Aug 26 23:24 1
-rw-r--r--. 1 root root 0 Aug 26 23:24 2
-rw-r--r--. 1 root root 0 Aug 26 23:24 3
-rw-r--r--. 1 root root 0 Aug 26 23:24 4
-rw-r--r--. 1 root root 0 Aug 26 23:24 5
[root@localhost devops]
touch: cannot touch ‘1’: Permission denied
[root@localhost devops]
[heihei@localhost ~]$ cd /devops
[heihei@localhost devops]$ ll
ls: reading directory .: Permission denied
total 0
[heihei@localhost devops]$ cifscreds add 192.168.72.130
Password:
[heihei@localhost devops]$ ll
total 0
-rw-r--r--. 1 root root 0 Aug 26 23:24 1
-rw-r--r--. 1 root root 0 Aug 26 23:24 2
-rw-r--r--. 1 root root 0 Aug 26 23:24 3
-rw-r--r--. 1 root root 0 Aug 26 23:24 4
-rw-r--r--. 1 root root 0 Aug 26 23:24 5
[heihei@localhost devops]$ touch 111
[heihei@localhost devops]$ ll
total 0
-rw-r--r--. 1 root root 0 Aug 26 23:24 1
-rw-r--r--. 1 heihei 1012 0 Aug 26 23:41 111
-rw-r--r--. 1 root root 0 Aug 26 23:24 2
-rw-r--r--. 1 root root 0 Aug 26 23:24 3
-rw-r--r--. 1 root root 0 Aug 26 23:24 4
-rw-r--r--. 1 root root 0 Aug 26 23:24 5
[heihei@localhost devops]$ su -
Password:
Last login: Thu Aug 26 23:39:54 CST 2021 on pts/1
[root@localhost ~]
[xixi@localhost root]$ cifscreds add 192.168.72.130
Password:
[xixi@localhost root]$ cd /devops/
[xixi@localhost devops]$ ll
total 0
-rw-r--r--. 1 root root 0 Aug 26 23:24 1
-rw-r--r--. 1 heihei 1012 0 Aug 26 23:41 111
-rw-r--r--. 1 root root 0 Aug 26 23:24 2
-rw-r--r--. 1 root root 0 Aug 26 23:24 3
-rw-r--r--. 1 root root 0 Aug 26 23:24 4
-rw-r--r--. 1 root root 0 Aug 26 23:24 5
[xixi@localhost devops]$ touch 12
touch: cannot touch ‘12’: Permission denied
valid users 删除samba服务中的某个用户:smbpasswd -x 用户名
删除linux中某个用户所有信息:userdel -r 用户名
|