注意:我正在使用 Ubuntu 12。我并不是一个完全的新手(我可以设置一个强化的 Web 服务器和诸如此类的东西)但现在我试图将它用作桌面,我感觉我从未学过基础知识。
Linux 中是否有一个默认文件夹用于本地用户之间共享内容?我以为 /usr/share 就是用于此的,但除非我使用 sudo,否则它不允许我这样做。
我注意到右键单击文件夹时会出现“共享选项”项,但我担心它可能会在后台执行我不喜欢的操作。那么它是如何工作的?从 CLI 执行相同操作会很复杂吗?
答案1
唯一可用于此目的的现成文件夹是 /tmp 和 /var/tmp。/tmp 可能会在每次重新启动时被清除,而 /var/tmp 可能会在一段时间(例如一周)后被删除。无论如何,它们用于暂时的文件。即使 Ubuntu 12.04 不触碰 /var/tmp,您也永远不知道下一个版本会做什么,因此您应该始终假设这些目录的内容可能会在没有警告的情况下被删除。
如果这些是临时文件,那么您需要另一种解决方案。如果我希望其他本地用户能够读取我的文件,我会将我的主目录模式设置为 755(我通常这样做);但在这种情况下,我会注意将我的主目录中的任何秘密文件或目录分别设置为 600 或 700。
临时文件 + 主目录可读性通常就足够了。如果您确实想要一个共享文件夹,则需要创建 /home/shared 等,并将其设置为 777 或 1777(1777 表示所有人都可写,如 777,但只有文件的所有者可以删除该文件)。更高级的设置包括设置目录 setgid 位和使用用户组,但我不会详细说明这一点。
我通常不喜欢目录的 711 模式;我发现它令人困惑,而且不清楚它有多安全(我喜欢假设可读意味着可读,即使你必须猜测它的名字才能访问它)。
总之,解决方案取决于您要做什么。
答案2
如果您授予目录的执行权限但没有读取权限,则进程将能够遍历目录但无法读取其内容。这将允许访问其中的子目录。所以,简而言之,0711。
答案3
如果您不放心让其他人访问您的主目录,您可以使用绑定挂载。即,您可以使用不同的路径访问目录。它类似于文件系统中的链接,但不需要授予用户对路径中所有目录的访问权限。
例如,您创建一个名为 /shares (或任何您喜欢的目录)的目录,并将所有应该共享的目录链接到其中(必须先创建 /shares/user):
mount --bind /home/user/private/stuff/share /shares/user
因此,只有共享本身才应该可供其他人访问,/home/user 可以是 0700(以及私有内容)。要使此设置永久生效,您必须向 /etc/fstab 添加一个条目:
/home/user/private/stuff/share /shares/user none bind 0 0
mount 命令或编辑 /etc/fstab 将需要 root 权限,因此在使用非特权帐户时请在命令前加上“sudo”。