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
    • 最新
    • 标签
主页 / unix / 问题 / 708115
Accepted
Peter Petigru
Peter Petigru
Asked: 2022-07-01 04:28:16 +0800 CST2022-07-01 04:28:16 +0800 CST 2022-07-01 04:28:16 +0800 CST

sudo 的 root 密码被认为是最佳实践还是相反?

  • 772

我已经设置了 my sudoers,每次使用时它都会询问 root 密码而不是用户密码sudo。主要是因为我认为如果你想执行 root 命令,你应该知道 root 密码是有道理的。

但是,这是否会被视为安全风险?

如果不是,为什么这不是大多数发行版的默认配置?

编辑:我正在运行个人 Linux 机器,我是唯一的用户。在这种情况下,这个理由是否更有意义?我确实认为这可能不适用于多用户系统。

背景:我的经验sudo是在系统上sudo只是su. 只需输入用户密码即可运行任何 root 命令,我认为这违背了 root 的初衷。因此,我有理由让它要求您提供 root 密码。说了我不知道 的力量sudoers,一些用户提到你可以指定哪些命令可以运行sudo(同时省略了一些仅限于 root 用户的命令)。我认为这是一个很好的中间立场

sudo root
  • 7 7 个回答
  • 3401 Views

7 个回答

  • Voted
  1. Best Answer
    cas
    2022-07-01T04:45:32+08:002022-07-01T04:45:32+08:00

    有些人会认为这是一种安全风险,因为它破坏了使用sudo而不是的两个主要目的su,它们是:

    1. sudo允许用户以 root 身份运行一些(但不是全部)命令变得容易,并且

    2. 您不必提供 root 密码。拥有 root 密码可能比仅仅被允许以 root 身份运行某些命令要危险得多。

    一旦有人拥有 root 密码,他们可以以 root 身份登录或使用su. 仅从一个人撤消 root 访问权限也更加困难 - 您必须更改 root 密码并让每个人都知道新密码是什么。使用sudo的默认配置,您只需更改 sudoers 文件和/或从 sudo 组中删除用户。

    这就是为什么它不是sudo.

    我强烈建议您恢复到默认行为,因为几乎可以肯定,这比您认为必须知道 root 密码“有意义”要经过深思熟虑。“常识”通常既不是“常识”也不是“明智的”。

    sudo编写,至少部分是为了避免当每个需要一些能力来执行某些 root 级系统管理员任务的人都必须知道 root 密码时引起的问题。在实践中,这被证明是非常成问题的,尤其是在大学或公司等人们角色变化很大的大型环境中。

    多年来,我曾在多个环境中工作,在这些环境中,人们几年前已经在同一个组织中担任其他角色(甚至完全离开了组织),但仍然在机器上拥有 root 访问权限,他们甚至不应该拥有有效的登录名上。还有一个问题是,当您做正确的事情并在不再需要这些事情时删除root访问和/或禁用帐户时,人们经常会感到不安。

    • 33
  2. bxm
    2022-07-01T04:46:03+08:002022-07-01T04:46:03+08:00

    考虑一个假设的(但非常合理的)场景:拥有 root 密码的用户错误地更改了 root 的密码,并且没有记录下来。

    您现在有一种情况,没有人拥有 root 密码,因此没有人可以提升为 root。这有效地打破sudo了每个人的 root 密码,需要采取补救措施(停机时间)来重置密码。

    • 23
  3. dr_
    2022-07-01T05:27:47+08:002022-07-01T05:27:47+08:00

    sudoers 机制与给出 root 密码相比有很多优点:

    • 允许以管理员身份运行一组受限命令

    • 问责制,因为sudo可以记录运行的命令,以便知道谁运行了什么

    • 轻松转移管理员权限,只需在管理员组中添加和删除用户

    为所有用户提供 root 密码完全无法使用 sudoers,因为用户不需要使用sudo: 他们只需以 root 身份登录。


    添加OP后编辑:

    编辑:我正在运行个人 Linux 机器,我是唯一的用户。在这种情况下,理性是否更有意义?我确实认为这可能不适用于多用户系统。

    实际上,如果您是系统上的唯一用户,则上述内容不适用,您可以以 root 身份登录,而不是在sudo需要以管理员身份操作的任何时候运行。请注意,您的操作会产生更大的影响,并且更容易损坏系统。引用一位古代 UNIX Zen 大师的话:

    “只有通过根本,才能获得真正的痛苦——从而获得启蒙。”

    • 7
  4. ilkkachu
    2022-07-01T05:34:35+08:002022-07-01T05:34:35+08:00

    我试图查看 Ubuntu 文档对此的看法。

    Ubuntu 服务器指南在用户管理下提到

    Ubuntu 开发人员谨慎地决定在所有 Ubuntu 安装中默认禁用 >administrative root 帐户。

    和

    相反,鼓励用户使用名为“sudo”的工具来执行系统管理职责。[...]这种简单而有效的方法为所有用户操作提供问责制,并让管理员可以精细控制用户可以使用所述权限执行哪些操作。

    并继续说明如何root通过设置密码来启用该帐户。

    help.ubuntu.com 上的社区帮助 Wiki,页面 RootSudo(已归档),提到易用性、新用户以及一开始不以 root 身份登录:

    请记住,大量的 Ubuntu 用户是 Linux 的新手。任何操作系统都有一个学习曲线,许多新用户尝试通过启用 root 帐户、以 root 身份登录以及更改系统文件的所有权来走捷径。

    这两个文件充其量都掩盖了sudo询问不同密码的选项,但维基页面列出了当前系统的优点和缺点,它至少给出了他们可能想到的指示。

    列出的前两个优点是安装程序要问的问题更少,并且用户只需要记住一个密码。两者都是易用性的论据。列出的第三个是反对以 root 身份登录和额外的 sudo 步骤的论点,即它可能会让用户停下来更多地思考他们在做什么:

    1. 默认情况下,它避免了“我可以做任何事情”的交互式登录。在发生重大更改之前,系统会提示您输入密码,这应该让您考虑所做操作的后果。

    他们还提到了@bxm 在他们的回答中所说的内容,即拥有一个 root 密码(带或不带 sudo)会使取消对用户的授权变得更加困难,以及 sudo 记录它运行的内容并且理论上可以配置为比允许一切。

    我说“理论上”,因为例如设置规则以停止sudo启动 shell 肯定会针对确定的滥用者失败,因为它们可以例如安装一个明确命名的 shell(对抗任何黑名单),或者只安装一个 setuid shell 二进制文件(绕过需要sudo开始)。两者都可以用 justcp和来完成chmod。

    鉴于正确设置白名单sudo并不是那么简单,而且似乎几乎没有关于如何做到这一点的说明,我猜想关于易用性的部分,忘记一个更不常用的 root 密码的机会,并且每个密码只有一个人使用是主要原因。

    (请注意,除了普通用户帐户密码外,从技术上讲,每个用户都可以使用不同的 root/sudo 密码。至少一种方法是创建多个 UID 0 帐户,在 中设置targetpw选项sudoers,然后使用用户sudo到他们自己的 root 帐户而不是root. 例如,普通用户john可以有一个相应的 root 用户john_root,当他们需要时,他们会运行sudo -u john_root whatever command it was。当然你可以用su代替来做同样的事情。这样做的sudo缺点是有原因的我一直不明白,有些人似乎强烈反对拥有多个具有相同 UID 的命名帐户。)

    • 4
  5. Philippos
    2022-07-01T05:24:15+08:002022-07-01T05:24:15+08:00

    您的问题表明您是该系统上的唯一用户(我已经设置了我的sudoers ......每次我使用 sudo 时),而给定的答案主要是从多用户的角度来看它。

    默认配置的原因是最初的想法sudo:为某些用户提供受限的超级用户访问权限。

    在今天的 Linux 发行版中,这个想法可能更像您的想法:通过一个小的“请注意”提示轻松访问系统的受限区域。

    在这种情况下使用 root 密码有一个主要优点(如果设置了 root 密码):

    如果正确配置了 sudo 权限,知道密码只会损害您的帐户,而不是整个系统(可能包括您的备份。您需要第二把钥匙才能进入机房。

    • 3
  6. ron
    2022-07-01T05:52:41+08:002022-07-01T05:52:41+08:00

    sudo 的 root 密码是否被认为是最佳做法?

    不

    那些应该具有root权限或提升权限的用户被放置在wheel组中。然后只有那些用户可以su 到 root或者更确切地说使用sudo. 使用su需要输入 root 密码,这是不好的做法,也是您要避免的。专门使用sudosudo -i是获得 root 提示的一种非常好的方法,它不需要输入 root 密码,用户输入他们的密码,并且只有当他们在 wheel 组中时才有效。

    /etc/sudoers里面有

    • sudo -i要求给定用户输入他们的密码,而不是 root
    ## Allows people in group wheel to run all commands
    %wheel  ALL=(ALL)       ALL
    

    这是默认配置,至少在 RHEL/CentOS 7.x 中是这样;这是一个快乐的媒介。首先,用户必须在轮组中才能使用su或sudo。我不确定如何正确防止轮组人员使用su,但即使使用sudo -i他们仍然可以更改 root 密码并导致问题。因此/etc/sudoers,visudo您需要重新配置和撤消 ## Allows people in group wheel to run all commands %wheel ALL=(ALL) ALL. 对于一个家庭 linux 系统来说,这一切都是多余的,但是一个具有法律含义的工作环境以及所有这一切都变得重要了。

    有人提到我多年来在多个环境中工作过,在这些环境中,人们几年前已经转移到同一组织中的其他角色(甚至完全离开了组织),但仍然拥有他们不应该甚至仍然拥有机器上的 root 访问权限有一个有效的登录。 这不是su他们知道root密码的错,这是现有管理员和管理人员没有进行适当的内务管理和更改root密码以及删除/过期员工登录的问题。

    明显的缺陷是任何轮组管理员都可以更改 root 密码并造成严重破坏。为了防止将该行编辑/etc/sudoers到%wheel ALL=(ALL) ALL, !/usr/bin/passwd root. 还有%wheel ALL=(ALL) ALL, !/bin/su root. 我想说的是,简单地使用轮组是最佳实践的第一步。然后进行编辑/etc/sudoers以限制管理角色并使用除了轮子之外的更多管理组来为谁应该和不应该做什么实现合理的安全性。

    • 3
  7. number9
    2022-07-01T05:39:52+08:002022-07-01T05:39:52+08:00

    但是,这是否会被视为安全风险?

    是的。分发根密码总是一个坏主意。

    我会添加自己的 0.01 美元(通货膨胀已经造成了损失)...我使用 sudo,而不要求输入 root 密码。但是,我确实设置了 root 密码。换句话说,当使用 sudo 时,您使用自己的密码。但是,如果您在控制台上并以 root 身份登录,则它不会是无密码的,也不会让您登录。它设置了密码。很多新用户没有设置root实际密码,只使​​用sudo。这很好,直到您在启动时(例如)文件系统问题期间被放到命令提示符下,并且您需要输入 root 密码以进行维护。

    只是一个想法。

    • 2

相关问题

  • 'zfs send' 是安全的只读命令吗?

  • sudo nautilus 和 sudo -E nautilus 的区别

  • 从 /etc/passwd 文件中删除了我的 root 帐户,以便在 Centos7.3 中进行测试

  • 以其他用户身份运行单个命令;sudo 的限制

  • 允许用户以 root 身份运行命令

Sidebar

Stats

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

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

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

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve