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

man--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*

results matching ""

    No results matching ""