# Samba 服务实践# 一、Samba 概述SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同操作系统的计算机之间提供文件及打印机等资源的共享服务。SMB 协议是客户机 / 服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。如图:
1. ftp 的优缺点:
优点:文件传输、应用层协议、可跨平台
缺点:只能实现文件传输,无法实现文件系统挂载;无法直接修改服务器端文件
2. Samba 的特性:
使用 smb/cifs 协议、可跨平台、可实现文件系统挂载、可实现服务器端修改文件
3. smb 协议和 cifs 之间的关系
随着 Internet 的流行,Microsoft 希望将这个协议扩展到 Internet 上去,成为 Internet 上计算机之间相互共享数据的一种标准。因此它将原有的几乎没有多少技术文档的 SMB 协议进行整理,重新命名为 CIFS(Common Internet File System),它使程序可以访问远程 Internet 计算机上的文件并要求此计算机提供服务 。客户程序请求远在服务器上的服务器程序为它提供服务。服务器获得请求并返回响应。CIFS 是公共的或开放的 SMB 协议版本,并由 Microsoft 使用。SMB 协议在局域网上用于服务器文件访问和打印的协议。
4. 常见文件服务器对比
服务名称 使用范围 服务端 客服端 局限性 FTP 内网和公网 Windows、Linux Windows、Linux 无法直接在服务器端修改数据 Samba 内网 Windows、Linux Windows、Linux 只能在内网使用 NFS 内网和公网 Linux Linux 只能 Linux 之间使用
# 二、Samba 部署[ root@samba ~] [ root@samba ~] [ root@samba ~] tcp 0 0 0.0 .0.0:139 0.0 .0.0:* LISTEN 1739 /smbd tcp 0 0 0.0 .0.0:445 0.0 .0.0:* LISTEN 1739 /smbd tcp6 0 0 :::139 :::* LISTEN 1739 /smbd tcp6 0 0 :::445 :::* LISTEN 1739 /smbd [ root@samba ~]
# 三、Samba 配置文件详解[ root@samba ~] [ global] workgroup = SAMBA security = user passdb backend = tdbsam printing = cups printcap name = cups load printers = yes cups options = raw [ homes] comment = Home Directories valid users = %S, %D%w%S browseable = No read only = No inherit acls = Yes [ printers] comment = All Printers path = /var/tmp printable = Yes create mask = 0600 browseable = No [ print$] comment = Printer Drivers path = /var/lib/samba/drivers write list = @printadmin root force group = @printadmin create mask = 0664 directory mask = 0775
# 3.1 全局参数详解workgroup = WORKGROUP server string = Samba Server Version %v hosts allow = 127 . 192.168 .1. 192.168 .10.1 log file = /var/log/samba/log.%m passdb backend = tdbsam security = user max connections = 0 load printers = yes/no printcap name = cupsprinting = cups
# 3.2 共享参数详解[ 共享名] comment = 任意字符串 path = 共享目录路径 guest ok = yes/no read only = yes writable = yes/no write list = 允许写入该共享的用户browseable = yes/no valid users = 允许访问该共享的用户
# 四、Samba share 权限访问[ root@samba ~] [ global] workgroup = workgroup security = User map to guest = Bad User passdb backend = tdbsam printing = cups printcap name = cups load printers = yes cups options = raw [ homes] comment = Home Directories valid users = %S, %D%w%S browseable = No read only = No inherit acls = Yes [ printers] comment = All Printers path = /var/tmp printable = Yes create mask = 0600 browseable = No [ print$] comment = Printer Drivers path = /var/lib/samba/drivers write list = @printadmin root force group = @printadmin create mask = 0664 directory mask = 0775 [ Public Share] comment = This is public share path = /data browseable = yes writable = yes guest ok = yes [ root@samba ~] [ root@samba ~] [ root@samba ~] [ root@samba ~] drwxr-xr-x. 5 root root 49 Jun 23 14 :26 /data/ [ root@samba ~] [ root@samba ~] drwxr-xr-x. 5 nobody root 73 Jun 25 14 :22 /data
# 五、Linux 客户端命令行工具[ root@qnyp-client1 ~] [ root@samba-client ~] [ root@samba-client ~] [ root@samba-client ~] [ root@samba-client ~] [ root@samba-client ~]
# 六、Samba user 级别访问[ root@samba ~] [ global] workgroup = SAMBA security = user passdb backend = tdbsam printing = cups printcap name = cups load printers = yes cups options = raw [ homes] comment = Home Directories valid users = %S, %D%w%S browseable = No read only = No inherit acls = Yes [ printers] comment = All Printers path = /var/tmp printable = Yes create mask = 0600 browseable = No [ print$] comment = Printer Drivers path = /var/lib/samba/drivers write list = @printadmin root force group = @printadmin create mask = 0664 directory mask = 0775 [ cawu_share] comment = This is caiwu share path = /public browseable = yes writable = yes write list = yangxiao valid users = yangxiao [ root@samba ~] [ root@samba ~] [ root@samba ~] [ root@samba ~] [ root@samba ~] [ root@samba ~] drwxr-xr-x 2 root root 6 Jun 25 20 :25 /public/ [ root@samba ~] [ root@samba ~] drwxr-xr-x 2 yangxiao yangxiao 55 Jun 25 20 :44 /public/
注释 valid users = yangxiao 后发现用户 weiyixiao 可以访问共享目录,但是无法上传 注释 valid users = yangxiao,write list = yangxiao 后发现用户 weiyixiao 可以访问共享目录,仍然无法上传,原因 public 目录没有系统的写入权限 [ root@samba ~] [ global] workgroup = SAMBA security = user passdb backend = tdbsam printing = cups printcap name = cups load printers = yes cups options = raw [ homes] comment = Home Directories valid users = %S, %D%w%S browseable = No read only = No inherit acls = Yes [ printers] comment = All Printers path = /var/tmp printable = Yes create mask = 0600 browseable = No [ print$] comment = Printer Drivers path = /var/lib/samba/drivers write list = @printadmin root force group = @printadmin create mask = 0664 directory mask = 0775 [ cawu_share] comment = This is caiwu share path = /public browseable = yes writable = yes ; write list = yangxiao ; valid users = yangxiao [ root@samba ~] [ root@samba ~] [ root@samba ~] drwxr-xr-x 2 yangxiao yangxiao 55 Jun 25 20 :44 /public/ [ root@samba ~] [ root@samba ~] [ root@samba ~]
# 七、添加删除 Samba 用户[ root@manager ~] [ root@manager ~] [ root@samba ~] yangxiao:1003: test:1005: weiyixiao:1004: [ root@samba ~] Deleted user test. [ root@samba ~] yangxiao:1003: weiyixiao:1004: [ root@manager ~]
# 八、Samba 企业实战
# 8.1 Samba 服务器需求每位员工有独立的目录,可上传、可读、可写、可删除权限,但目录本身员工不可删除 每位员工可见公司共享目录 public_share(只读) 部门内部员工可见部门共享目录_caiwu_share(读写) # 8.2 Samba 服务安装# 8.3 Samba 服务配置[ root@Harbor public_share] [ global] workgroup = SAMBA security = user passdb backend = tdbsam printing = cups printcap name = cups load printers = yes cups options = raw [ homes] comment = Home Directories valid users = %S, %D%w%S browseable = No read only = No inherit acls = Yes [ printers] comment = All Printers path = /var/tmp printable = Yes create mask = 0600 browseable = No [ print$] comment = Printer Drivers path = /var/lib/samba/drivers write list = @printadmin root force group = @printadmin create mask = 0664 directory mask = 0775 [ public_share] comment = This is public share path = /samba_share/public_share browseable = yes writable = yes [ yewu_share] comment = This is caiwu share path = /samba_share/yewu_share browseable = yes writable = yes [ caiwu_share] comment = This is yewu share path = /samba_share/caiwu_share browseable = yes writable = yes [ root@samba ~]
# 8.4 创建共享目录[ root@samba ~] [ root@samba ~] [ root@samba samba_share] [ root@samba samba_share] [ root@samba samba_share] [ root@samba ~] drwxr-xr-x 2 root root 6 Jun 26 11 :27 /samba_share/yewu_share [ root@samba ~] drwxr-xr-x 2 root root 6 Jun 26 11 :26 /samba_share/caiwu_share [ root@samba ~] drwxr-xr-x 2 root root 6 Jun 26 11 :27 /samba_share/public_share
# 8.5 添加用户并设置 smb 密码[ root@samba ~] [ root@samba ~] [ root@samba ~] [ root@samba ~] [ root@samba ~] [ root@samba ~] [ root@samba ~] [ root@samba ~] [ root@samba ~] [ root@samba ~] [ root@samba ~] wangyuyan:1002: duanyu:1004: qiaofeng:1006: azhu:1003: xuzhu:1005:
# 8.6 为用户添加 ACL 权限[ root@samba ~] [ root@samba ~] [ root@samba ~] getfacl: Removing leading '/' from absolute path names user::rwx user:qiaofeng:r-x group::--- mask::r-x other::--- [ root@samba ~]
# 8.7 为组添加 ACL 权限[ root@samba ~] [ root@samba ~] [ root@samba ~] [ root@samba ~] [ root@samba ~] [ root@samba ~] [ root@samba ~] [ root@samba ~] [ root@samba ~] [ root@samba ~] [ root@samba ~] [ root@samba ~] [ root@samba ~] [ root@samba ~] [ root@samba ~] getfacl: Removing leading '/' from absolute path names user::rwx group::--- group:yewu:rwx mask::rwx other::--- [ root@samba ~] getfacl: Removing leading '/' from absolute path names user::rwx group::--- group:caiwu:rwx mask::rwx other::--- [ root@samba ~] getfacl: Removing leading '/' from absolute path names user::rwx user:qiaofeng:r-x group::--- group:caiwu:r-x group:yewu:r-x mask::r-x other::--- [ root@samba ~] [ root@samba ~]
# 九、Samba 挂载及别名# 9.1 Samba 挂载[ root@samba ~] [ root@samba ~] [ root@samba ~]
# 9.2 Samba 别名[ root@samba ~] .. .[ global] workgroup = workgroup security = user username map = /etc/samba/smbusers .. .[ root@samba ~] .. .wangyuyan = zhangsan lisi