我的所有程序是否都拥有我所有文件的所有者权利?

我的所有程序是否都拥有我所有文件的所有者权利?

我担心我的所有程序都可以完全访问我的所有文件。

例如:我的用户是“john”。我安装了一些程序,比如 Dropbox。Dropbox 以“john”的身份运行。因此,它不仅对 ~/.dropbox 下的文件拥有完全权限,而且对包括 ~ 在内的所有文件也拥有完全权限。

1)我说得对吗?如果是的话,

2)我应该担心这件事吗?

3) 有什么方法可以修复这个问题?有人告诉我可以使用 chroot 或 setuid,但我不确定如何使用它们。

我正在使用 Ubuntu 12,以防万一。

答案1

这是合理的考虑:其他平台(如 MacOS-X)和应用程序(如 Chrome)正在使用沙盒来运行整个应用程序或应用程序的部分内容,这样它们就不再拥有与您相当的完全控制权。

因此,回答 1,是的,如果您启动一个以您自己的身份运行的应用程序,它具有与您所做的相同的访问权限:您可以编辑的任何文件,它也可以编辑,等等。唯一的例外是如果应用程序本身执行一些限制权限的操作。

在回答 2 的问题时,你可能应该对此感到担忧,而不是积极地担心毕竟,您运行的每个应用程序都具有相同的访问权限 - DropBox 的唯一区别在于它来自上游发行版以外的其他发行版。

那么,问题 3:您能解决这个问题吗?答案是“可能不能”。这并不是说不可能,而是很难以一种满足您使用应用程序或服务需求的方式来解决这个问题。

使用chroot允许您假装存在另一个“根目录”,而不是实际的根目录。这会将应用程序(如 dropbox)与您的实际根目录隔离开来 - 并可能让您摆脱它可以读取主目录其余部分的风险。(添加一个从~/.dropbox到的符号链接~/chroot/whatever/home/you/.dropbox,它甚至没有那么不方便。

但是,你需要是 root 用户,或者使用类似施鲁特管理对运行应用程序的访问,而 chroot 仅隔离系统的几个部分 - 文件。具有 root 权限的应用程序仍可以看到外部或逃逸。各种其他资源(IP 端口、pid 等)仍是共享的。

另外,我敢打赌 DropBox 有一个 UI 组件,但在 chroot 下无法很好地工作。即使可以,这种限制也会损害其他应用程序。

另一种选择是设置用户标识应用程序,您可以说“无论谁运行它,都以其他用户的身份启动它,而不是启动它的用户”。

这通常用于允许您(普通用户)以 root 身份运行的应用程序(例如 sudo)。但是,它也可以将进程的用户或组设置为非特权用户。

问题在于它以不同的用户身份运行 - 就像您运行它时使用的用户sudo -u another-user dropbox或其他用户一样。这意味着它无权访问您的主目录,并且,如果不努力,您就无权访问其他用户的主目录。

您可以解决这个问题,但在一般情况下,这既不简单也不方便。通常,您希望共享一个组,并尝试安排它可以读取的文件归该组所有,而不是您的标准组。即使使用 setuid 目录(更改在其下创建的文件的组或所有者),这也并不容易,部分原因是您需要管理您的 umask,这在 Linux 下很麻烦。

最后,你可以使用应用装甲或者SELinux保护应用程序。我相信 Ubuntu 已经选择了 AppArmor 作为他们的首选。虽然有令人信服的论据表明它不如 SELinux 安全,但它在概念上也更简单,因为它基于可见的名称和路径,而不是安全标签。

您可能会发现这是一种增强安全性的有效方法,而不必走更复杂的路径。理论上,它应该允许您将 DropBox 限制在文件夹~/.dropbox没有什么否则无需以其他用户身份运行。

因此,如果您真的想提高那里的安全性,请查看 chroot 路径。这是在 Ubuntu 上提高 DropBox 安全性最省力的方法 - 至少比 setuid 应用程序省力得多。

也就是说,您面临的最大风险很可能来自 DropBox 的员工——我们知道他们甚至会在用户之间进行重复数据删除,因此他们的系统可以看到未加密的内容,这意味着为他们工作的人也可以做同样的事情。

你可能会考虑使用 encfs而是在文件发送到 DropBox 之前对其进行加密……

答案2

1) 是的。2) 一般情况下不会。您必须信任您运行的至少部分软件,以免弄乱一切。3) 最简单的方法可能是以其他用户身份运行该软件。如果它不需要访问任何内容,您可以以基本上没有权限的“nobody”用户身份运行它。否则,您可以将应用程序必须访问的所有文件的所有者更改为它以之运行的用户。请注意,这会使您和其他程序更难访问文件。

总体而言,我不会太担心。你备份了数据,无论如何都可以恢复文件,不是吗?

答案3

1)我说得对吗?

基本上是的,但拥有访问权限的不是“程序”,而是拥有运行“程序”的“进程”的“用户”。因此,如果您运行 Dropbox,Dropbox 就有您的访问权限。如果其他人运行 Dropbox,它就有他们的访问权限。

2)我应该担心这件事吗?

并不真地。

相关内容