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

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

我该怎么办?

取自Morbius1关于Ubuntu论坛的优秀post。

执行此类操作的经典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 

chmod命令的第一个位置中的1粘滞位 ,它阻止将文件删除给除所有者之外的任何人。

chmod命令第一个位置的2setgid位 ,它强制所有新文件或复制文件具有该文件夹的组。

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

就setgid位而言,有一点需要注意。 创建的所有新文件和复制到该文件夹​​的任何文件实际上都将inheritance该文件夹的组。 但是没有文件移动到该文件夹​​。 移动的文件保留所有权,无论它们从何处移动。 解决此问题的一种方法是使用bindfs。

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

 sudo chmod 0775 /home/Shared