Samba配置

最近在Fedora 18上用samba做NAS学习,做了点笔记:(此samba版本为 4.0.6) 

samba 配置步骤:

1.修改Selinux ; setenforece 0;

2. smb.conf 全局与指定共享 设置;

3.本地资源权限配置;  chmod xxx  /共享目录 ;  (最终samba共享权限由samba配置权限与linux权限共同决定)

4.检查smb.conf 配置; testparm ;

5.重启samba 服务;  systemctl restart smb.service;

 

以下为几种配置模式:

[homes]  


  comment   =   Home   Directories  

  browseable   =   no  

  writable   =   yes  

  valid   users   =   %S  

  create   mode   =   0777  

  directory   mode   =   0777  


每个用户可以访问自己的宿主目录,并且只有该用户能访问宿主目录,并具有完全的权限,而其他人不能看到你的宿主目录。


[share]  
  comment   =   public1
  path   =   /home/samba/public1
  public   =   no  
  valid   users   =   @group1,@group2,cc    (  如果没有此行,其它人也可以读 )   
  write   list   =   cc

  read   list   = @goup1,@group2

  printable   =   no    

  browseable = no  
建立一个public1的文件夹,希望group1组和group2组的人有读权限,cc有读写的权限。而且不显示(外人看不到)。


 [exchage]  
  comment   =   Exchange   File   Directory  
  path   =   /home/samba/exchange  
  public   =   yes  
  writable   =   yes  
  

 chmod 1777 /home/samba/exchange

  #建立一个文件交换目录exchange,所有人都能读写,但每个人不能删除别人的文件。


  [public]  
  comment   =   Read   Only   Public  
  path   =   /home/samba/public  
  public   =   yes  
  read   only   =   yes  
建议一个公共的只读文件夹public,所有人只读这个文件夹的内容。


chcon  -R  -t samba_share_t /directory        //改变目录的安全上下文


注意:(这是个人测试的情况,不敢确定对其它环境有效)  

1.选 项优先级:

invalid users (valid users)  -->writable -->write list -->read list (read only)

public --> guest ok

当readonly、read list、writable及write users在对某一共享资源的设置发生冲突时,使用以下规则。

(1) readonly、writeable发生冲突时,在后面的参数优先。如下面例子中所有用户对smbtest不可写。


  1. [smbtest]  
  2.      comment = This is smb test  
  3.      path = /test  
  4.      readonly = yes 
  5.      writeable = no 


(2)readonly、write list发生冲突时,除write list指定用户可写外,其他用户只读。如下面例子中tonyzhang可写,其他用户只读。


  1. [smbtest]  
  2.      comment = This is smb test  
  3.      path = /test  
  4.      readonly = yes 
  5.      write list = tonyzhang 


(3)read list、writable发生冲突时,除read list指定用户只读外,其他用户可写。如下面例子中tonyzhang只读,其他用户可写。


  1. [smbtest]  
  2.      comment = This is smb test  
  3.      path = /test  
  4.      writable = yes 
  5.      read list = tonyzhang 


(4)read list、write list发生冲突时,write list优先。如下面例子中tonyzhang可写。


  1. [smbtest]  
  2.      comment = This is smb test  
  3.      path = /test  
  4.      write list = yes 
  5.      read list = tonyzhang 


(5)writeable = no时,write list的配置无效。如下面例子中tonyzhang及tomyang不可写。


  1. [smbtest]  
  2.      comment = This is smb test  
  3.      path = /test  
  4.      writeable = no 
  5.      write list = tonyzhang tomyang  


(6)同时配置writeable=yes、write list时writeable=yes无效。如下面例子中只有tonyzhang及tomyang可写。


  1. [smbtest]  
  2.      comment = This is smb test  
  3.      path = /test  
  4.      writeable = yes 
  5.      write list = tonyzhang tomyang  



2. 有read list /write list 时一定要有valid users /invalid users,否则其他人(不在read list /write list 中)也可以读(此时public 无效)。

public = No
        valid users = @smbusr,@caiwu
read only = No  /Yes     (只有smbusr,caiwu组的人能写/读)    

write list = @smbusr
        read list = @caiwu
        public = No                (此时只有smbuse组的人可写,caiwu组的人可读,其他用户也可读,故要屏蔽其他用户,需要加上valid users /invalid users)


Samba预设变量


变量名

作    用

变量名

作    用

%S

当前服务名(如果存在)

%L

Samba服务器的

NetBIOS名

%P

当前服务的根目录

(如果存在)

%N

NIS服务器主机名

%u

当前服务的用户名

(如果存在)

%p

NIS服务器家目录

%g

当前用户的初始组

%R

采用协议等级

%U

当前连接的用户名

%d

Samba服务的进程ID

%G

当前连接用户的初始组

%a

访问Samba服务器的

客户端系统

%D

当前用户所属域或工作组名称

%I

访问Samba服务器的

客户端IP地址

%H

当前服务用户的家目录

%M

访问Samba服务器的

客户端主机名

%v

Samba服务器的版本

%m

访问Samba服务器的

客户端NetBIOS名

%h

Samba服务器的主机名

%T

Samba服务器日期及时间




当在btrfs 文件系下做samba 共享时:要确定 chmod  xxxx  目录; 权限配置


以下是一个BTRFS的一些操作:

Btrfs
#mkfs.btrfs /dev/sda5 
#mkdir /btrfsdisk 
#mount – t btrfs /dev/sda5 /btrfsdisk


#btrfs-convert /dev/sdb2   //Ext3/4 ->Btrfs


#btrfsctl – r -300M /btrfsdisk   //文件系统动态 缩小/扩大


#mkfs.btrfs –d raid1 /dev/sda6 /dev/sda7  //将数据配置为raid1 
#mkfs.btrfs –m raid1 /dev/sda6 /dev/sda7  //将元数据配置为raid1
#mount – t btrfs /dev/sda6 /btrfsdisk


#btrfs-vol – a /dev/sda8 /btrfsdisk  //为文件系统添加新的磁盘设备


#mount – t btrfs – o SSD /dev/sda5 /btrfsdisk  //打开btrfs针对ssd的优化


#mount – t btrfs – o compress /dev/sda5 /btrfsdisk //打开压缩功能


#btrfsctl – c /btrfsdisk  //同步文件系统 (立即执行IO)




#btrfs-debug-tree /dev/sda5  //Debug 显示btrfs元数据