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 / 问题 / 535936
Accepted
Altay_H
Altay_H
Asked: 2019-08-17 11:27:47 +0800 CST2019-08-17 11:27:47 +0800 CST 2019-08-17 11:27:47 +0800 CST

为什么 su world 可执行?

  • 772

我有一个由多个用户远程登录的无头服务器。其他用户都不在 sudoers 文件中,因此他们无法通过sudo. 但是,由于权限su是-rwsr-xr-x没有什么可以阻止他们尝试暴力破解root密码。

有人可能会争辩说,如果用户知道 root 密码,他们无论如何都可以破坏系统,但我认为情况并非如此。OpenSSH 配置了PermitRootLogin no和PasswordAuthentication no,其他用户都没有对服务器的物理访问权限。据我所知,世界执行权限/usr/bin/su是用户试图在我的服务器上获得 root 的唯一途径。

更让我感到困惑的是,它甚至似乎没有用。它允许我su直接运行而不需要 do sudo su,但这并不是什么不便。

我忽略了什么吗?su世界是否出于历史原因对那里执行许可?删除我还没有遇到的权限有什么缺点吗?

sudo su
  • 6 6 个回答
  • 4555 Views

6 个回答

  • Voted
  1. Best Answer
    Jim L.
    2019-08-17T12:42:43+08:002019-08-17T12:42:43+08:00

    ilkkachu 的回答中缺少的一点是,提升到 root 只是su. su 的一般用途是在另一个用户的登录帐户下打开一个新的 shell。该其他用户可能是root(也许最常见的是),但su可以用来假设本地系统可以验证的任何身份。

    例如,如果我以 user 身份登录jim,并且我想调查mike已报告但我无法重现的问题,我可能会尝试以 user 身份登录mike,然后运行给他带来麻烦的命令。

    13:27:20 /home/jim> su -l mike
    Password:(I type mike's password (or have him type it) and press Enter)
    13:27:22 /home/mike> id
    uid=1004(mike) gid=1004(mike) groups=1004(mike)
    13:27:25 /home/mike> exit  # this leaves mike's login shell and returns to jim's
    13:27:29 /home/jim> id
    uid=1001(jim) gid=1001(jim) groups=1001(jim),0(wheel),5(operator),14(ftp),920(vboxusers)
    

    使用-l选项su会使其模拟完整登录(按man页面)。

    但是,以上需要知道mike's 的密码。如果我有sudo访问权限,mike即使没有他的密码,我也可以登录。

    13:27:37 /home/jim> sudo su -l mike
    Password:(I type my own password, because this is sudo asking)
    13:27:41 /home/mike>
    

    总之,su可执行文件的权限如您所见的原因是因为su它是一个通用工具,可供系统上的所有用户使用。

    • 40
  2. R.. GitHub STOP HELPING ICE
    2019-08-18T13:24:39+08:002019-08-18T13:24:39+08:00

    从历史上看(在非 GNU unices 上),它不是,或者至少它手动检查你是否在一个名为“wheel”的组中允许su. 由于当时 RMS 关于访问控制的意识形态,GNU 版本su没有重现此功能:

    Why GNU `su' does not support the `wheel' group
    ===============================================
    
       (This section is by Richard Stallman.)
    
       Sometimes a few of the users try to hold total power over all the
    rest.  For example, in 1984, a few users at the MIT AI lab decided to
    seize power by changing the operator password on the Twenex system and
    keeping it secret from everyone else.  (I was able to thwart this coup
    and give power back to the users by patching the kernel, but I wouldn't
    know how to do that in Unix.)
    
       However, occasionally the rulers do tell someone.  Under the usual
    `su' mechanism, once someone learns the root password who sympathizes
    with the ordinary users, he or she can tell the rest.  The "wheel
    group" feature would make this impossible, and thus cement the power of
    the rulers.
    
       I'm on the side of the masses, not that of the rulers.  If you are
    used to supporting the bosses and sysadmins in whatever they do, you
    might find this idea strange at first.
    

    您可以通过谷歌搜索“wheel group rms”或类似内容找到更多关于此问题的信息。

    • 20
  3. ilkkachu
    2019-08-17T12:11:46+08:002019-08-17T12:11:46+08:00

    但是,由于权限su是-rwsr-xr-x没有什么可以阻止他们尝试暴力破解root密码。

    是的。假设您通常使用 Linux 系统,该pam_unix.so模块确实会将失败的身份验证尝试延迟约 2 秒,但我认为没有什么可以阻止同时尝试。

    当然会记录失败的尝试:

    Aug 16 22:52:33 somehost su[17387]: FAILED su for root by ilkkachu
    

    如果您有任何类型的系统来监控它们,那么暴力破解密码应该在日志中显着显示。如果您有不受信任的本地用户,也许您应该这样做。不受信任的本地用户也可以尝试使用任何仅限本地的权限提升漏洞,而且它们比远程权限提升更常见。

    更让我感到困惑的是,它甚至似乎没有用。

    当然它很有用root,如果您知道密码,它可以让您提升自己。

    它允许我su直接运行而不需要 do sudo su,但这并不是什么不便。

    sudo su有点多余。没有必要使用两个旨在让您以另一个用户身份运行程序的程序,一个就足够了。如果你想运行 shell,只需使用sudo -i或sudo -s(或等)。sudo /bin/bash

    我忽略了什么吗?世界是否出于历史原因对 su 执行许可?

    看上面。好吧,并非所有系统都有sudo替代方案,我不确定您是否认为这是历史性的。

    删除我还没有遇到的权限有什么缺点吗?

    不是真的,据我所知没有。我认为某些系统已su设置为只有特定组(“ wheel”)的成员才能运行它。sudo如果您喜欢 ( chown root.sudousers /usr/bin/sudo && chmod 4710 /usr/bin/sudo) ,您也可以这样做。

    或者,如果您不需要它们,您可以删除其中一个或两个程序。虽然在 Debian 上,su随login包一起提供,所以将包作为一个整体删除可能不是一个好主意。(而且像这样配对login和在一起确实有点历史意义。)su

    • 10
  4. Henrik supports the community
    2019-08-17T15:12:22+08:002019-08-17T15:12:22+08:00

    您已经有了一些很好的答案,但是他们没有解决您帖子的一部分。

    据我所知,/usr/bin/su 上的世界执行权限是试图在我的服务器上获得 root 权限的用户的唯一途径。

    这是一个危险的假设。如果您为 root 设置了一个好的密码,那么在大多数情况下,成功的权限提升更有可能是由于利用了内核或 setuid 二进制文件中的错误(您当然也可以删除 setuid来自那些,但passwd它是 setuid,如果您想要高安全性,您还应该向您的用户提供它,并拒绝他们更改密码的选项与此不兼容)。

    • 7
  5. bobsburner
    2019-08-20T07:35:12+08:002019-08-20T07:35:12+08:00

    su 需要是全局可执行的,以便每个人都可以运行它。在许多系统中,它可用于通过提供密码来更改为另一个用户。

    如果您担心有人暴力破解 root 密码,您可以禁用它。(使哈希无效,因此没有给定的密码可以匹配它)

    我不知道共识,但我认为能够直接以 root 身份登录本身就是一个安全问题。

    • 1
  6. WindowsNT
    2019-08-19T20:39:07+08:002019-08-19T20:39:07+08:00

    其他答案是正确的,说“su”允许您登录 root 以外的帐户。

    关于“sudo su”的一个注释。这实际上允许您在不知道 root 密码的情况下登录 root 帐户。您必须知道运行 sudo 的帐户的密码,并且该帐户位于 sudoers 文件中。

    • -2

相关问题

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

  • sudo nautilus 和 sudo -E nautilus 的区别

  • 以其他用户身份运行单个命令;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