---
author: Gabriel Cánepa
category: 技术
comments_data:
- date: '2014-08-21 14:33:00'
  message: Mk
  postip: 61.154.16.21
  username: 微博评论
- date: '2015-10-19 16:14:08'
  message: mark
  postip: 180.153.55.36
  username: noreliang [Internet Explorer 11.0|Windows 8.1]
count:
  commentnum: 2
  favtimes: 6
  likes: 0
  sharetimes: 2
  viewnum: 21052
date: '2014-08-21 14:18:33'
editorchoice: false
excerpt: 根据Samba项目网站所述，Samba是一个开源/自由软件套件，提供了到SMB/CIFS客户端的无缝文件和打印服务。不同于其它SMB/CIFS网络协议部署（如HP-UX的LM服务器，OS/2的LAN服务器，或者VisionFS），Samba（及其源代码）是可以自由获取的（终端用户无需付费），允许在Linux/Unixt服务器和Windows/Unix/Linux客户端之间互操作。
fromurl: ''
id: 3651
islctt: true
largepic: /images/p/201408/21/141704ulk2d2lcgtvkzcxj.jpg
permalink: /article-3651-1.html
pic: /images/p/201408/21/141704ulk2d2lcgtvkzcxj.jpg.thumb.jpg
related: []
reviewer: ''
selector: ''
summary: 根据Samba项目网站所述，Samba是一个开源/自由软件套件，提供了到SMB/CIFS客户端的无缝文件和打印服务。不同于其它SMB/CIFS网络协议部署（如HP-UX的LM服务器，OS/2的LAN服务器，或者VisionFS），Samba（及其源代码）是可以自由获取的（终端用户无需付费），允许在Linux/Unixt服务器和Windows/Unix/Linux客户端之间互操作。
tags:
- Samba
- Windows
thumb: false
title: 怎样设置Samba文件服务器以使用Windows客户端
titlepic: false
translator: GOLinux
updated: '2014-08-21 14:18:33'
---

根据[Samba](http://www.samba.org/)项目网站所述，Samba是一个开源/自由软件套件，提供了到SMB/CIFS客户端的无缝文件和打印服务。不同于其它SMB/CIFS网络协议部署（如HP-UX的LM服务器，OS/2的LAN服务器，或者VisionFS），Samba（及其源代码）是可以自由获取的（终端用户无需付费），允许在Linux/Unixt服务器和Windows/Unix/Linux客户端之间互操作。


![](/images/p/201408/21/141704ulk2d2lcgtvkzcxj.jpg)


出于这些理由，Samba在不同操作系统（除了Linux）共存的网络中首选的文件服务器解决方案——最常见的结构是多个微软Windows客户端访问安装有Samba的Linux服务器，该情形也是本文将要解决的问题。


请注意，另外一方面，如果我们的网络仅仅是由基于Unix的客户端（如Linux，AIX，或者Solaris，等等）组成，我们可以考虑使用NFS（尽管在此种情况下Samba仍然是可选方案），它可以提供更快的速度。


### 在Debian和CentOS中安装Samba


在我们开始安装之前，我们可以使用操作系统中的包管理系统查询Samba的信息：


在Debian上：



```
# aptitude show samba

```

在CentOS上：



```
# yum info samba

```

在下面的屏幕截图中，我们可以看到‘aptitude show samba’的输出（‘yum info samba’会产生类似的结果）：


[![](https://camo.githubusercontent.com/4e259c1f85b1c7465b94bec644f9ea06d16b99db/68747470733a2f2f6661726d342e737461746963666c69636b722e636f6d2f333836382f31343833373939333234345f306661353235656233355f7a2e6a7067)](https://camo.githubusercontent.com/4e259c1f85b1c7465b94bec644f9ea06d16b99db/68747470733a2f2f6661726d342e737461746963666c69636b722e636f6d2f333836382f31343833373939333234345f306661353235656233355f7a2e6a7067)


现在让我们来安装Samba吧（下面的截图来自Debian 7[Wheezy]服务器上的安装）：


在Debian上：



```
# aptitude install samba

```

在CentOS上：



```
# yum install samba

```

### 添加用户到Samba


对于4.x之前的版本，需要建立一个本地Unix帐号以便将其添加到Samba：



```
# adduser <username> 

```

[![](https://camo.githubusercontent.com/17e04887e02caecfdae0d114acfc3aa2df1c54fd/68747470733a2f2f6661726d362e737461746963666c69636b722e636f6d2f353537342f31343833373236363138315f666564363862646466325f6f2e706e67)](https://camo.githubusercontent.com/17e04887e02caecfdae0d114acfc3aa2df1c54fd/68747470733a2f2f6661726d362e737461746963666c69636b722e636f6d2f353537342f31343833373236363138315f666564363862646466325f6f2e706e67)


接下来，我们需要添加用户到Samba，使用带有‘-a’选项的smbpasswd命令来完成，该命令指出后面的用户名将被添加到本地smbpasswd文件中。我们将被提示输入密码（该密码无需和本地Unix帐号的密码相同）：



```
# smbpassword -a <username> 

```

[![](https://camo.githubusercontent.com/e8c2eefaa18e39223afdf3f617e4c69b9a8d85ca/68747470733a2f2f6661726d362e737461746963666c69636b722e636f6d2f353535352f31343635333731313039395f353738663836313363612e6a7067)](https://camo.githubusercontent.com/e8c2eefaa18e39223afdf3f617e4c69b9a8d85ca/68747470733a2f2f6661726d362e737461746963666c69636b722e636f6d2f353535352f31343635333731313039395f353738663836313363612e6a7067)


最后，我们将赋予用户xmodulo到我们系统上某个目录的访问权限，该目录将被用于作为此用户的Samba共享（如有需要，也可以共享给其它用户）。要完成该工作，请使用文本编辑器（如Vim）打开/etc/samba/smb.conf文件，导航到文件末，然后创建一个带有描述名称的区块（使用方括号将其括起来），如[xmodulo]：



```
# SAMBA SHARE
[xmodulo]
path = /home/xmodulo
available = yes
valid users = xmodulo
read only = no
browseable = yes
public = yes
writeable = yes

```

我们现在必须重启Samba—以防万一—使用testparm命令来检查smb.conf文件的语法错误：



```
# service samba restart
# testparm 

```

[![](https://camo.githubusercontent.com/eadd0a7b8371b92c273b82cc6331c694adfec00c/68747470733a2f2f6661726d362e737461746963666c69636b722e636f6d2f353538392f31343635333635353339305f626563623466343938315f7a2e6a7067)](https://camo.githubusercontent.com/eadd0a7b8371b92c273b82cc6331c694adfec00c/68747470733a2f2f6661726d362e737461746963666c69636b722e636f6d2f353538392f31343635333635353339305f626563623466343938315f7a2e6a7067)


如果有错误，在testparm结束后会报告。


### 在Windows 7计算机上将Samba共享映射为一个网络驱动器


在计算机上右击，然后选择“映射网络驱动器”：


[![](https://camo.githubusercontent.com/1a7396f10bb45788f17693671c2f54a9e124289c/68747470733a2f2f6661726d362e737461746963666c69636b722e636f6d2f353537312f31343833373939333135345f393831623733656139322e6a7067)](https://camo.githubusercontent.com/1a7396f10bb45788f17693671c2f54a9e124289c/68747470733a2f2f6661726d362e737461746963666c69636b722e636f6d2f353537312f31343833373939333135345f393831623733656139322e6a7067)


输入安装了Samba的机器的IP地址，后跟共享名（就是smb.conf文件中方括号括起来的那个名称），然后确保选中了“使用不同的凭据连接”：


[![](https://camo.githubusercontent.com/6bc308f7248109fff5bac2b751506fa537149765/68747470733a2f2f6661726d342e737461746963666c69636b722e636f6d2f333838312f31343833393939373137325f643637656339383933335f6f2e706e67)](https://camo.githubusercontent.com/6bc308f7248109fff5bac2b751506fa537149765/68747470733a2f2f6661726d342e737461746963666c69636b722e636f6d2f333838312f31343833393939373137325f643637656339383933335f6f2e706e67)


输入先前用‘**smbpasswd -a**’设置的用户名和密码：


[![](https://camo.githubusercontent.com/230be973bb546169b360b015192c1cb13331369e/68747470733a2f2f6661726d362e737461746963666c69636b722e636f6d2f353536332f31343635333731313032395f646466656135336264365f6f2e706e67)](https://camo.githubusercontent.com/230be973bb546169b360b015192c1cb13331369e/68747470733a2f2f6661726d362e737461746963666c69636b722e636f6d2f353536332f31343635333731313032395f646466656135336264365f6f2e706e67)


进入计算机，然后检查网络驱动器是否被正确添加：


[![](https://camo.githubusercontent.com/6bde1fcf5e8f1ba06d8edebb865f32b4c580a47f/68747470733a2f2f6661726d362e737461746963666c69636b722e636f6d2f353538342f31343833373939333132345f633636343732383033395f6f2e706e67)](https://camo.githubusercontent.com/6bde1fcf5e8f1ba06d8edebb865f32b4c580a47f/68747470733a2f2f6661726d362e737461746963666c69636b722e636f6d2f353538342f31343833373939333132345f633636343732383033395f6f2e706e67)


作为测试，让我们从Samba的手册页创建一个pdf文件，然后保存到/home/xmodulo目录：


[![](https://camo.githubusercontent.com/0a098b21326bc6365f0ea434f446ae76376e50d6/68747470733a2f2f6661726d362e737461746963666c69636b722e636f6d2f353539332f31343836303231393732335f653833383066306430665f6f2e706e67)](https://camo.githubusercontent.com/0a098b21326bc6365f0ea434f446ae76376e50d6/68747470733a2f2f6661726d362e737461746963666c69636b722e636f6d2f353539332f31343836303231393732335f653833383066306430665f6f2e706e67)


接下来，我们可以验证该文件是否可以从Windows读取：


[![](https://camo.githubusercontent.com/8d38472d1a5104e28dba3442a23fb5f9751d290e/68747470733a2f2f6661726d342e737461746963666c69636b722e636f6d2f333836392f31343831373338363639365f373461313264666463645f6f2e706e67)](https://camo.githubusercontent.com/8d38472d1a5104e28dba3442a23fb5f9751d290e/68747470733a2f2f6661726d342e737461746963666c69636b722e636f6d2f333836392f31343831373338363639365f373461313264666463645f6f2e706e67)


然后检查我们是否能够用默认的pdf阅读器打开它：


[![](https://camo.githubusercontent.com/007dcf697a0ee4a2755e20550d3b541f943e88db/68747470733a2f2f6661726d362e737461746963666c69636b722e636f6d2f353538342f31343635333635353335305f386132343362313439335f7a2e6a7067)](https://camo.githubusercontent.com/007dcf697a0ee4a2755e20550d3b541f943e88db/68747470733a2f2f6661726d362e737461746963666c69636b722e636f6d2f353538342f31343635333635353335305f386132343362313439335f7a2e6a7067)


最后，让我们看看我们是否能在Windows中刚刚映射的驱动器上保存文件。我们将打开change.log文件，该文件列出了Notepad++的功能：


[![](https://camo.githubusercontent.com/52169af0f6a32d6ff0030f8756c092e18ae92136/68747470733a2f2f6661726d362e737461746963666c69636b722e636f6d2f353536352f31343831373338363637365f313863316437626336305f6f2e706e67)](https://camo.githubusercontent.com/52169af0f6a32d6ff0030f8756c092e18ae92136/68747470733a2f2f6661726d362e737461746963666c69636b722e636f6d2f353536352f31343831373338363637365f313863316437626336305f6f2e706e67)


然后试着将它作为普通文本文件（.txt扩展名）保存到Z:\；然后让我们看看该文件是否能在Linux中看到：


[![](https://camo.githubusercontent.com/20ce5a9b7137fb30f93b479fa93f4d5547d24d47/68747470733a2f2f6661726d342e737461746963666c69636b722e636f6d2f333834312f31343831373338363635365f666230396139356136355f6f2e706e67)](https://camo.githubusercontent.com/20ce5a9b7137fb30f93b479fa93f4d5547d24d47/68747470733a2f2f6661726d342e737461746963666c69636b722e636f6d2f333834312f31343831373338363635365f666230396139356136355f6f2e706e67)


### 启用磁盘配额


作为第一步，我们需要验证当前内核是否已经编译为支持配额：



```
# cat /boot/config-$(uname -r) | grep 

```

[![](https://camo.githubusercontent.com/277bb8985cd49586a8b1e6790a4931c4f9e8dbc7/68747470733a2f2f6661726d342e737461746963666c69636b722e636f6d2f333836372f31343833373939333035345f303831646339623064635f7a2e6a7067)](https://camo.githubusercontent.com/277bb8985cd49586a8b1e6790a4931c4f9e8dbc7/68747470733a2f2f6661726d342e737461746963666c69636b722e636f6d2f333836372f31343833373939333035345f303831646339623064635f7a2e6a7067)


每个文件系统最多有5种类型，能够强制使用的配额限制：用户软限制，用户硬限制，组软限制，组硬限制，以及宽限期限。


我们现在将为/home文件系统启用磁盘配额，在/etc/fstab文件对应的/home文件系统行现存的默认选项后添加usrquota和grpquto挂载选项，然后重新挂载文件系统以令修改生效：


[![](https://camo.githubusercontent.com/47dbc7484c82214b55da7edabb02b21b4e6fd4b2/68747470733a2f2f6661726d362e737461746963666c69636b722e636f6d2f353536312f31343635333830363036375f623862306463323333335f7a2e6a7067)](https://camo.githubusercontent.com/47dbc7484c82214b55da7edabb02b21b4e6fd4b2/68747470733a2f2f6661726d362e737461746963666c69636b722e636f6d2f353536312f31343635333830363036375f623862306463323333335f7a2e6a7067)


接下来，我们需要在**/home**目录创建两个文件以用于作为用户和组配额的数据库文件：**aquota.user**和**aquota.group**。然后，我们将生成启用配额后每个文件系统的当前磁盘使用表：



```
# quotacheck -cug /home
# quotacheck -avugm 

```

[![](https://camo.githubusercontent.com/36ce6e3b6f2573e96a88afc639a23501a64735b2/68747470733a2f2f6661726d362e737461746963666c69636b722e636f6d2f353538342f31343833373236353937315f363534653866336263305f6f2e706e67)](https://camo.githubusercontent.com/36ce6e3b6f2573e96a88afc639a23501a64735b2/68747470733a2f2f6661726d362e737461746963666c69636b722e636f6d2f353538342f31343833373236353937315f363534653866336263305f6f2e706e67)


尽管已经为/home文件系统启用磁盘配额，我们还没有给任何用户或组设置权限。检查现有用户/组的配额信息：



```
# quota -u <username>
# quota -g <groupname> 

```

[![](https://camo.githubusercontent.com/3f2ea264b3b3d92da3c23a8619441ef290985aa6/68747470733a2f2f6661726d362e737461746963666c69636b722e636f6d2f353538322f31343635333733353834385f386465383864363963345f6f2e706e67)](https://camo.githubusercontent.com/3f2ea264b3b3d92da3c23a8619441ef290985aa6/68747470733a2f2f6661726d362e737461746963666c69636b722e636f6d2f353538322f31343635333733353834385f386465383864363963345f6f2e706e67)


在这最后几步中，使用quotatool命令来为每个用户和/或组来分配磁盘配额（注意，该任务也可以使用edquota来完成，但是quotatool更为直接，更不易犯错）。


要为用户xmodulo设置软限制为4MB，硬限制为5MB，xmodulo组为10MB/15MB：



```
# quotatool -u xmodulo -bq 4M -l '5 Mb' /home
# quotatool -g xmodulo -bq 10M -l '15 Mb' /home 

```

[![](https://camo.githubusercontent.com/3a83240f44647884116f9b23d2354853c92bbccf/68747470733a2f2f6661726d342e737461746963666c69636b722e636f6d2f333838382f31343635333830363033375f353433386235303334655f7a2e6a7067)](https://camo.githubusercontent.com/3a83240f44647884116f9b23d2354853c92bbccf/68747470733a2f2f6661726d342e737461746963666c69636b722e636f6d2f333838382f31343635333830363033375f353433386235303334655f7a2e6a7067)


我们可以在Windows 7中看到结果（4.00MB中有3.98MB空闲）：


[![](https://camo.githubusercontent.com/05a3e1f949adee7651829a4a310c14cb6577882c/68747470733a2f2f6661726d342e737461746963666c69636b722e636f6d2f333931392f31343635333830353936375f633262313535313836395f6f2e706e67)](https://camo.githubusercontent.com/05a3e1f949adee7651829a4a310c14cb6577882c/68747470733a2f2f6661726d342e737461746963666c69636b722e636f6d2f333931392f31343635333830353936375f633262313535313836395f6f2e706e67)




---


via: <http://xmodulo.com/2014/08/samba-file-server-windows-clients.html>


作者：[Gabriel Cánepa](http://xmodulo.com/author/gabriel) 译者：[GOLinux](https://github.com/GOLinux) 校对：[Caroline](https://github.com/carolinewuyan)


本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译，[Linux中国](http://linux.cn/) 荣誉推出