如何设置文件夹及其子文件夹的 umask?

如何设置文件夹及其子文件夹的 umask?

我和一些朋友在同一个目录上工作,他们通过 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

这是一个使用设置它为您提供了在每个目录上请求的细粒度控制,其中将使用组的写入属性创建新文件:

  1. 创建拥有共享文件夹的组:

    sudo addgroup projects
    
  2. 创建文件夹“项目1“我们希望分享一条合适的 FHS 路径,例如/srv

    sudo mkdir /srv/project1
    
  3. 更改共享的所有权文件夹项目1“ 到团体项目“:

    sudo chown root:projects /srv/project1
    
  4. 将文件夹模式设置为组成员可写入,但只允许所有者删除自己的文件:

    sudo chmod -R 1775 /srv/project1
    
  5. 将您的用户添加到组“项目“:

    sudo usermod -a -G projects user1
    sudo usermod -a -G projects user2
    
  6. 用户必须注销并重新登录才能识别新的组成员身份

  7. 最后,应用setfacl以便所有新文件都可由组成员写入:

    sudo setfacl -d -m group:projects:rwx /srv/project1
    

用户现在可以编辑彼此的文件。在管理群组文档方面,Git 等版本控制系统将是更好的解决方案

答案3

umask 是用户环境(更具体地说是进程)的属性,而不是目录的属性。因此,共享该目录的每个用户都应将以下umask命令添加到他们的~/.profile

umask 002

这将使他们创建的文件默认为可组写入。

相关内容