公司需要一台用于共享的文件服务器,考虑使用Linux系统,听说会比windows的文件系统好管理,了解不多,人云亦云了!

这里需要用到samba系统,安装比较简单,安装后需要进行配置才能访问。

修改smb.conf 配置文件(参数的配置说明最好直接看默认文件中的注释说明):

samba自带的smb.conf文件注释很多,例子给的也不少,容易让人觉得这个文件很复杂,其实它的框架很简单,主要包括下面几个小节:

[global]  

[homes]

[printers]

[自定义]

[global] 是全局的配置选项

[homes] 是登陆用户的目录

[printers] 是共享打印机相关信息

[自定义] 是在windows中看到的共享目录,可以有多个。

一.[global] 常用配置选项

1.security 用户访问Samba Server的验证方式,一共有四种验证方式。

security = share|user|server|domain
share:用户访问Samba Server不需要提供用户名和口令, 安全性能较低。

user:Samba Server共享目录只能被授权的用户访问,由Samba Server负责检查账号和密码的正确性。账号和密码要在本Samba Server中建立。 

server:依靠其他Windows NT/2000或Samba Server来验证用户的账号和密码,是一种代理验证。此种安全模式下,系统管理员可以把所有的Windows用户和口令集中到一个NT系统上,使用Windows NT进行Samba认证, 远程服务器可以自动认证全部用户和口令,如果认证失败,Samba将使用用户级安全模式作为替代的方式。 

domain:域安全级别,使用主域控制器(PDC)来完成认证。

一个简单的share模式共享配置: http://www.cnblogs.com/champaign/p/5916062.html

2. passdb backend
passdb backend就是用户后台的意思。目前有三种后台:smbpasswd、tdbsam和ldapsam(我理解是要在 security=user 模式下使用)
 
1.smbpasswd:该方式是使用smb自己的工具smbpasswd来给系统用户(真实
用户或者虚拟用户)设置一个Samba密码,客户端就用这个密码来访问Samba的资源。smbpasswd文件默认在/var/lib/samba/private/smbpasswd(版本3.6.23)目录下.
smbpasswd -a 用户名 #添加一个samba用户
smbpasswd -d 用户名 #禁用一个samba用户
smbpasswd -e 用户名 #恢复一个samba用户
smbpasswd -x 用户名 #删除一个samba用户
2.tdbsam:该方式则是使用一个数据库文件来建立用户数据库。数据库文件叫passdb.tdb,默认在/var/lib/samba/private/passdb.tdb(版本3.6.23)目录下。
passdb.tdb用户数据库可以使用smbpasswd –a来建立Samba用户,不过要建立的Samba用户必须先是系统用户。我们也可以使用pdbedit命令来建立Samba账户。pdbedit命令的参数很多,我们列出几个主要的。
pdbedit –a username:新建Samba账户。
pdbedit –x username:删除Samba账户。
pdbedit –L:列出Samba用户列表,读取passdb.tdb数据库文件。
pdbedit –Lv:列出Samba用户列表的详细信息。
pdbedit –c “[D]” –u username:暂停该Samba用户的账号。
pdbedit –c “[]” –u username:恢复该Samba用户的账号。
3.ldapsam:该方式则是基于LDAP的账户管理方式来验证用户。首先要建立LDAP服务,然后设置“passdb backend = ldapsam:ldap://LDAP Server”
  • username map

username map = /etc/samba/smbusers

 

二.[自定义] 常用配置选项

一个简单的示例(实际工作中要求有写入权限):

 [attchement]

 comment =attchement

 path = /data/attchement

writable = yes

三.[无写权限]的处理办法

解决了好久的写入问题,试过很多方法无效。

在网上找到如下方法解决:

setenforce 0

 vi /etc/selinux/config

将SELINUX=enforcing改为SELINUX=disabled为开机重启后不再执行setenfore节约光阴。

四.设置Samba服务创建目录和文件的默认权限

通过Samba服务器实现windows和Linux之间的文件共享,相信是绝大多数人的选择。

通常我们都会使用Samba的缺省配置,这样,每次通过Samba从Windows向Linux中拷贝文件时,文件都会被加上”可执行”的属性。

这是很让人头疼的问题,每次都要通过chmod去修改文件的权限很是麻烦。

只要把下面的配置加入/etc/samba/smb.conf就可以解决这个问题:

create mode =
force create mode =
directory mode =
force directory mode =

下面简单介绍一下这几个参数的含义:

  • create mode – 这个配置定义新创建文件的属性。Samba在新建文件时,会把dos文件的权限映射成对应的unix权限,在映射后所得的权限,会与这个参数所定义的值进行与操作。然后再和下面的force create mode进行或操作,这样就得到最终linux下的文件权限。
  • force create mode – 见上面的描述。相当于此参数所设置的权限位一定会出现在文件属性中。
  • directory mode – 这个配置与create mode参数类似,只是它是应用在新创建的目录上。Samba在新建目录时,会把dos–>linux映射后的文件属性,与此参数所定义的值相与,再和force directory mode相或,然后按这个值去设置目录属性。
  • force directory mode – 见上面的描述。相当于此参数中所设置的权限位一定会出现在目录的属性中。

说明一点,上面的create mode和create mask参数是同义词,用哪个都可以;而directory mode和directory mask参数是相同的。

当你发现Samba中新建的目录/文件权限不正确,例如无法访问某个目录、无法更改文件,就需要检查上面几个值的设置。

另外需要说明的是,上面几个配置项,会和security mask、force security mode、directory security mask、force directory security mode这几个配置项相互作用。这几个带”security”的配置项会影响Windows NT/2000的ACL功能,一般我们不需要设置。

参考:http://blog.csdn.net/hustfoxy/article/details/9028027