1、Samba简介
1.1 数据共享方法 Windows和Linux方法无法在两个系统中通用
Windows中最常见的是“网上邻居”。网上邻居使用的文件系统是CIFS(通用互联网文件系统)协议进行数据分享 无法跨路由、无法跨网段
Linux中最常用的是NFS服务
1.2 Samba的由来
在1991年Andrew tridgell为了实现Unix和Windows之间文件共享,开发了SMB(Server Message Block,服务消息块)文件系统
由于SMB无法注册,就取名为Samba,热情的桑巴舞
1.3 Samba与NetBIOS协议
IBM开发的NetBIOS协议是为了局域网内少数计算机进行通信的协议。
Samba基于NetBIOS协议开发
所以可以和Windows通信,但是只能在局域网通信
1.4 Samba主要应用
文件共享
打印服务器
Samba登录时身份验证
可以进行Windows的主机名解析
1.5 常见文件服务器的比较
服务名称 |
适用范围 |
服务器端 |
客户端 |
局限性 |
FTP |
内网和公网 |
Windows、Linux |
Windows、Linux |
无法直接在服务器端修改数据 |
Samba |
内网 |
Windows、Linux |
Windows、Linux |
只能在内网使用 |
NFS |
内网和公网 |
Linux |
Linxu |
只能在Linux之间使用 |
2、Sanba安装与端口
2.1 安装
samba 主服务包
samba-client 客户端
samba-common 通用工具
samba4-libs 库
samba-winbind Windows域映射
samba-winbind-clients 域映射客户端
2.2 samba的守护进程
smbd:提供对服务器中文件、打印资源的共享访问139 445
nmbd:提供基于NetBIOS主机名称的解析 137 138
2.3 启动samba服务
$ service smb start
$ service nmb start
3、Samba相关文件
3.1 常用文件
/etc/samba/smb.conf 配置文件
/etc/samba/lmhosts 对应的NetBIOS名与主机的IP的文件,一般samba会自动搜索(只对本级有效)
/etc/samba/smbpasswd samba密码保存文件,默认不存在,如果需要,手工建立
/etc/samba/smbusers 用户别名,用于适用于不同操作系统中用户名习惯。需要配置文件中“username map”选项支持
3.2 常用命令
testparm 检测配置文件是否正确
4、配置文件详解
4.1 配置文件结构
Global Setting
[global] 全局设置
Share Definitions
[homes] 用户目录共享设置
[printers] 打印机共享设置
[myshare] 自定义名称的共享目录设置
4.2 Global Setting
workgroup 所在工作组名称
server string 服务器描述信息
log file 日志文件位置
max log size 日志文件的最大容量
security 安全级别,可用值如下
share 不需要密码可以访问
user 使用系统用户,samba密码登录
server 由其他服务器提供认证
domain 由域控制器提供认证
4.3 Share Definitions
comment 描述信息
path 共享的路径
guest ok 允许所有人访问,等同于public
read only 所有人只读
writable 所有人可写
write list 拥有写权限的用户列表
browseable 是否 浏览 可见
valid users 指定可以访问的用户
4.4 常见的变量
%v samba的版本号
%s 任意用户都可以登录
%m client端的NetBIOSD主机名
%L 服务器端的NetBIOS主机名
%u 当前登陆的用户名
%g 当前登录的用户组名
5、Samba基本使用
5.1 share访问权限
5.1.1 share基本使用
share权限访问
客户端的使用
user级别访问
添加、删除、查看用户
5.1.2 配置文件修改
[global]
workgroup=MYGROUP
server string=Samba Server Lamp
log file=/var/log/samba/log.%m
max log size=50
security=share
passdb backend=tdbsam
Share Definitions
[movie]
comment=study material
path=/study
browseable=yes
writable=yes
guest ok=yes
5.1.3 建立共享目录
$ mkdir /study 建立共性目录
$ chown nobody /study/
5.1.4 测试配置文件
$ testparm
5.1.5 重启Samba服务
$ service smb restart
$ service nmb restart
5.2 客户端的使用
5.2.1 Windwos客户端访问
网上邻居访问
\\192.168.44.4
5.2.2 Linux客户端访问
$ smbclient -L 192.168.44.4 查看主机的共享资源
$ smbclient //192.168.44.4/movie 访问共性目录
5.2.3 思考
为什么我拥有writable=yes权限,为什么依然无法上传数据
5.3 user级别访问
5.3.1 配置文件修改
[global]
workgroup=MYGROUP
server string=Samba Server Lamp
log file=/var/log/samba/log.%m
max log size=50
security=user
passdb backend=tdbsam
5.3.2 Share Definitions
[homes]
comment=Home Directories
browseable=no
writable=yes
[pub]
path=/public
browseable=no(后果是什么)
writable=yes
writ list=sc
5.3.3 建立共享目录与测试配置文件
$ mkdir /public
$ testparm
5.3.4 重启Samba服务
$ service smb restart
$ service nmb restart
5.3.5 添加Samba用户
$ smbpasswd –a 系统用户名 注意,要给用户添加samba密码,该用户必须已经是系统用户
FTP:使用系统用户,系统密码登录
Samba:使用系统用户,Samba登录
5.3.4 权限设定
如果要想访问与上传:
Linux系统权限需要允许
Samba服务权限也需要与允许
5.4 添加删除查看用户
5.4.1 添加samba用户
注意用户必须已经是系统用户,才能添加为samba用户
$ pdbedit -a -u 系统用户
或 $ smbpasswd –a 系统用户名
5.4.2 删除samba用户
$ pdbedit -x -u 系统用户名
或 $ smbpasswd –x 系统用户
5.4.3 查看samba用户
$ pebedit -L
6、Samba访问实验
6.1 Samba共享目录权限
系统权限要对共享目录生效
Samba服务器权限也会对共享目录声响
在实际工作中,可能的共享目录众多、用户众多、权限交叉。建议使用系统权限控制共享目录权限,而不是使用samba权限。
6.2 举例
6.3 Samba共享目录
[教学]
path=/share/jiaoxue
browseable=yes
writable=yes
[教务]
path=/share/jiaowu
browseable=yes
writable=yes
6.4 Linux系统控制权限 ACL权限解决复杂权限问题
教学的权限
$ 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:rwx /share/jiaowu
$ setfacl -m u:tg:rwx /share/jiaowu
7、Samba其他使用
7.1 客户端挂载到本地使用
$ mount –t cifs –o username=用户 原路径 目标路径
例如
$ mount –t cifs –o username=user1 //192.168.44.3pub /test
自动挂载
$ vi /etc/fstab
//192.168.44.3/pub /test cifs defaults,username=user1,password=126 1 2
7.2 Samba别名
Linux的用户如root、nobody在Window中可能对应的用户是Administrator、guest用户
Samba是跨平台的,所以用别名让他们可以通用
别名文件
$ vi /etc/samba/smbusers
原名=别名(多个别名 空格隔开)
user1=lamp1
配置文件中开启别名
$ vi /etc/samba/smb.conf
加入
username map=/etc/samba/smbusers
重启,就可以使用别名访问samba了
7.3 总结
vsftp
内网 外网 服务器:W L 客户端:W L
用户:系统用户,系统密码
缺点:不能直接在服务器上修改文件
Samba
内网使用 服务器:W L 客户端:W L
用户:系统用户,samba密码
缺点:只能在内网使用