在linux / bsd上的工作站上与不同用户共享目录

时间:2011-01-04 23:59:29

标签: linux permissions sysadmin bsd file-sharing

我正在设置一个开发工作站,过去只有一个共享帐户,可以为每个可能正在使用它的开发人员创建一个帐户。

我们通常会切换工作站。我希望所有用户以透明的方式“共享”某些目录。

我创建了/ usr / local / share / workspace和/ usr / local / share / rvm目录,它们符号链接到〜/ workspace和〜/ .rvm。

默认情况下,所有开发人员也应该可以写入目录中创建的子目录/文件(无需使用sudo)。我也不希望将目录设置为全局可写,因为ruby给了我一个警告,因为rvm目录在路径上(我不关心安全隐患)。

我该怎么做?是否有任何资源概述良好做法?

2 个答案:

答案 0 :(得分:1)

如果要在单个工作站上共享目录,请将所有相关用户放在一个组中(请参阅man addgroup和/ etc / group),然后在目录树上运行“chgrp -R yourgroup yourdir”。要授予写入权限,请运行“chmod -R g + w yourdir”。

如果要在不同的计算机之间共享,可以使用NFS。例如,请参阅this HOWTO

答案 1 :(得分:1)

我假设/usr/local/share/workspace并且所有包含的文件/目录都归所有用户所在的组所有。如果这是真的,那么您需要做的就是应用setgid和group execute bits到每个目录,并在每个文件和目录上设置组写位:

find /usr/local/share/workspace -type d -exec chmod +s {} \;
chmod -R g+wX /usr/local/share/workspace

setgid位在应用于目录时意味着:

  • 目录中创建的所有文件和目录都将其组所有权默认为目录的所有者。
  • 目录中创建的所有目录也将设置其setgid位,因此这对新目录也有效。 (换句话说,这个位会自动递归地应用于新目录。)

用户还需要提供允许对其他组成员进行写访问的umask。因此,他们应该在umask 002中添加~/.profile之类的内容。如果他们不这样做,那么他们创建的任何文件或目录可能不会被其他组成员写入。