当 Ubuntu 中存在两个 sudo 用户时,用户文件是否仍然是私有的?

Jiz*_*ang 33 permissions sudo

我正在与我的一位同事共享我的个人 Ubuntu PC。

我使用不同的密码创建了另一个用户(他当然知道)并将其添加到sudoer列表中。

鉴于sudo在一个 Ubuntu 系统中有两个用户:

  • 这些用户中的任何一个的私有文件(由所有者和权限指定)是否仍然私有?

  • 我可以通过sudo命令修改我同事的文件,甚至sudo su,反之亦然?

Vid*_*uth 51

如果你的同事在 sudoers 列表中,他和你一样是 root,如果他想要的话(他也可以冒充你),然后他就可以看到一切。

如果您想要用户隐私,这是最糟糕的设置。您应该明确了解 Linux 上的用户管理是如何工作的。您可以从以下几篇文章开始:

即使有人可以物理访问相关机器,也没有隐私,他可以在启动时进入 root shell 并无论如何都能看到所有内容,如果这有密码保护,他仍然可以使用 USB 记忆棒和就这样进去。

所以在这种情况下最好的事情是正确的用户管理、root 密码以及加密驱动器和/或加密主目录。

  • 虽然 sudoers 最简单和最常见的配置是允许用户列表临时拥有 root 权限,但 sudoers 允许对访问进行细粒度控制。例如,您可以指定用户只能以 root 身份执行某些特定命令。如果您注意只允许用户执行不允许创建 root shell 或以其他方式创建超出您希望允许的命令范围的持久 root 访问权限的命令,则通常可以避免授予他们 root 访问权限。 (3认同)
  • 虽然确保`sudo -i`不起作用:) (2认同)

sud*_*dus 19

一个简单的替代方法是将您的私人数据保存在一个加密文件中(可以是一个 tar 存档文件,您可以加密,例如使用 gpg)。您必须记住在查看完明文文件后覆盖和删除它们。

对于共享计算机和 sudo(root)访问权限的所有人来说,另一种选择是使用加密的 home 和加密的交换。

但是,如果您同时登录,这将无济于事。事实上,即使使用加密的家庭,您也必须重新启动计算机才能以明文格式删除文件。


一般来说,安全性非常困难,具有加密磁盘(带加密的 LVM)的单用户系统将是确保事物安全的最简单方法。

  • 不要将敏感的私人数据存储在共享计算机中
  • 不要将私人数据存储在属于您雇主的计算机中

  • 这甚至不能保护您免受邪恶女仆的攻击:其他 sudo 用户可以更改系统以诱骗您向他们提供密码。这样的问题应该读作“我怀疑我的同事是俄罗斯间谍。我应该给他在我的电脑上的 sudo 权限吗?” (6认同)
  • dm-crypt/LUKS 容器不必担心覆盖明文文件(任何应用程序的临时文件和交换除外),或者一个带有 `ecryptfs-mount-private` 的加密的 ~/.Private 目录 (3认同)

Yar*_*ron 8

一旦你能够获得root的权限(例如,使用sudosu等等)。
您可以完全访问系统上的每个文件。

因此,具有sudo权限且可以root使用的用户都sudo bash将拥有对系统上每个文件的完全访问权限

根据这个Q&ASE-Security你也许能修改SELinux(这是不是Ubuntu的),以限制root访问:

如果您的问题是“我现在可以轻松安全地执行此操作吗?” 答案是不。如果您的回答是“我准备学习 SELinux,对我的发行版感到沮丧并忍受很多无法正常工作的事情”,那么答案是可以比您的平均安装更多地限制 root。也就是说,这不会以任何方式使您免受攻击 - 它不会使用户无法在软件或物理上绕过这种额外的访问控制。

  • 您可以使用 apparmor 和 selinux 限制 root,但是,具有完全 root 访问权限或通过恢复 shell 或 live CD 访问的人可以使用任一系统(apparmor 或 selinux)将其更改回来。 (2认同)

UTF*_*F-8 5

为了使其他答案已经完全清楚:该其他用户不仅是“与您一样多的根”(Videonauth 的答案),他们还可以成为您(切换到您的用户帐户)

这是因为拥有超级用户权限,可以切换到任何帐户。

你可能知道

sudo su
Run Code Online (Sandbox Code Playgroud)

如果 root 没有设置密码,这是打开 root shell 的一种选择(因此您不能直接以 root 身份登录)。

su是“切换用户”的缩写。切换到哪个用户?没有说明,对吧?但是从手册页中,我们可以了解到:

在没有用户名的情况下调用,su 默认成为超级用户。

所以这实际上是

sudo su root
Run Code Online (Sandbox Code Playgroud)

如果您没有重命名root为其他名称。

如果您只是运行su <someuser>,则会提示您输入密码。因此,如果您运行su root,系统会提示您输入 root 的密码(默认情况下在 Ubuntu 中不存在,因此您无法登录(请注意,未设置密码意味着无法通过密码登录)与作为空字符串的密码不同))。但是,如果您运行sudo su root,系统会提示您输入自己的密码。并且您只会收到sudo. 一旦sudo收到您的密码,它就会以超级用户权限运行它作为参数接收到的命令。由于拥有超级用户权限时可以切换到任何帐户,因此不需要密码提示。

所以通过执行

sudo su <yourusername>
Run Code Online (Sandbox Code Playgroud)

,其他 sudoer 可以以您的身份登录。