![SetUID 在 Ubuntu 16.04 上无法与 Samba 正常配合使用](https://linux22.com/image/1090893/SetUID%20%E5%9C%A8%20Ubuntu%2016.04%20%E4%B8%8A%E6%97%A0%E6%B3%95%E4%B8%8E%20Samba%20%E6%AD%A3%E5%B8%B8%E9%85%8D%E5%90%88%E4%BD%BF%E7%94%A8.png)
我使用最新版本的 Samba(2:4.3.11+dfsg-0ubuntu0.16.04.11)运行 Ubuntu 16.04 LTS。
我在目录本身上配置了共享和所有适当的 unix 权限。测试后一切正常。
我的层次结构如下所示:
[
每个子文件夹有一个组,例如:管理,它,管理每个组一名用户。
在内部共享配置smb配置文件:
create mask = 6770
directory mask = 6770
force create mask = 6770
force directory mask = 6770
因此所有者和组拥有这些子文件夹的完全访问权限。
我设置了设置用户标识
chmod u+s
和指南
chmod g+s
对于所有这些子文件夹。
因此,如果我是正确的,则在这些子文件夹内创建的每个目录和文件都应自动将所有者设置为 root,并将组设置为该特定子文件夹的上级组。
它为群组执行此操作,但不为所有者执行此操作。例子
尽管我之前进行了设置,但连接到共享并创建目录或文件的用户仍将成为所有者。
unix 权限与 samba 结合时是否会出现一些奇怪的行为?
或者chmod u+s
根本就不在我的 Ubuntu 发行版上运行?
答案1
根据此 Wiki 页面,setuid
目录中的此项被忽略。
从https://en.wikipedia.org/wiki/Setuid
目录上的 setuid 和 setgid[编辑]
当在目录上设置 setuid 和 setgid 标志时,它们具有完全不同的含义。
设置目录的 setgid 权限(“chmod g+s”)
- 导致在其中创建的新文件和子目录继承其组 ID,而不是创建该文件的用户的主组 ID(所有者 ID 永远不会受到影响,只有组 ID)。
- 新创建的子目录将继承 setgid 位。因此,这为组启用了共享工作区,而无需组成员在创建新文件或目录之前明确更改其当前组。
- 仅影响设置 setgid 位后创建的新文件和子目录的组 ID,而不适用于现有实体。
不会影响在其他地方创建并移动到相关目录的文件的组 ID。该文件将继续带有创建时和创建位置所影响的组 ID。必须手动设置现有子目录的 setgid 位,使用以下命令:
root@foo# find /path/to/directory -type d -exec chmod g+s '{}' \;
在 UNIX 和 Linux 系统上,目录上设置的 setuid 权限会被忽略。[4]
可以配置 FreeBSD 将其解释为类似于 setgid,即强制所有文件和子目录归顶级目录所有者所有。[5] 在从 BSD 派生的系统上,目录的行为就像它们的 setgid 位始终被设置一样,无论其实际值如何。如 open(2) 中所述,“当创建新文件时,它将被赋予包含该文件的目录的组。”