Answers:
NFS是在Unix世界中发明的,因此可以立即了解传统的Unix权限。(现代unix系统的ACL是另一回事,但是NFS的最新实现应该可以解决它们。)
Samba是在IBM / Microsoft PC世界中发明的,用于与没有只读/读写权限的系统交换文件。现在它是Windows的本机。默认情况下,Samba不传输Unix权限。根据配置,所有文件都被标记为可执行(令人讨厌)或所有文件(目录除外)被标记为不可执行(令人讨厌)。
Samba / CIFS协议有各种扩展,使其更适合Unix使用。尝试在服务器配置中启用Unix扩展:
[global]
unix extensions = yes
这听起来像是您的问题,标题为:复制的文件在Samba / CIFS上获得了执行位。
摘抄
在安装了CIFS的卷上用rw-r -----复制文件后,副本将得到rwxr -----。因此,它获得了执行位:
在页面的下方,设置map archive = no
为/etc/samba/smb.conf
:
摘抄
[Global]
<snip>
map archive = no
<snip>
您可以尝试: mount -t cifs
Google会“挂载CIF”以供使用,这并不难理解,但是您需要使用-o标志来设置选项:
uid =,gid =,rw,noperm,dir_mask = 0775,file_mask = 0664
用户和组是ID的,如数字而不是文本别名。这些选项将确保您具有r / w访问权限,权限是由不装载服务器来控制的,特别是file_mask=0664
将确保文件不可执行。最重要的是,您可以将samba共享作为本地目录使用。
file_mode=0644,dir_mode=0755
您可以从Samba网站上的以下解释中找出发生这种情况的原因,该解释位于MS-DOS和Unix上的“ 文件许可权和属性”部分:
https://www.samba.org/samba/docs/using_samba/ch08.html
它与映射MS-DOS文件系统的“系统”,“隐藏”和“存档”位有关。
MS-DOS文件系统不使用可执行位,因此Unix文件系统上的三个可执行位被重用以表示MS-DOS文件系统的System,Hidden和Archive位。
因此,当您ls -l
在Unix中使用来查看文件许可权时,要记住适用于MS-DOS(或Windows)的文件许可权,同时要记住Unix中的三个可执行位代表了MS-DOS的System,Hidden和Archive位。
smb.conf
但是,您可以在中通过以下方式关闭此映射以共享:
map archive = no
map system = no
map hidden = no
并通过以下方式强制创建文件的模式:
force create mode = 0660