我和一些朋友在同一个目录上工作,他们通过 SSH 访问它。
我将我们添加到同一个组并定义了一个粘性位以保持用户:组值相同。
但是当用户创建文件/文件夹时,该组没有定义写入属性,从而禁止其他人对其进行写入。
我如何定义 Umask 来为特定目录及其子文件夹中的组添加写入值?
我之前尝试寻求一些帮助,但我只看到针对 Fedora/CentOs 的帮助,而我正在使用 Debian Squeeze。
感谢您的帮助
答案1
我假设你已经这样做了:
chmod g+rwxs directory
现在您必须确保用户具有像 002 这样的 umask。要为所有用户设置 umask,请尝试在 /etc/bashrc 或 /etc/profile 中。
警告:您不能为每个目录设置一个 umask,因为它是一个进程级别的事情。
有趣的读物http://www.cyberciti.biz/tips/understanding-linux-unix-umask-value-usage.html
答案2
这是一个使用设置它为您提供了在每个目录上请求的细粒度控制,其中将使用组的写入属性创建新文件:
创建拥有共享文件夹的组:
sudo addgroup projects
创建文件夹“项目1“我们希望分享一条合适的 FHS 路径,例如/srv:
sudo mkdir /srv/project1
更改共享的所有权文件夹“项目1“ 到团体“项目“:
sudo chown root:projects /srv/project1
将文件夹模式设置为组成员可写入,但只允许所有者删除自己的文件:
sudo chmod -R 1775 /srv/project1
将您的用户添加到组“项目“:
sudo usermod -a -G projects user1 sudo usermod -a -G projects user2
用户必须注销并重新登录才能识别新的组成员身份
最后,应用
setfacl
以便所有新文件都可由组成员写入:sudo setfacl -d -m group:projects:rwx /srv/project1
用户现在可以编辑彼此的文件。在管理群组文档方面,Git 等版本控制系统将是更好的解决方案
答案3
umask 是用户环境(更具体地说是进程)的属性,而不是目录的属性。因此,共享该目录的每个用户都应将以下umask
命令添加到他们的~/.profile
:
umask 002
这将使他们创建的文件默认为可组写入。