AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1008217
Accepted
bmcentee148
bmcentee148
Asked: 2018-02-21 18:14:16 +0800 CST2018-02-21 18:14:16 +0800 CST 2018-02-21 18:14:16 +0800 CST

如果授予用户对所有命令的访问权限,sudo 比直接使用 su 更安全吗?

  • 772

所以我一直在研究使用suand之间的区别sudo,每个人似乎都同意这种sudo方法比允许访问 root 帐户本身更安全。他们说,使用 root 帐户,您只需一个命令即可破坏整个系统。这个我明白。但是在系统上创建的初始用户也可以使用 sudo 访问所有命令。这我可以通过运行找到su -l。如果是这种情况,那么我可以简单地运行sudo <game-ending command>以破坏我的系统。那么,与允许我直接访问超级用户帐户相比,这种方法如何更好或更安全呢?我可以运行所有相同的命令...

是因为sudo在命令行上使用我明确告诉计算机我认为我知道我在做什么?他们认为人们会忘记他们在超级用户帐户下,除非他们明确表示吗?

人们还指出,如果系统被外国人入侵并进入,那么在 root 帐户下将允许他们对我的系统做可怕的事情。但是在我看来,如果他们已经可以访问我的帐户并且知道我的密码,他们可以通过使用 sudo 并输入我的密码来做同样可怕的事情,因为他们甚至不需要知道超级用户的密码。我没有得到什么?

security command-line sudo administrator
  • 6 6 个回答
  • 14289 Views

6 个回答

  • Voted
  1. Best Answer
    Panther
    2018-02-21T18:38:32+08:002018-02-21T18:38:32+08:00

    就我个人而言,我不一定认为它更安全,并且(sudo)的大部分好处都在多用户系统上。在单用户系统上,它可能是一个清洗。

    好处是(排名不分先后):

    • sudo 具有出色的日志记录。sudo 记录每个命令。
    • sudo 允许更精细的粒度控制。可以配置 sudo 以授予对某些但不是所有命令的 root 访问权限。
    • sudo 使用登录密码。这可以保护必须提供 root 密码(就像使用 su 一样),并且与上面关于更细粒度的控制/访问 root 的点有关。
    • 在 Ubuntu 中,默认情况下,root 帐户是锁定的。这可以阻止破解者登录(通过 ssh 远程登录),他们必须猜测用户名和密码。如果 root 帐户没有被锁定,就像 su 一样,那么他们只需要破解 root 的密码。
    • sudo -i可能是将 root 的环境变量与用户隔离的最佳方法。这不时出现,但比较深奥。请参阅https://help.ubuntu.com/community/RootSudo#Special_notes_on_sudo_and_shells
    • 有些人觉得必须在他们希望以 root 身份运行的每个命令之前输入 sudo 或让 sudo 超时可以让他们停下来更清楚地思考,并减少他们的错误或运行错误的命令。如果这样做对您有帮助,那也将是一个好处。

    可能还有更多好处,但是,恕我直言,这些是主要的。

    另请参阅 - https://help.ubuntu.com/community/RootSudo

    尝试回答您的其他一些想法:

    • 只要您知道密码,su 或 sudo 都不会阻止您运行恶意代码。两者都不是更安全或更好。
    • 破解者可以通过多种方法获得 shell 访问权限。当您在安全通知( https://usn.ubuntu.com/usn/ )中看到“运行任意代码”时,这意味着破解者可以运行 /bin/bash 或任何其他代码。因此,破解者通过各种漏洞利用,可以在不知道您的登录名或密码的情况下获得 shell 访问权限。sudo 或 su 都没有帮助。
    • 如果破解者有 shell 访问权限,他们可以在没有 root 访问权限的情况下造成很大的破坏。例如,加密您的所有个人数据的勒索软件。
    • 如果破解者通过 su 或 sudo 对具有 root 访问权限的帐户具有 shell 访问权限,则破解者可以通过本讨论范围之外的许多方法获得 root 访问权限。sudo 或 su 在这方面也没有优势。

    因此,虽然您已经观察到 sudo 的问题或缺陷,但 su 具有完全相同的漏洞,并且 su 在这些方面并不优于 sudo,恕我直言

    • 42
  2. dijksterhuis
    2018-02-22T04:03:45+08:002018-02-22T04:03:45+08:00

    想象一下,你有 20 分钟的时间来做一些复杂的事情。你有点宿醉,你必须赶时间。“让我们使用 su” 你说。“这会节省一些时间”是你的理由。

    不小心输入

    rm -rf /*
    

    代替

    rm -rf ./*
    

    您的系统现在正在自行变砖,距离截止日期还有 10 分钟。

    如果您明确选择何时需要 root,则可以最大程度地减少发生这种情况的机会。可能不需要Root,rm -r ./*为什么要使用它?为什么要冒险?

    这就是“安全”在这里的含义。最大限度地降低用户(所有用户,不仅仅是初学者)犯致命错误的风险。

    当然,这是一个极端的例子,不应该允许在生产环境中发生(我保证它已经发生在 prod 环境中)。

    安全方面也有一些 sudo 更适合的东西。正如@Panther 所说- 日志记录、限制、root 密码是 SPOF 等)

    • 10
  3. Dubu
    2018-02-22T07:00:44+08:002018-02-22T07:00:44+08:00

    我想在其他答案中添加一些历史观点。不幸的是,除了我自己对 Usenet 讨论和杂志文章的记忆之外,我没有准备好任何资源。

    前段时间,在 1990 年代,发行版让在您自己的硬件上安装 Linux 变得更加容易,即使没有太多计算机知识。¹因此,Linux 开始吸引越来越多的人,令人惊讶的是,这些人以前没有被训练为系统管理员一些 UN*X 方言。相反,许多人习惯于(单用户)系统,如 Windows 95/98。他们了解到,大多数 Linux 系统管理任务都需要在那个奇怪的“root”帐户下工作。

    因此,一些用户只是以root身份登录并使用该帐户进行所有日常工作。为什么他们必须一次又一次地输入 root 密码,或者只为一些管理命令登录一个新的sutty ?但是对所有事情都使用root当然不是一个好主意,因为在错误的地方使用一些粗心的命令可能会对系统造成更大的伤害。这甚至导致一些发行版(是 SuSE 吗?)为root用户修改桌面背景以显示一个大警告,即您应该将该帐户仅用于管理任务。

    因此,Ubuntu 方式sudo具有一些优势(除了Panther 已经列出的那些)。

    • 您不能直接登录到root帐户。² :-)
    • 安装过程不会要求您提供(额外的)root 密码,您只需要一个(您的用户的)密码。
    • sudo缓存您的凭据,因此对于按顺序执行的多个管理命令,您只需输入一次密码(与 相比su)。这减少了以root权限打开 shell 或新终端的冲动。
    • 而且它可以更轻松地在线和在文档中告诉用户他们必须以管理员身份输入哪些命令,哪些不需要。³

    ¹对于那些不敢自己动手的人,还有安装派对。
    ² 但是您可以在以普通用户身份登录后使用类似sudo -i或的命令来获取 root shell。 ³ 但是您当然知道您不应该简单地从 Internet 上复制和粘贴命令,对吗?sudo su - root

    • 9
  4. P. Goetterup
    2018-02-21T23:22:18+08:002018-02-21T23:22:18+08:00

    几十年来一直可以通过 ssh 禁用 root 登录。Ubuntu 禁用 root 帐户并让人们 sudo 一切的方式只不过是一种噱头。只需“sudo -s”,您就有了一个 root shell。通过 ssh 禁用 root 登录并将其保留在那里。

    • 3
  5. Dmitry Grigoryev
    2018-02-22T06:57:24+08:002018-02-22T06:57:24+08:00

    根据配置,sudo <game ending command>不一定会起作用。当然,如果sudoers配置为“user ALL=(ALL) ALL”,sudo则不会提供额外的保护。但是,您可以指定需要经常运行的特权命令列表,例如安装新软件包,并省略危险命令,例如rm.

    这样,如果您以 身份登录,您就可以运行所有命令root,但是由于您只是偶尔需要它,因此运行的风险<game ending command>将大大降低。

    • 0
  6. Ben Aveling
    2018-02-22T20:13:58+08:002018-02-22T20:13:58+08:00

    sudo 允许您仅允许某些命令并不是 sudo 优于 su 的唯一好处。

    在大多数商店中,它甚至不是最重要的好处。

    使用 sudo,您可以知道谁执行了特定命令。

    现在也许这对你来说无关紧要。例如,您可能是您计算机的唯一用户。如果是这样,那么 sudo 可能并不比 su 好。

    但是很多主机都有不止一个管理员。

    sudo 然后变得非常有用,因为如果有人做错了事,sudo 会让你知道是谁做的。

    这使您可以了解错误发生的原因,并教育人们防止错误再次发生,或者在必要时从某人身上移除工具。

    作为奖励,当人们知道他们的行为被记录下来时,他们通常会更加小心。

    须藤并不完美。

    如果两个人同时执行“sudo sh”,那么很难将命令归因于一个或另一个。

    并且恶意管理员总是可以删除或编辑日志 - 尽管干净地做到这一点并不总是像人们想象的那么容易,特别是如果你有集中式日志记录。

    由于原始问题中确定的所有原因,sudo 不一定会阻止愚蠢或恶意的行为。

    但它确实给你一个更好的机会来防止复发。

    • 0

相关问题

  • 如何从命令行判断机器是否需要重新启动?

  • iptables 的图形用户界面?

  • 文件权限如何工作?文件权限用户和组

  • 如何在 Vim 中启用全彩支持?

  • 如何与无头服务器进行图形交互?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve