通过Samba服务器实现windows和Linux之间的文件共享,相信是绝大多数人的选择。通常我们都会使用Samba的缺省配置,这样,每次通过Samba从Windows向Linux中拷贝文件时,文件都会被加上”可执行”的属性。对Easwy来说,这是很让人头疼的问题,每次都要通过chmod去修改文件的权限很是麻烦。
今天仔细看了一下Samba的手册,发现只要把下面的配置加入/etc/samba/smb.conf就可以解决这个问题:
create mode = 0644 force create mode = 0644 directory mode = 0755 force directory mode = 0755
下面简单介绍一下这几个参数的含义:
- 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功能,一般我们不需要设置。
更多关于Linux的内容,请关注Easwy的其它文章。
其实只要设置一个参数就够了
map archive = no
map archive = no的实际含义其实和上面几个设置是不同的,另外,create mask这几个设置可以更精确的控制文件权限,这点是map archive做不到的。可以参考:
http://oreilly.com/catalog/samba/chapter/book/ch05_03.html
@李伟东
你需要重启Samba服务来让配置生效。
我抄进smb.conf中去了,可还是没有解决问题,不知道是什么原因.