*nix 系统的唯一用户应该有两个帐户吗?

信息安全 linux 苹果系统 特权帐户
2021-08-10 05:59:05

*nix 的唯一用户(尤其是 Linux 和 MacOS)是否应该有两个帐户,一个具有 sudo 权限,一个没有?多年前我读到,在您的个人计算机上,您应该以非特权用户的身份执行日常任务,并切换到特权用户来执行管理任务。这是真的?

注意:我不是指您是否应该以 root 身份登录以进行日常使用。这显然是个坏主意,但是您的日常使用帐户应该能够使用 sudo 吗?

第二点:我特别指的是不用作服务器或为远程用户托管任何功能的个人设备。

4个回答

在 69 次投票后大幅更新,请参阅原始答案的答案历史记录。感谢@JimmyJames的讨论


首先,让我们谈谈威胁模型:你试图阻止潜在的攻击者做什么?

威胁模型:单用户系统上的身份盗用/勒索软件

通常对于最终用户系统,事实上的威胁模型是身份盗用/勒索软件。如果攻击者可以访问您的文档和/或可以像您一样运行 shell 命令,那么游戏就结束了。从这个角度来看,root 访问不会让攻击者获得任何东西。没有它,他们可以得到他们想要的东西。

sudo如果身份盗用/恶意软件是您唯一担心的事情,那么您的用户是否拥有权力,或者浏览器是否以 root 身份运行似乎并不重要。

(我还应该指出,恶意软件/将您连接到僵尸网络可能在没有 root 访问权限的情况下发生,因为登录脚本/安排 cron 作业不需要 root)。

XKCD 的 Randall Munroe似乎同意这个观点

授权

最后,我将添加此免责声明:是的,我知道这违背了“越安全越好”的普遍舆论。这不是真的。有时更多的安全性会变得更糟,例如过于复杂的密码策略最终会迫使人们写下他们的密码。您始终必须查看风险并确定实际适当的安全性。在这种情况下,锁定 root 访问权限并没有什么坏处,但是你让你的生活变得更加复杂,并且不清楚你是否从中获得了任何东西。

威胁模型:root访问或多用户系统

如果您有一个威胁模型,其中攻击者想要只有 root 可以访问的东西,或者机器上有多个用户帐户,那么答案实际上取决于您正在谈论的 *nix。这很快就会从个人电脑机箱转向服务器机箱,但无论如何我都会讨论。对于 linux,由于 Xorg 窗口系统中的一个错误(*ahem 功能*),您的日常帐户应该没有sudo权限。对于不使用 X 的操作系统,它可能没问题。

Linux(运行 X.org 窗口系统)

这是一篇很棒的文章,它向您展示了如何使用简单的用户域(非 root)shell 命令在 gui linux 机器上记录所有击键。总之:

$ xinput list 向您展示所有连接的人工输入设备

$ xinput test <id> 开始回显所选设备上的所有击键。

我进行了测试,并获得了我sudo在另一个终端窗口中输入的密码的日志。如果我锁定了我的计算机,那么当我重新登录时,我会看到我在锁定屏幕中输入的密码的日志。显然这不是 X 中的错误,而是一个特性。对了,我现在要躲到我的床底下。

所以,是的,这支持了你在 gui 中登录的任何用户都不应该有sudo权力的想法,因为记录你的密码然后成为 root 是微不足道的。我想你应该有一个专门的帐户来使用,并在你想使用时sudo切换到 TTY 终端(ctrl+alt+#sudo ) 。这是否值得担心取决于您:就个人而言,我关心的所有数据都已经存在于我的用户帐户中,但我可能会更改我的笔记本电脑设置,因为我是一个安全书呆子。

请注意,在我的测试中,我无法跨用户进行键盘记录。在 gui 或新的 tty 终端中执行“切换帐户”startx似乎会启动一个孤立的 X 实例。

感谢@MichaelKjörling 的观察:

这是Wayland [旨在取代 X 的窗口系统] 实际上试图解决的问题之一(请参阅安全性要点)。请记住,X11 起源于威胁模型与今天大不相同的时代。

对于系统管理员:这强化了仅通过 ssh 与 Linux 机器交互的习惯,从不使用 GUI。

Mac OSX

我不是 OSX 专家,但我知道它不使用 Xorg 服务器,所以我认为 Apple 的 GUI 可以正确处理这个问题,但我希望比我更专家的人参与进来。

视窗

我也不是 Windows 专家,但我相信 Windows 7 中引入的用户帐户控制 (UAC)功能通过在输入总线与常规桌面隔离的安全桌面中呈现管理员提示来解决此问题。

在大多数情况下,使用 sudo 要求输入密码就足够保护了。

suing 到另一个帐户和ing 获得权限之间的主要区别在于sudo,使用 sudo 你输入了与登录时相同的密码。如果你的威胁模型假设攻击者拥有你的帐户密码,那么你已经陷入了相当大的麻烦,超过另一个root帐户上的密码将保护您免受。

我发现在我的 unix 系统上拥有两个帐户是必不可少的,原因如下:

如果我弄乱了我的 .bashrc 或其他登录/终端设置文件,我可能会陷入我什至无法登录的情况。所以我完全无聊。这是可以想象的最糟糕的情况,因为如果您无法登录,您将无能为力。

我能够在几台计算机上解决此问题的唯一方法是使用另一个登录名,它允许我进入并使用 sudo,修复我的主帐户的启动文件。然后我退出我的帐户'2'并重新进入我的常规帐户。

有时我可能可以使用从 USB 启动选项,但老实说,我发现能够登录到另一个帐户,使用 sudo 并修复我的 .bashrc 然后注销并返回到另一个帐户都可以在几秒钟内完成第二次登录,比我的 USB 启动修复选项更可怕/不熟悉。当然是 YMMV (Your Mileage May Very)

我正在使用此设置,但原因超出了单个系统。

如果您想要提供一些针对勒索软件的保护的备份(并且您不想假设没有人会为 Linux 编写勒索软件),您需要备份到一个保留多个修订版的外部系统。

但是,我没有专门的工作站/终端来管理备份服务器。为此(不使用su)以单独用户身份登录在此处提供了一层保护。如果我的正常登录有sudo权限,仍然会有一个减速带,但它会很薄(默默无闻,恶意软件必须捕获sudo密码)。