如何与其他用户共享目录?

Ema*_*ele 8 permissions shared-folders

我不希望系统上的任何人都可以访问共享文件夹,我希望它只能被一组受限制的用户访问。

我该怎么做?

War*_*ill 11

摘自Morbius1在Ubuntu 论坛上的这篇优秀文章。

做这种事情的经典 Linux 方式是这样的:

  1. 创建共享文件夹:

    sudo mkdir /home/Shared
    
    Run Code Online (Sandbox Code Playgroud)
  2. 创建新用户的组:

    sudo addgroup newgroup
    
    Run Code Online (Sandbox Code Playgroud)
  3. 将共享文件夹的所有权更改为新组:

    sudo chown :newgroup /home/Shared
    
    Run Code Online (Sandbox Code Playgroud)
  4. 将您想要的用户添加到该组:

    sudo adduser user1 newgroup
    
    Run Code Online (Sandbox Code Playgroud)

对所有用户重复此操作。

现在您需要做出一些决定来决定您希望这些用户能够做什么:

1chmod 命令第一个位置的A是粘滞位,可防止将文件删除给所有者以外的任何人。

一个2在chmod命令的第一个位置是setgid位,这迫使所有新的或复制的文件有组文件夹中。

3chmod 命令第一个位置的A是粘性 ( 1) 和 setgid ( +2) 位的组合。

就 setgid 位而言,所有这些都有一个警告。在该文件夹中创建的所有新文件以及复制到该文件夹​​中的任何文件实际上都将继承该文件夹的组。但不是文件移动到该文件夹​​。移动的文件保留其原处的所有权。解决这个问题的一种方法是使用 bindfs。

最后,如果您希望组外的其他人能够查看文件但不更改它们,请将chmod命令中的最后 0 更改为 5,例如:

sudo chmod 0775 /home/Shared
Run Code Online (Sandbox Code Playgroud)

  • 根据系统的“umask”值,您可能必须执行“setfacl -d -mg::rwx /home/Shared”以确保新文件和子目录具有组写入权限。 (2认同)
  • 要生效,用户必须注销并重新登录。 (2认同)