执行 chmod +x 的要求是什么? “rw”还不够!

执行 chmod +x 的要求是什么? “rw”还不够!

请看下面我的截图。

在此输入图像描述

用户 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.confRasPi 上的任何用户可以做chmod +x对该文件执行操作“ [我用斜体字强调] 那么您应该知道smb.conf配置文件与 Pi 本身的用户无关。本地 UNIX/Linux 控件适用于 Pi 上的用户,因此您无法在chmod不属于您的文件上运行。

答案2

这样 RasPi 上的任何用户都可以对该文件执行 chmod +x 操作。

你不能。无论如何,不​​使用常规的 unixy 权限位,但请参阅@roaima 的回答也。

Linuxchmod()系统调用手册页

调用进程的有效 UID 必须与文件所有者匹配,或者该进程必须具有特权

如果失败,则会给出错误代码 EPERM,对应于消息“不允许操作”。

如果您使用的是 Linux 桌面发行版,那么您可能拥有 GNU 工具集。 GNU的手册页chmod命令行工具似乎没有提到所需的权限,但是提到了在信息页面上

相关内容