我曾经运行 Windows Server,并且在 NAS 上共享文件是一件轻而易举的事。我已经制定了大部分权限以使其按照我的需要工作,并且主要使用 Samba 来提供文件。
我遇到的唯一任务是创建一个共享文件文件夹以映射到每个客户端。看来Linux总是在具有755权限的用户下创建文件和文件夹,因此当在此文件夹中创建内容时,其他用户无法修改或删除它们。
在 Windows/NTFS 中,我能够将“共享文件”文件夹设置为“R+W”,并使其下的所有内容都继承此设置,这意味着该文件夹按预期对所有人免费。我还没有找到如何让 Linux 做到这一点。
Ubuntu 服务器 16.04.3 LTS
答案1
将共享根目录(即 SAMBApath
指令)的权限设置为077x
(其中x
可以有效地为0
、5
或 之一7
)并让 SAMBA 处理权限。如果您有不同的方式访问与 SAMBA 共享对应的文件系统中的文件,则只需混合 UNIX/Linux 文件系统权限和 SAMBA 权限。
如果您希望所有用户都是等效的,请使用该force user
指令。这将确保访问共享的所有用户都被视为 UNIX/Linux 文件系统中的同一用户。 (这与身份验证无关 - 如果您设置了个人帐户,用户仍然可以使用个人帐户进行身份验证。)
下面是一个执行此操作的共享示例。 “ remote
”用户和组是将拥有这些文件的本地 UNIX/Linux 帐户。 “ family
”组是我和我的家人用来验证共享的一组帐户。
[Family]
comment = Shared
valid users = @family
path = /home/remote/shared
vfs objects = recycle catia
browseable = Yes
read only = No
force user = remote
force group = remote
force create mask = 0664
force directory mask = 0775
答案2
您可以使用create mask
和directory mask
配置选项来配置更宽松的 umask 以允许组成员(或每个人)修改文件。
例如:
create mask = 0775
directory mask = 0775
还有各自的force crate mode
和force directory mode
选项。使用时,相应的权限始终会添加到创建的文件和目录中。
取决于您的用户配置方式:
如果您的所有用户共享一个共同的主要组,则使用上述选项就足够了。
如果主组不共享,但用户是公共组的成员,请将目录组设置为公共组并应用设置gid位到它。什么时候设置gid位设置为一个目录,创建的新文件将继承该目录的组,并且创建的新目录将具有设置gid位设置为好。
使用POSIX 访问控制列表。要为文件系统启用 ACL,您可能需要使用
acl
mount 选项。当为目录设置默认 ACL 时,创建的新文件和目录将继承默认 ACL。请参阅答案Linux下如何继承组权限了解详情。