假设我是用户 Alice,我有一个可公开访问的文件夹/samba/public
公共Samba文件夹( )的权限/samba/public/
为nobody:nogroup和0777。
当 Alice 尝试将某些内容从她的主文件夹复制到共享公共驱动器时
(例如cp ~/Downloads/* /samba/public
),
Alice 希望所有有权访问公共 Samba 共享的来宾都可以编辑/删除新复制的文件。
我希望复制的文件由无人拥有:nogroup 并设置为 0777。
相反,发生的情况是新复制的文件归 alice:alice 所有,并且公共驱动器上的来宾用户无法编辑或删除这些文件。
如何确保将来从 Alice 的主文件夹到共享/公共 Samba 文件夹的内容复制/移动操作将由无人拥有:nogroup,以便来宾用户不会被阻止自行删除/编辑文件?
答案1
我现在似乎已经解决了这个问题(触摸木头)。
我尝试了各种不同的修复方法,因此很难确定到底是什么使一切正常工作,但我认为以下步骤有帮助:
- 我有一个Docker应用程序运行它将内容下载到我的主目录(当时这似乎无关紧要)。
- 在遵循@sourcejedi的建议后,我的
umask
被更改为0002
. - 按照 @Isaac 给出的建议,我能够创建/复制/移动文件以及目录从我的主目录到
/samba/public/
Samba 来宾用户能够自由重命名/编辑/删除。
但是,当我尝试复制/移动使用此 Docker 应用程序下载的主目录中的任何内容时,Samba 来宾用户无法自由重命名/编辑/删除(因为 Docker 应用程序正在创建 chmod 值为 755 的目录) 。
然后,我将
umask
Docker 应用程序的 更改为 0002。 Docker 应用程序生成的后续下载和目录的 chmod val 775。当这些目录复制到 时/samba/public/
,Samba 来宾用户现在可以重命名/编辑/删除。
脚注:
将 umask 更改为您选择的值就像执行
umask XXXX
其中 XXXX 是您想要的值一样简单。您只需umask
在终端中输入即可检查 umask 值。更改我正在使用的 Docker 应用程序的 umask 是通过添加一个名为 的新 ENV 参数
umask
并将其设置为 来完成的0002
。启动 Docker 容器时,您可以通过 CLI 传入此参数,或者如果您使用 Portianer 来管理正在运行的容器,则可以通过 Web UI 传入此 ENV 参数。主要警告:作为使其工作的一部分,我首先尝试遵循中给出的建议设置公共文件夹线程的权限以及在遵循 @Isaac 的建议之前尝试使用 @sourcejedi 推荐的用户专用组 (UPG) 模式。
如果将来有人遇到类似的问题,这可能是相关的?
答案2
欢迎来到U&L!你可能不需要文件来成为nobody:nogroup 0777。我很抱歉,但你想要的模式被Gnome/systemd(和udisks)打破了。至少,如果爱丽丝使用这些在运行 Samba 服务器的同一台计算机上。
这在问题中讨论过(不是很清楚)共享、读写、照片目录树,适合普通用户和在 ext4 磁盘上的多个用户之间共享文件夹/文件
如果爱丽丝不是在运行 Samba 服务器的同一台计算机上使用 Gnome(包括 Gnome 文件管理器)或 udisks(允许用户安装可移动文件系统),那么您实际上可能能够使用原始版本用户私人群组图案。
IIRC,Redhat系统已经为UPG设置了正确的umask。对于基于 Debian 的系统,您可能需要启用并配置 pam_umask。看https://stackoverflow.com/questions/10220531/how-to-set-system-wide-umask
编辑:如果您必须更改umask
,您还必须更改任何的访问模式现存的您将来可能想要共享的文件。例如chmod -R g+w $HOME/*
或chmod -R g+w /home/*/*
。做不是使用chmod -R g+w $HOME
。它会改变 的模式$HOME/.ssh
,并可能阻止您使用 登录ssh
。
否则,也许有人可以根据此信息提出解决方法。
我可以根据线程建议一种替代方案设置常用文件夹的权限
听起来您希望来宾用户能够删除和编辑这些文件...这表明它们可能不是很大的文件。
从您提供的信息来看,Alice 似乎可以自己充当访客,使用 Samba 共享来上传文件。 ...您只需避免告诉 Alice Samba 目录在服务器上的位置即可。如果她足够聪明,能够找到它,那么她也足够聪明,可以被告知计算机是一个错误,并且她完全合乎逻辑的想法将不会奏效,因为有原因。
(如果您绝对需要,您可以通过在 LXC 等容器内运行 Samba 服务器来“隐藏”它。)
如果 Alice 在 Samba 服务器上有一个非来宾帐户,则可能还需要chmod g+s
在目录上使用,并在smb.conf
设置中
create mask = 0775
directory mask = 0775