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


8

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

我该怎么做?

Answers:


9

摘自Morbius1 在Ubuntu论坛上的出色文章。

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

  1. 创建共享文件夹:

    sudo mkdir /home/Shared
    
  2. 创建新用户的组:

    sudo addgroup newgroup
    
  3. 将共享文件夹的所有权更改为新组:

    sudo chown :newgroup /home/Shared
    
  4. 将所需的用户添加到该组:

    sudo adduser user1 newgroup
    

对所有用户重复此操作。

现在,您可以决定要这些用户能够做什么:

  • [a]所有组用户都可以添加和删除文件夹,并且可以读取但不能写入彼此的文件:

    sudo chmod 0770 /home/Shared
    
  • [b]与上述相同,但只有文件所有者可以删除它:

    sudo chmod 1770 /home/Shared
    
  • [c]所有组用户都可以添加到文件夹或从文件夹中删除,并且可以读写彼此的文件:

    sudo chmod 2770 /home/Shared
    
  • [d][c]相同,只不过文件所有者可以删除它:

    sudo chmod 3770 /home/Shared
    

1在chmod命令的所述第一位置是所述粘滞位,其防止一个文件的删除到所有者以外的任何人。

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

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

就setgid位而言,所有这些都需要注意。实际上,在其中创建的所有新文件以及所有复制到该文件夹​​的文件都将继承该文件夹的组。但是没有文件移动到该文件夹​​。无论文件从何处移动,文件都保留所有权。解决此问题的一种方法是使用bindfs。

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

sudo chmod 0775 /home/Shared
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.