Samba--百度脑图
1.Samba服务基础
1.1Samba软件的组成
软件包的构成
查看系统当前关于samba的软件包信息
[root@test1 Desktop]# rpm -qa | grep "^samba"
samba-winbind-clients-3.6.9-164.el6.x86_64
samba-client-3.6.9-164.el6.x86_64
samba4-libs-4.0.0-58.el6.rc4.x86_64
samba-3.6.9-164.el6.x86_64
samba-winbind-3.6.9-164.el6.x86_64
samba-common-3.6.9-164.el6.x86_64
[root@test1 Desktop]#
安装Samba
[root@test1 Desktop]# mount /dev/cdrom /mnt
mount: block device /dev/sr0 is write-protected, mounting read-only
mount: /dev/sr0 already mounted or /mnt busy
mount: according to mtab, /dev/sr0 is already mounted on /mnt
[root@test1 Desktop]# cd /mnt/Packages/
[root@test1 Packages]# rpm -ivh samba-3.6.9-164.el6.x86_64.rpm
warning: samba-3.6.9-164.el6.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
Preparing... ########################################### [100%]
package samba-0:3.6.9-164.el6.x86_64 is already installed
[root@test1 Packages]# rpm -qa | grep samba
samba-winbind-clients-3.6.9-164.el6.x86_64
samba-client-3.6.9-164.el6.x86_64
samba4-libs-4.0.0-58.el6.rc4.x86_64
samba-3.6.9-164.el6.x86_64
samba-winbind-3.6.9-164.el6.x86_64
samba-common-3.6.9-164.el6.x86_64
[root@test1 Packages]#
安装完成,但是发现依旧是找不到这个包
Samba服务的程序组件
- smbd 负责为客户机提供服务器中共享资源(目录和文件等)的访问
- nmbd负责提供基于NetBIOS协议的主机名称解析,以便为Windows网络中的主机进行查询服务
service smb start
service nmb start
1.2主配置文件smb.conf
[root@prtsvr Packages]# grep -v "#" /etc/samba/smb.conf | grep -v "^;" | grep -v "^$"
[global]
workgroup = MYGROUP
server string = Samba Server Version %v
log file = /var/log/samba/log.%m
max log size = 50
security = user
passdb backend = tdbsam
load printers = yes
cups options = raw
[homes]
comment = Home Directories
browseable = no
writable = yes
[printers]
comment = All Printers
path = /var/spool/samba
browseable = no
guest ok = no
writable = no
printable = yes
[root@prtsvr Packages]#
[global]
这部分置项的内容对整个Samba服务器都有效
[homes]
宿主目录共享设置
设置linux用户的默认共享,对应用户的宿主目录。当用户访问服务器中与自己用户名同名的共享目录时,通过验证后将会自动映射到该用户的宿主文件夹中
[printers]
printers略
Samba服务器的常见配置项及含义说明
全局配置项的含义
配置项 | 说明 |
---|---|
workgroup | 设置服务器所在的工作组名称,例如“WORKGROUP”(Windows主机默认工作组名) |
server string | 设置服务器的说明文字,用于描述Samba服务器 |
security | 设置服务器的安全级别,可设为以下4个值中的一个:share(可匿名访问)、user(需由本服务器验证用户名及密码)、server(由另一台服务器验证用户名及密码)、domain(由Windows域控制器验证用户名及密码) |
log file | 设置Samba服务器的日志文件,默认设置为“/var/log/samba/%m.log”,表示日志文件保存到/var/log/samba/目录中,按每个客户机建立一个日志文件,“%m”变量表示客户端主机名或IP地址 |
max log size | 设置日志文件的最大容量,默认为50,表示50KB(默认单位为KB) |
常见共享目录配置项的含义
配置项 | 说明 |
---|---|
comment | 设置对应共享目录的注释、说明信息 |
path | 设置对应共享目录在服务器中的文件夹路径 |
browseable | 设置该共享目录在“网上邻居”中是否可见,设置为no时相当于隐藏共享目录 |
guest ok | 设置共享目录是否所有人都可以访问,与public配置项作用相同 |
writable | 设置该共享目录是否可写,与read only的作用相反 |
- 控制Samba用户访问共享目录的读取、写入权限时,注意要满足一个前提条件,即与该Samba用户同名的系统用户对服务器中的共享目录(如“/var/public/movies”)也必须有相应的读取、写入权限
testparm
使用testparm工具可以对smb.conf配置文件的正确性进行检查,如果发现有错误将会进行提醒。
2.构建文件共享服务器
2.1可匿名访问的共享
A.修改安全级别
以/media/cdrom共享为例
mount /dev/cdrom /mdeida/cdrom
vi /etc/samba/smb.conf
[global]
workgroup = WORKGROUP //使用Windows主机的默认工作组
security = share //默认允许匿名访问
...//省略
[rhel6]
comment = RHEL 6.5 DVD directory.
path = /media/cdrom
public = yes
read only =yes
重新加载配置
service smb reload
B.添加一段共享目录配置
2.2需用户验证的共享
A.建立Samba用户数据库
添加共享用户
pdbedit -a -u jason
列出所有Samba用户
pdbedit -L
只列出jason用户,输出详细信息
pdbeidt -vL jason
删除Samba用户jason
pdbedit -x -u jason
B.设置用户访问授权
- 创建共享用户vanko、hunter,确认共享目录
useradd vanko
useradd hunter
pdbedit -a -u vanko
pdbedit -a -u hunter
mkdir /opt/mytools
- 修改smb.conf配置文件,添加名为tools的共享目录配置段
vi /etc/samba/smb.conf
[global]
security = user //提升默认的安全级别
...// 省略
[tools]
comment = You can get software tools from here.
path = /opt/mytools
public = no
read only = yes
valid users = vanko, hunter
writ list = hunter
- 重新加载配置,或重启smb服务
service smb reload
C.确定目录访问授权
- 修改服务器本机的文件夹权限
chmod 777 /opt/mytools
- 设置共享用户所上传的文件,创建的子目录的默认权限
vi /etc/samba/smb.conf
[tools]
...//省略
directory mask = 0755
cteate mask = 0644
- 重新加载配置
service smb reload
2.3用户映射及访问地址限制
A.共享账号映射(别名)
- Samba共享账号的映射文件位置/etc/samba/smbusers
cat /etc/samba/smbusers
# Unix_name = SMB_name1 SMB_name2 ...
root = administrator admin
nobody = guest pcguest smbguest
当客户机以用户administratorhuo admin访问共享时,Samba服务器将其视为本机的共享用户root
用户guest、pcguest等呗映射为共享用户nobod。
- 添加新的映射账号
vi /etc/samba/smbusers
...//省略
vanko = sunboy player
- 添加映射的全局配置
vi /etc/samba/smb.conf
[global]
username map = /etc/samba/smbusers
... //省略
- 重新加载配置
service smb reload
B.访问地址限制
- hosts allow
仅允许访问共享的客户机地址
- hosts deny
仅拒绝访问的共享的客户机地址
- 以仅允许192.168.4.0/24,173.17.0.0/16网段的客户机访问Samba服务器
vi /etc/samba/smb.conf
[global]
hosts allow = 192.168.4 173.17.
... //省略
- 重新加载配置
service smb reload
3.访问共享文件夹
3.1使用smbclient访问共享文件夹
A.查询目标主机的共享资源列表
- 匿名查询192.168.4.11中提供的共享资源列表
smbclient -L 192.168.4.11 -U hunter
B.登录并访问共享文件夹
- 对于允许匿名访问的文件夹
smbclient //192.168.4.11/rhel6
- 对于需要用户验证的文件夹
smbclietn -U sunboy //192.168.4.11/tools -U hunter
- 成功登录后
- pwd
- ls
- lcd 将本地目录切换到
- cd
- mget 下载
- put 上传
- quit 退出
3.2使用mount挂载共享文件
- 以共享用户hunter进行验证,将Samba服务器192.168.4.11中的tools共享目录挂载到本地的/media/smbdir/文件夹
mkdir /media/smbdir
mount -o username=hunter //192.168.4.11/tools /media/smbdir/
mount | tail -1
- 对Samba服务器设置的访问权限进行测试
cd /media/smbdir
mkdir mydir
touch myfile
ls -ld my*