我在 Linux 服务器上有一个目录,我的用户拥有该目录中的所有文件,并且只有某个目录是全局可写的。所有其他目录对访客而言都是只读的。这个想法是任何人都应该能够在全局可写的目录中做任何他们想做的事情,但有一个问题:我无法事后用我自己的 UNIX 用户更改访客创建的文件。
我只是无法弄清楚哪种 UNIX 权限和/或 samba 设置会允许我在类似配置的 Windows 共享中执行相同的行为。在 Windows 机器上,我可以将共享上的全球可写目录设置为对“Everyone”具有写权限,然后每个人都可以在该目录中执行任何他们想做的事情,本地或通过以访客身份访问共享。如何在 Linux 服务器上获得相同的功能?目前,只有 UNIX 用户 nobody 和 root 才能更改访客写入的文件。
这是我的 smb.conf:
[全球的] unix 字符集 = iso8859-15 接口 = 192.168.0.1 仅绑定接口 = 是 套接字地址 = 192.168.0.1 名称解析顺序=主机 只读 = 否 最大打开文件数 = 32768 csc 策略 = 禁用 加载打印机 = 否 系统日志 = 0 映射到访客 = 坏用户 # 这太可怕了:) [家] 可浏览 = 否 创建掩码 = 0600 安全掩码 = 0600 目录掩码 = 0700 目录安全掩码 = 0700 [问题分享] 路径 = /存储 公开 = 是 创建掩码 = 0644 安全掩码 = 0644 目录掩码 = 0755 目录安全掩码 = 0755 隐藏点文件 = 否
我尝试过使用默认 ACL,但似乎没什么用。默认 ACL 在很多其他情况下非常有用,但 samba 有太多权限设置,似乎会造成干扰。
答案1
格氏关于文件的说法是正确的。
[problem_share]
路径 = /storage
public = yes
创建掩码 = 0666 #(每个人:读+写)
安全掩码 = 0666 #(每个人:读+写)
目录掩码 = 0777 #(每个人:列出+修改+遍历)
目录安全掩码 = 0777 #(每个人:列出+修改+遍历)
隐藏点文件 = 否
你可能想提高对传统 Unix 权限。
答案2
您需要修复 [problem_share] create mask = 0666
。更多信息:这里。
答案3
我意识到我最初的问题表述得很糟糕,我应该得到这些新手的答案。但以下是我最终解决这个问题的方法:
我将 /storage 中的所有目录都设为我自己的 UNIX 用户所有,其他用户则拥有只读权限。然后,我使用 FUSE bindfs“镜像”选项将 /storage/upload 挂载到自身之上。确切的命令行是“bindfs --mirror=@staff,@users,nobody --create-for-user=myuser /storage/upload /storage/upload”。现在,用户 nobody 和 staff & users 组中的用户将 /storage/upload 中的文件视为自己的文件,并可以根据自己的需要对其进行修改。但实际上,所有文件都归我自己的 UNIX 用户所有,如果我将文件移出该目录,其他用户就无法再对其进行修改,该文件对他们而言将变为只读。在我看来,这是一个非常干净的解决方案,并且与 samba 完全无关。