如何与其他用户共享目录?
我不希望系统上的任何人都可以访问共享文件夹,我希望只有一组受限用户才能访问它。
我该怎么办?
取自Morbius1关于Ubuntu论坛的优秀post。
执行此类操作的经典Linux方式如下:
-
创建共享文件夹:
sudo mkdir /home/Shared
-
创建新用户的组:
sudo addgroup newgroup
-
将共享文件夹的所有权更改为新组:
sudo chown :newgroup /home/Shared
-
将您想要的用户添加到该组:
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命令第一个位置的2
是setgid位 ,它强制所有新文件或复制文件具有该文件夹的组。
chmod命令的第一个位置中的3
是sticky( 1
)和setgid( +2
)位的组合。
就setgid位而言,有一点需要注意。 创建的所有新文件和复制到该文件夹的任何文件实际上都将inheritance该文件夹的组。 但是没有文件移动到该文件夹。 移动的文件保留所有权,无论它们从何处移动。 解决此问题的一种方法是使用bindfs。
最后,如果您希望组外的其他人能够查看文件但不更改它们,请将chmod
命令中的最后0更改为5,例如:
sudo chmod 0775 /home/Shared