请看下面我的截图。
用户 chj 执行chmod +x ichsize.out
,但失败并显示不允许操作。
ichszie.out 启用了 world-rw 权限,但看起来还不够。
-rw-rw-rw- 1 nobody nogroup 27272 May 26 18:51 ichsize.out
ichsize.out 的所有者是nobody
,因为该文件是由 Samba 服务器创建的,提供[projects]
如下目录位置:
[projects]
comment = VS2019 Linux-dev project output
path = /home/chj2/projects
browseable = yes
read only = no
guest ok = yes
create mask = 0666 #(everybody: read+write)
directory mask = 0777 #(everybody: list+modify+traverse)
hide dot files = no
Samba 客户端使用访客身份访问此共享,并请求创建 ichsize.out 文件。
该系统是基于Debian版本的Raspberry Pi:11(bullseye)。 Ubuntu 20.04 也有同样的表现。
所以我想知道,如何编写 smb.conf 以便 RasPi 上的任何用户都可以chmod +x
对该文件执行操作。
答案1
如果您不需要担心拥有此共享中的文件的用户,您可以使用force user
配置设置来允许 Samba 用户运行诸如chmod
.这意味着所有文件将显示为连接到共享的帐户所拥有(即,如果 Alice 和 Bob 都连接到共享,Alice 将看到她拥有所有文件,而 Bob 也将看到他拥有所有文件)文件),但结果是任何人都可以运行chmod
.
例如,假设这shareuser
是 Samba 服务器上的有效用户帐户,包含sharegroup
允许访问此共享的用户集,并且该帐户/home/_share
存在且所有者shareuser
至少具有以下权限0700
:
[Share]
comment = Everyone owns these files
path = /home/_share
browseable = yes
read only = no
guest ok = no
force user = shareuser
valid users = "@sharegroup"
; vfs objects = acl_xattr recycle catia
或者我还没有测试过,它允许访客用户:
[Share]
comment = Everyone owns these files
path = /home/_share
browseable = yes
read only = no
guest ok = yes
force user = shareuser
在加入域的环境中,甚至可以让 Samba 处理具有真正 Windows ACL 和所有权的文件。例如,在 Windows 世界中,一个组可能拥有文件并有权更改访问权限等。鉴于您guest ok = yes
在上下文中的情况,我怀疑这不相关,但我向未来潜在的读者提及它。
另一方面,如果你真的想说,“我怎样才能写我的smb.conf
的RasPi 上的任何用户可以做chmod +x
对该文件执行操作“ [我用斜体字强调] 那么您应该知道smb.conf
配置文件与 Pi 本身的用户无关。本地 UNIX/Linux 控件适用于 Pi 上的用户,因此您无法在chmod
不属于您的文件上运行。
答案2
这样 RasPi 上的任何用户都可以对该文件执行 chmod +x 操作。
你不能。无论如何,不使用常规的 unixy 权限位,但请参阅@roaima 的回答也。
调用进程的有效 UID 必须与文件所有者匹配,或者该进程必须具有特权
如果失败,则会给出错误代码 EPERM,对应于消息“不允许操作”。
如果您使用的是 Linux 桌面发行版,那么您可能拥有 GNU 工具集。 GNU的手册页chmod
命令行工具似乎没有提到所需的权限,但是提到了在信息页面上。