我正在尝试设置一个非常简单的 samba 配置,其中单个用户(共享的所有者)对共享具有完全访问权限,而其他用户仅具有读取访问权限。以下是 smb.conf:
[global]
security = user
workgroup = WORKGROUP
server string = Samba Server %v
encrypt passwords = yes
log file = /var/log/samba/log.%m
max log size = 50
create mask = 644
force create mode = 644
directory mask = 755
force directory mode = 755
[test]
comment = Test
path = /admin/test
writeable = yes
browseable = yes
大多数情况下,我都可以从 Windows 创建和修改文件而不会出现问题,但某些应用程序在保存文件时会添加扩展 ACL(例如 MS Word),之后我无法修改或覆盖这些文件,但奇怪的是,我可以删除它们。
root@vsapdes:/admin/test=>ls -l
total 16
-rw-r--r-- 1 usrcap usr 4 Jun 27 12:59 notepad_file_no_acl.txt
-rw-r--r--+ 1 usrcap usr 11256 Jun 27 2019 word_file_with_acl.docx
root@vsapdes:/admin/test=>aclget word_file_with_acl.docx
*
* ACL_type AIXC
*
attributes:
base permissions
owner(usrcap): rw-
group(usr): r--
others: r--
extended permissions
enabled
specify r-- g:usr
specify rw- u:usrcap
samba 服务器的版本是 4.9.3,运行在 AIX 7.1 上,以防与问题有关(我可以使用登录 samba 的同一用户从终端修改文件,所以我不认为是这种情况)。
答案1
我能想到你可以做的两件事。
您可以按照所述将所有者用户声明为共享管理员在 smb.conf 文档中. admin用户不受任何ACL限制,可以做任何自己想做的事情。
另一种可能性是禁用 ACL。我自己还没有尝试过,但你可以尝试禁用选项map acl inherit
,store dos attributes
和ea support
。如果您根本不关心 ACL,您当然可以尝试一下。
答案2
当然,当您使用这样的网络共享时,您需要 ACL,这是客户端与 Windows 一起使用的最重要的功能。(当然是在商业环境中。)
如果这不是您的 Samba 版本的错误,您可以直接从 Windows 更改共享文件夹的 ACL,以禁用文件夹中的写入扩展属性(因为这对 Office 来说并不是强制性的)。
您只需更改您的用户(或您的组)的权限,以直接在共享文件夹的根目录中禁用“扩展属性写入”(取消选中该选项)。
例如(法语,抱歉)(您需要进入文件夹的“安全”选项卡,然后单击“高级”。之后,只需选择您的组/用户并单击“修改”):
在我们的基础设施中,我们不会从终端准备或更改 ACL,而是直接从 Windows 更改任何权限(到目前为止这更简单)。