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


31

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

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

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

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

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



6
Ubuntu允许在创建用户时对主文件夹进行加密。那可能正是这里需要的功能。
托尔比约恩Ravn的安徒生


@ThorbjørnRavnAndersen对主文件夹进行加密之后,是否仍可以像以前一样方便地访问其中的文件?
Jizhou Huang

3
为什么不从其他用户中删除sudo访问权限,却成为唯一的管理员?无论其他用户需要sudo的原因为何,您都可以修复,以使他们不需要sudo(安装,打印,自动更新等)
Xen2050

Answers:


51

如果您的同事在sudoers列表中,则只要您愿意,他就可以成为您的根源(他也可以冒充您),然后他可以看到所有内容。

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

即使这样,即使有人可以实际访问所讨论的计算机,也没有任何隐私权,他可以在启动时掉入根shell中,无论如何都可以看到所有内容,并且如果这是受密码保护的,他仍然可以使用USB记忆棒和以这种方式进入。

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


2
虽然请确保sudo -i不起作用:)
Wilf

3
sudoers的最简单和最常见的配置是允许用户列表临时拥有root特权,而sudoers则允许对访问进行细粒度的控制。例如,您可以指定用户只能以root用户身份执行某些特定命令。如果您只允许用户执行不允许创建根shell或以其他方式创建超出您要允许的命令范围的持久性root访问权限的命令,则可以避免给他们一般的root访问权限。
bgvaughan

19

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

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

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


通常,安全性非常困难,并且具有加密磁盘(具有加密功能的LVM)的单个用户系统将是确保事物安全的最简单方法。

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

3
dm-crypt / LUKS容器无需担心会覆盖明文文件(任何应用程序的临时文件和交换除外),也不会担心单个加密的〜/ ecryptfs-mount-private
.Private

6
这甚至不能保护您免受邪恶的女仆攻击:其他sudo用户可以更改系统,以诱骗您提供密码短语。这个问题应理解为“我怀疑我的同事是俄罗斯间谍。我应该在计算机上给他sudo权利吗?”
sleblanc

带有加密磁盘映像的虚拟机呢?blogs.oracle.com/scoter/…–
左右约

1
如果您需要隐私,则只需要一个用户系统,换句话说,不需要其他用户,绝对不需要其他sudo用户。具有加密系统的Ubuntu LVM容易受到邪恶的女仆攻击。我仍然认为它比包括加密家庭在内的其他简单替代方法要好。当然,如果愿意,您可以拥有加密的磁盘,加密的家庭和单个用户系统,以使入侵者的工作更加困难,例如,根据此链接, iso.qa.ubuntu.com / qatracker / milestones / 363 / builds / 126342 /…
sudodus

新的root用户所需要做的就是安装内核空间rootkit,例如diamorphine。甚至不需要费心处理Userland LD_PRELOADhacks:只需创建一个简单的击键记录器,然后将其扔到某些python脚本中,即可根据键入的时间/分组以及一些文本解析进行一些模糊的K均值分割。完成。现在,您有了用户的密码短语,并且很可能可以获取他们的个人数据。

8

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

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

根据中的Q&ASE-Security您可能可以修改SELinux(不是Ubuntu)以限制root访问权限:

如果您的问题是“我现在可以轻松安全地做到这一点吗?” 答案是不。如果您的答案是“我准备学习SELinux,请精打细算我的发行版,并忍受很多无法正常工作的问题”,那么答案是,可以对root的限制远比您的平均安装多。话虽如此,但这绝不会使您无所不能被利用-不会使用户无法在软件或物理上规避这种额外的访问控制。


2
您可以同时使用apparmor和selinux来限制root用户,但是,具有完全root用户访问权限或通过恢复外壳或实时CD进行访问的人,无论使用哪个系统(apparmor或selinux)都可以将其改回。
Panther

1
即使您使用SELinux等来限制root可以直接执行的操作,他们仍然可能能够修改用户自己运行的实用程序。而且,如果他们应该能够运行任何升级,他们将需要访问权限以修改系统上的二进制文件……
ilkkachu

5

为了使其他答案已经完全清楚地说明:另一个用户不仅“像您一样拥有root”(Videonauth的答案),他们也可以成为您(切换到您的用户帐户)

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

你可能知道

sudo su

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

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

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

所以这实际上是

sudo su root

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

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

所以通过执行

sudo su <yourusername>

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


+1; 是的,我没有提到这是因为不会引起混乱,正确保护机器的领域很广,到处都是可以挣扎的石头。对于已经给出的答案仍然是很好的补充。
Videonauth

不确定,但不是sudo su总是默认为UID 0和GUID 0吗?如果是,那么您如何命名“ root”就无关紧要。
Videonauth

@Videonauth您的第二条评论中的第二句话是正确的。但是,这正是我加入您批评的句子的原因。如果重命名rootjohnsudo su则现在等效于sudo su john,不再等于sudo su root
UTF-8

3

通过编辑sudoers文件,可以限制使用sudo特权升级可以运行的程序。/etc/sudoers)。

有关更多详细信息,请参见超级用户对此问题的公认答案,有关Unix和Linux,请参见此处。有关限制访问权限的建议,请参见slm答案/etc/sudoers

还要man通过输入来检查sudoers 页面,man sudoers不要忘记对其进行测试。请记住,通过不受限制的sudo访问,用户可以完全模拟其他任何用户。例如,如果用户foo要运行命令

sudo exec su - bar

然后,他们将能够以bar该用户的所有权限充当用户。


6
请注意,slmmtak的答案中sudoers显示的特定行无法使您执行某些操作,而不能执行其他操作,因为使用它们执行任何命令非常容易。(有关原因的详细说明,请参见每个答案的注释。)答案可能并非严格错误,因为有时可以允许用户以root 用户身份运行特定命令,而无需有效地使他们成为管理员。但是,很难做到这一点。sudo
伊莱亚·卡根

@EliahKagan对。有必要仔细确保您不允许他们使用某种允许他们执行任何命令的机制。当然,这取决于您对另一个人的信任程度。

1
@EliahKagan因此,建议您阅读手册页并测试任何实现。限制具有sudo特权的用户是可行的。但是,正如您所指出的那样,这不是一个完全安全的解决方案,必须给予授予sudo权限的用户一定程度的信任。有趣的是,对于推荐使用该机制(sudoers文件条目)的答案的建议,请使用downvotes,以限制sudo命令的范围。
魅力者

我认为使用内建机制并不是建议,因此让我指出我可以给您什么建设性的批评。1)它包含一些拼写错误,格式不正确,阅读时看起来很奇怪,它本身很容易修复。2)您指向在Ask Ubuntu之外给出的其他答案,在这里您应该将必要的部分作为大括号引用并将其张贴在此处,使您的链接成为引号的一部分,以指向您从其引用的来源。希望这将有助于改善您的答案。
Videonauth

并且由于我在先前的评论中用尽了所有字符:3)您可以进一步解释,请指出@EliahKagan的警告。
Videonauth

0

如果您标记了以前的答案并不完全适用 encrypt home folder在安装Ubuntu时进行了。这样可以保证为每个用户加密的主文件夹,即使没有该主文件夹的用户/所有者的正确密码,root也无法读取数据。您的同事将需要更改密码才能读取文件,这将引起注意。

当然,人们是对的,在计算机上共享具有宝贵或敏感数据并与同事进行根访问的机器并不是一个好主意。

根据这些数据的值,我建议您要求自己的机器。


1
一旦“受害者”登录并安装了加密的驱动器,这可能不会阻止root用户执行“ su-”或类似的操作。...也可能会有cron脚本或其他触发器等待该操作即将发生。而且,root用户可以轻松地替换处理密码输入的二进制文件,以使用存储明文密码的版本来解锁加密的主目录,然后等待。通过将受害者将使用的某些二进制文件更改为您希望的功能,仍然可以阻止任何阻止此类攻击的安全机制。
rackandboneman

5
我对这个答案不满意,因为加密的主目录仅在您当前未登录时才有用。登录后,您的数据将被解密,并可供具有sudo访问权限的其他用户使用。
Panther

2
但是为什么要这样呢?即使并不会从远程(例如SSH)或虚拟控制台进行并发登录,也不能同时以图形方式登录两个用户并两个用户之间切换吗?我使用Lubuntu(具有LXDE),但从未以图形方式登录多个用户,但我的印象是,功能丰富的桌面环境已经支持此功能已有几年了,并且默认情况下启用它。我是否对此感到误解?或者,锁定屏幕后,文件是否不再由root解密和读取?
伊莱亚·卡根

2
IRRC将用户加密密钥公开存储在计算机上以提供加密和解密,因此 sudo su - <username>不需要其他用户密码的用户通常可以成功解密其他用户目录。但是我在这里可能是错误的,需要在VM中进行测试,稍后再进行测试。无论如何,在所有情况下,都有99%归结为:“如果我可以物理访问您的机器,那么您就被迫了!”。
Videonauth

1
超级用户可以更改登录过程以记录其看到的用户名和密码。等待其他用户登录并解决问题。
Stig Hemmer
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.