我正在尝试使用 Linux 作为文件服务器来设置一个小型家庭网络,并且遇到了一些我似乎无法解决的文件夹权限问题。设置:
- 配置了 Samba 的 Ubuntu 14.04 Linux 文件服务器。
- 几台 Windows 7 客户端计算机。
家里的每个人都已获得 Linux 文件服务器的用户名/密码,他们可以使用 SSH/Putty/任何其他方式登录服务器。
Linux 文件服务器上的 Samba 已配置为以可写模式将几个目录共享给 Windows,并且所有客户端计算机都可以看到此目录并读写文件。例如,假设 /media/data/photos 共享为 \fs01\photos。所有 Windows 用户都可以写入此照片目录,效果很好。他们可以创建子目录,放置图片,等等,一切正常。
问题是我希望这些共享(以及它们下面的所有目录)对所有人免费。任何用户都应该能够编辑/重命名/移动/复制/删除任何这些文件夹中的文件。当一个用户尝试移动/组织/删除/重命名其他用户创建的文件时,就会出现问题。因此,假设用户 A 创建了 /media/data/photos/2014NewYearsEve,而用户 B 决定它实际上应该是 /media/data/photos/2014/NewYearsEve。按照我现在设置的方式,我不断收到权限错误。
我知道在 Linux 中默认情况下,创建该文件的用户是该文件的所有者,因此我了解错误的来源,并且我知道如何手动更正它(chown 和 chmod,然后任何用户都可以操作文件很好)。但由于共享(例如/media/data/photos)是“通用的”,我希望权限在创建文件和目录时自动反映这一点。来自 Windows 背景(这是我的第一个真正的 Linux 设置),我对如何解决这个问题感到非常困惑。
这是我尝试过的(基于互联网、stackexchange 等上的一大堆文章):
我将目录 /media/data/photos 的组更改为“nogroup”(sudo chown nobody:nogroup /media/data/photos) 我在 /media/data/photos 目录上设置了 setgid 标志(sudo chmod g+s /媒体/数据/照片)。
此后,放入共享中的文件似乎获得了正确的组分配(ls -l 对新文件和子目录显示 nogroup)。但是组中似乎缺少移动文件所需的执行权限(我认为这是必要的,对吗?)(ls -l 中的权限对于文件是 -rwxrw-rw- ,对于目录是 drwxr-sr-x+ )。
如何让 Linux 自动为文件和目录的组添加 x 位?或者更一般地说,我如何使股票免费?
答案1
创建一个名为 Family 的新组。为附加到 samba 共享的所有文件夹授予 Family RWX 权限,即 777,并使 family 成为文件夹的所属组。然后将每个家庭成员添加到群组家庭中。
groupadd family
chown -Rv root:family /linux/path/to/samba/share
useradd -G family *username for mom*
useradd -G family *username for dad*
- 重复步骤 3 和 4,直到所有家庭成员都在家里。
chmod -Rv 0777 /linux/path/to/samba/share
新项目会继承所有者的权限,但如果所有者是 的成员family
,则没有关系