天天看点

samba实现与windows共舞

##########################################################

闲扯Samba

Windows作为服务端

Linux作为服务端

################################################################

   最近几个月看的东西有点多,事也多,一直抽不开身写博文。总结的东西倒是不少,但自己还未能完全消耗形成完善的体系,所以拿不出手的东西写了是一定会误导博友的,正好最近用到samba就顺便总结下基础服务。感觉自己欠下好多博文,深入浅出的博文确实不好写,只能慢慢来了,当作锻炼自己。

   windows和Linux之间通过FTP共享文件,不方便用户使用,于是samba就诞生了。啥是samba?samba是干啥的呢?简单的来说samba是CIFS/SMB协议的一种实现,CIFS/SMB协议实现了跨平台文件共享,windows的网上邻居就是使用CIFS协议,因此Samba可以实现linux和windows之间的文件共享。需要特别说明的是客户端访问samba服务的用户账户一定是系统用户,而密码则是由samba自己维护的,接下来通过介绍linux和windows之间共享文件的模式来进一步了解samba是什么。

   这种工作模型下,linux将作为客户端访问windows,所以linux需要安装客户端软件,并且需要访问凭证,文件的最终访问权限为共享权限和文件系统权限二者的交集,首先我们看看windows作为服务端是如何共享出资源的。

   创建test用户

<a href="http://s3.51cto.com/wyfs02/M00/23/A9/wKiom1M9ir2QjGA4AAIZfsYbrRc856.jpg" target="_blank"></a>

   添加文件系统权限

<a href="http://s3.51cto.com/wyfs02/M01/23/A9/wKiom1M9i1mBACtWAAFpfZwrBuM968.jpg" target="_blank"></a>

   添加共享权限

<a href="http://s3.51cto.com/wyfs02/M02/23/A9/wKiom1M9i3iTrM7XAAJ6kWwPB8c160.jpg" target="_blank"></a>

   linux作为客户端需要安装客户端工具

1

<code>yum </code><code>install</code> <code>samba-client -y</code>

   列出服务共享的目录列表

<code>smbclient -L 192.168.1.201 -U </code><code>test</code>

<a href="http://s3.51cto.com/wyfs02/M02/23/AA/wKioL1M9jDiy6pTOAAK4e7FOeZw527.jpg" target="_blank"></a>

   进入共享目录进行上传、下载等操作

<code>smbclient </code><code>//192</code><code>.168.1.201</code><code>/testdir</code>  <code>-U </code><code>test</code>

<a href="http://s3.51cto.com/wyfs02/M00/23/AA/wKioL1M9jQLTgANSAAGSPobm69k296.jpg" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M02/23/A9/wKiom1M9jWHS6ICyAAEvorPE6cM037.jpg" target="_blank"></a>

   挂载共享目录至本地

2

3

<code>mkdir</code> <code>/winfs</code>

<code>mount</code> <code>-t cifs -o username=</code><code>test</code><code>,password=123 </code><code>//192</code><code>.168.1.201</code><code>/testdir</code> <code>/winfs</code>

<code>touch</code> <code>/winfs/test</code>

<a href="http://s3.51cto.com/wyfs02/M02/23/AA/wKioL1M9j3GTb1WSAAExfOfYVQA263.jpg" target="_blank"></a>

   linux作为服务端需要安装samba主包,samba还支持web-gui化管理工具swat,samba的选项有很多,兴趣的朋友可以自行研究,这里以实际案例来演示samba的在工作中是如何使用的。    

   安装samba

<code>yum </code><code>install</code> <code>-y samba</code>

<code>setenforce 0            </code><code>#samba会受到selinux的影响</code>

   启动服务查看监听端口

4

<code>for</code> <code>i </code><code>in</code> <code>smb nmb; </code><code>do</code> <code>service $i restart; </code><code>done</code>

<code>netstat</code> <code>-tunlp</code>

<code>smbd负责文件共享   port 445</code>

<code>nmbd负责NetBIOS   port 137 138 139</code>

实战需求:任何用户访问samba服务必须经过认证,每个用户有自己的目录并且只有自己可以看到,public为公共目录任何人都可以增删改,tom,lucy属于ios部门,ios部门有自己专属的同名目录并且只有所属职员有增删改权限;bob,jim属于web部门,web部门有专属的同名目录并且只有所属职员有增删改权限。

   创建公共目录

<code>mkdir</code> <code>-pv </code><code>/office/public</code>

<code>mkdir</code> <code>-pv </code><code>/office/ios</code>

<code>mkdir</code> <code>-pv </code><code>/office/web</code>

<code>mkdir</code> <code>-pv </code><code>/office/users</code>

   批量创建用户、用户目录、添加用户到指定组、修改用户目录权限脚本(如果在想在/home下就很简单,直接创建用户就可以,不用这么麻烦,这里只是为了更清楚的印证文件最终权限为共享权限和文件系统权限二者的交集)

5

6

7

8

9

10

11

12

<code>#!/bin/bash</code>

<code>#</code>

<code>users</code><code>=</code><code>'bob jim'</code>

<code>path=</code><code>'/office/users/'</code>

<code>group=</code><code>'web'</code>

<code>groupadd $group &amp;&gt;</code><code>/dev/null</code>

<code>for</code> <code>i </code><code>in</code> <code>$</code><code>users</code><code>;</code>

<code>do</code>

<code>    </code><code>useradd</code> <code>-g $group -r $i &amp;&gt;</code><code>/dev/null</code> <code>&amp;&amp; </code><code>echo</code> <code>"Add $i succeed in $group ."</code>

<code>    </code><code>mkdir</code> <code>-pv $path$i &amp;&gt; </code><code>/dev/null</code> <code>&amp;&amp; </code><code>echo</code> <code>"mkdir $path$i succeed ."</code>

<code>    </code><code>setfacl -m u:$i:rwx $path$i &amp;&amp; </code><code>echo</code> <code>"$path$i permission ok"</code>

<code>done</code>

   为ios、web目录设置权限,根据自己的需要做出设置

<code>setfacl -m g:ios:rwx </code><code>/office/ios</code>    <code>#为目录定义用户权限</code>

<code>setfacl -m g:web:rwx </code><code>/office/web</code>    <code>#为目录定义组权限</code>

<code>chmod</code> <code>o-r </code><code>/office/ios</code>               <code>#ios组以外的用户无法进入ios目录</code>

<code>chmod</code> <code>o-r </code><code>/office/web</code>               <code>#web组以外的用户无法进入web目录</code>

<code>chmod</code> <code>o+r </code><code>/office/ios</code>               <code>#ios组以外的用户只能查看,无法删、改</code>

<code>chmod</code> <code>o+r </code><code>/office/web</code>               <code>#web组以外的用户只能查看,无法删、改</code>

   主配置文件/etc/samba/smb.conf

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

<code>[global]</code>

<code>    </code><code>netbios name = Linux File Server        </code><code>#辅助名称</code>

<code>    </code><code>server string = Samba                   </code><code>#服务名称</code>

<code>    </code><code>smb </code><code>passwd</code> <code>file</code> <code>= </code><code>/etc/samba/smbpasswd</code>  <code>#密码文件存放位置</code>

<code>    </code><code>log </code><code>file</code> <code>= </code><code>/var/log/samba/log</code><code>.%m        </code><code>#日志文件</code>

<code>    </code><code>max log size = 500                      </code><code>#日志大小</code>

<code>    </code><code>socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192</code>

<code>    </code><code>idmap config * : backend = tdb </code>

<code>    </code><code>printing = bsd</code>

<code>[homes]</code>

<code>    </code><code>comment = user_home</code>

<code>    </code><code>path = </code><code>/office/users/</code><code>%U                </code><code>#用户家目录</code>

<code>    </code><code>browseable = no                        </code><code>#其他人无法浏览</code>

<code>    </code><code>writable = </code><code>yes</code>                         <code>#可写</code>

<code>    </code><code>valid </code><code>users</code> <code>= %S                       </code><code>#允许访问的用户</code>

<code>    </code><code>sync</code> <code>always = </code><code>yes</code>                      <code>#同步模式工作</code>

<code>    </code><code>create mask = 0755                     </code><code>#创建文件权限</code>

<code>    </code><code>directory mask = 0755                  </code><code>#创建目录权限</code>

<code>[public]</code>

<code>    </code><code>comment = public</code>

<code>    </code><code>path = </code><code>/office/public</code>

<code>    </code><code>write list = +staff                   </code><code>#共享写列表</code>

<code>    </code><code>read</code> <code>only = No                        </code><code>#非只读模式,就是可写</code>

<code>    </code><code>sync</code> <code>always = </code><code>yes</code>

<code>    </code><code>create mask = 0777</code>

<code>    </code><code>directory mask = 0777</code>

<code>    </code><code>guest ok = Yes                        </code><code>#所有人可见</code>

<code>[ios]</code>

<code>    </code><code>comment = ios</code>

<code>    </code><code>path = </code><code>/office/ios</code>

<code>    </code><code>write list = +ios</code>

<code>    </code><code>#read only = No          </code>

<code>    </code><code>guest ok = </code><code>yes</code>

<code>[web]</code>

<code>    </code><code>comment = web</code>

<code>    </code><code>path = </code><code>/office/web</code>

<code>    </code><code>write list = +web</code>

<code>    </code><code>#read only = No</code>

<code>    </code><code>sync</code> <code>always = </code><code>yes</code>  

<code>    </code><code>guest ok = Yes</code>

   使用ios部门tom登录测试

<a href="http://s3.51cto.com/wyfs02/M01/23/AA/wKioL1M9pLDQo-2hAAFROviD2K0150.jpg" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M00/23/A9/wKiom1M9pNjBlAyfAAFoxsaHRW4157.jpg" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M02/23/AA/wKioL1M9pLDRM2dwAAFwg3HwMtc266.jpg" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M01/23/A9/wKiom1M9pNiyEwWcAAEsBnWRwJo281.jpg" target="_blank"></a>

   使用web部门bob登录测试

<a href="http://s3.51cto.com/wyfs02/M00/23/AA/wKioL1M9pjODcKlXAAFLmmqnecM643.jpg" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M02/23/A9/wKiom1M9pluAra6hAAGYwNUh9m8616.jpg" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M01/23/AA/wKioL1M9pjOT-iW1AAFC4efzR7k244.jpg" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M00/23/A9/wKiom1M9plzAKWZrAAExMDrx4nU391.jpg" target="_blank"></a>

   使用test用户登录测试

<a href="http://s3.51cto.com/wyfs02/M00/23/AA/wKioL1M9qRDCRVxUAAG6OIdlUes338.jpg" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M02/23/A9/wKiom1M9qTji7Q6oAAFE-U9OB5w757.jpg" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M01/23/AA/wKioL1M9qRCQlPxPAAE10_hBZ6A052.jpg" target="_blank"></a>

samba的使用介绍到此,欢迎博友提出疑问和指正。

本文转自 ftmoonfans  51CTO博客,原文链接:http://blog.51cto.com/soulboy/1390190

继续阅读