第七章 Samba服务
第一节 samba简介
数据共享的方法
Windows中最常用的是“网上邻居”。网上邻居使用的文件系统是CIFS(通用互联网文件系统)协议进行数据共享
Linux中最常用的是NFS服务
Samba的由来
- 在 1991 年Andrew Tridgell为了实现Unix和Windows之间文件共享,开发了SMB( Server Message Block,服务消息块)文件系统
- 由于SMB无法注册,就取名为Samba,热情的桑巴舞
Samba与NetBIOS协议
- IBM开发的NetBIOS协议是为了局域网内少数计算机进行通信的协议
- Samba基于NetBIOS协议开发,所以可以和Windows通信,但是只能在局域网通信
- 相当于在Linux上搭建Windows的网上邻居,减少病毒传播
Samba主要应用
- 文件共享
- 打印服务器
- Samba登陆时身份验证
- 可以进行 Windows 的主机名解析
常见文件服务器的比较
服务名称 | 使用范围 | 服务器端 | 客户端 | 局限性 |
---|---|---|---|---|
FTP | 内网和公网 | Windows、Linux | Windows、Linux | 无法直接在服务器端修改数据无法直接在服务器端修改数据 |
Samba | 内网 | Windows、Linux | Windows、Linux | 只能在内网使用 |
NFS | 内网和公网 | Linux | Linux | 只能Linux之间使用 |
第二节 Samba安装与端口
安装
- samba: 主服务包
- samba-client: 客户端
- samba-common: 通用工具
- samba4-libs: 库
- samba-winbind: Windows域映射
- samba-winbind-clients: 域映射客户端
samba的守护进程
- smbd:提供对服务器中文件、打印资源的共享访问 139 445
- nmbd:提供基于NetBIOS主机名称的解析 137 138
启动samba服务
- service smb start
- service nmb start
第三节 Samba相关文件
常用文件
- /etc/samba/smb.conf #配置文件
- /etc/samba/lmhosts #对应NetBOIS名与主机的IP的文件,一般samba会自动搜索(只对本机生效) IP 与 主机名对应
- etc/samba/smbpasswd #samba密码保存文件,默认不存在
- /etc/samba/smbusers #用户别名,用于适用不同操作系统中用户名习惯。需要配置文件中“username map”选项支持
常用命令
testparm 检测配置文件是否正确
第四节 Samba配置文件详解
配置文件结构 smb .conf
Global Settings
- [global]: 全局设置
Share Definitions
- [homes]: 用户目录共享设置
- [printers]: 打印机共享设置
- [myshare]:自定义名称的共享目录设置
Global Settings
- workgroup:所在工作组名称(Windows)我的电脑里面有
- server string:服务器描述信息
- log file:日志文件位置
- max log size:日志文件的最大容量
-
security:安全级别,可用值如下:
- share: 不需要密码可以访问
- user: 使用系统用户,samba密码登陆
- server: 由其他服务器提供认证
- domain: 由域控制器提供认证
Share Definitions
- comment: 描述信息
- path: 共享的路径
- guest ok:允许所有人访问,等同于public
- read only: 所有人只读
- writable: 所有人可写
- write list: 拥有写权限的用户列表
- browseable: 是否浏览可见
- valid users: 指定可以访问的用户
常见的变量
- %v: samba的版本号
- %S: 任意用户可以登陆
- %m: client端的NetBIOS主机名
- %L: 服务器端的NetBIOS主机名
- %u: 当前登陆的用户名
- %g: 当前登陆的用户组名
第五节 基本使用
第一讲 share权限访问
配置文件修改
[global]
- workgroup = MYGROUP
- server string = Samba Server Lamp
- log file = /var/log/samba/log.%m
- max log size = 50
- security = share
-
passdb backend = tdbsam
这里需要注意:samba4较之前的SAMBA 3有一个重大的变化是:security不再支持share,参数需要做调整
原来:
security=share
现在:
security=user
map to guest =Bad User
Share Definitions
-
[movie]
- comment = study material
- path = /study
- browseable = yes
- writable = yes
- guest ok = yes
建立共享目录
- mkdir /study #建立共享目录
-
chown nobody /study/ #赋予用户访问权限
映射为Linux中的nobody用户
测试配置文件命令
testparm
重启Samba服务
- service smb restart
- service nmb restart
第二讲 客户端的使用
Windows客户端访问
-
网上邻居访问
\192.168.44.4 -
Linux客户端访问
- smbclient -L 192.168.44.4 #查看主机的共享资源
- smbclient //192.168.44.4/movie #访问共享目录
- 如果有密码:
smbclient //192.168.44.4/movie -U 用户名
即可访问
第三讲 user级别访问
配置文件修改
[global]
- workgroup = MYGROUP
- server string = Samba Server Lamp
- log file = /var/log/samba/log.%m
- max log size = 50
- security = user
- passdb backend = tdbsam
Share Definitions
-
[homes]
- comment = Home Directories
- browseable = no
- writable = yes
-
[pub]
- path = /public
- browseable = no
- writable = yes
- write list = sc
- valid users = sc 控制访问目录权限
建立共享目录与测试配置文件
- mkdir /public
- testparm
-
重启Samba服务
service smb restart
service nmb restart -
添加Samba用户
smbpasswd -a 系统用户名#注意,要给用户添加samba密码,该用户必须已经是系统用户
区别:
- FTP:使用系统用户,系统密码登陆
-
Samba:使用系统用户,samba登陆
权限设定
如果要想访问与上传:- Linux系统权限需要允许
- Samba服务权限也需要允许
第四讲 添加、删除、查看用户
添加samba用户
注意用户必须已经是系统用户,才能添加为samba用户
- pdbedit -a -u 系统用户
- 或 smbpasswd -a 系统用户名
删除samba用户
- pdbedit -x -u 系统用户名
- 或smbpasswd -x 系统用户
查看samba用户
- pebedit -L
第六节 Samba访问实验
Samba共享目录权限
- 系统权限要对共享目录生效
- Samba服务器权限也会对共享目录生效
- 在实际的工作中,可能的共享目录众多, 用户众多,权限交叉。建议使用系统权限控制共享目录权限,而不是使用samba权限
例子:
Samba共享目录
-
[教学]
- path = /share/jiaoxue
- browseable = yes
- writable = yes
-
[教务]
- path = /share/jiaowu
- browseable = yes
- writable = yes
Linux系统控制权限
-
chmod 700 /jiaoxue /jiaowu
教学的权限 - setfacl –m u:jx:rwx /share/jiaoxue
- setfacl –m u:jw:rx /share/jiaoxue
- setfacl –m u:xz:rx /share/jiaoxue
-
setfacl –m u:wl:rx /share/jiaoxue
教务的权限 - setfacl –m u:jw:rwx /share/jiaowu
- setfacl –m u:jx:rwx /share/jiaowu
- setfacl –m u:xz:rx /share/jiaowu
- setfacl –m u:tg:rx /share/jiaowu
第七节 Samba其他使用
客户端挂载到本地使用
mount -t cifs -o username=用户 原路径 目标路径
例如:
mount -t cifs -o username=user1 //192.168.44.3/pub /test
开机自动挂载
vi /etc/fstab //192.168.44.3/pub /test cifs defaults,username=user1,password=456 1 2
Samba别名
Linux的用户如root、nobody在Windows中可能对应的用户是administrator、guest用户Samba是跨平台的,所以用别名让他们可以通用
别名文件
vi /etc/samba/smbusers
原名 = 别名 (多个别名 空格隔开) user1 = lamp1
配置文件中开启别名
vi /etc/samba/smb.conf
加入 username map = /etc/samba/smbusers
重启,就可以使用别名访问samba了
总结
Vsftp:
- 内网 外网服务器: Windows Linux
- 客户端: Windows Linux
- 用户: 系统用户,系统密码
- 缺点:不能直接在服务器上修改文件
Samba
- 内网使用服务器: Windows Linux
- 客户端: Windows Linux
- 用户: 系统用户,samba密码
- 缺点: 只能在内网使用