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
    • 最新
    • 标签
主页 / server / 问题 / 1136474
Accepted
George Y
George Y
Asked: 2023-07-10 17:21:45 +0800 CST2023-07-10 17:21:45 +0800 CST 2023-07-10 17:21:45 +0800 CST

“ip”命令必须使用“sudoer”吗?无论如何要绕过它吗?

  • 772

我最近遇到一个高可用性场景,维护程序需要将虚拟IP与其所在的服务器绑定,然后通过网络进行广播。为此,它分别运行ip和arp命令。但是,我注意到任何此类维护程序都需要sudoer特权才能运行ip或arp。我没有授予root它这样的权限,但希望它仍然能够运行这两个命令。那么有解决办法吗?提前致谢。

linux
  • 3 3 个回答
  • 62 Views

3 个回答

  • Voted
  1. Best Answer
    HBruijn
    2023-07-10T19:38:20+08:002023-07-10T19:38:20+08:00

    HA 场景需要对(虚拟)IP 地址进行故障转移并发送免费的 arp 请求,以确保 LAN 得知已发生 IP 故障转移。

    对系统 IP 堆栈进行更改并发送免费的 arp 请求需要特权/根级别访问。

    当进行这些更改的工具已经以 root 身份运行时,当然已经有足够的特权访问权限。

    当工具不以 root 身份运行时,则需要一种授予特权访问权限的方法。sudoers 策略是一种可以授予细粒度权限的方法。

    编辑:@symcbean 的答案让我意识到:因为许多示例仅授予不受限制和无限的权限,您可能不知道它sudo是明确设计用于授予受限权限的。以下示例仅授予用户通过 root 权限george 运行这三个命令(带参数)的权限 sudo

    # in /etc/sudoers or as a drop-in file /etc/sudoers.d/file-name
    # List of privileged commands
    Cmnd_Alias IPFAILOVER = /usr/sbin/ip, /usr/sbin/arp, /usr/sbin/arping
     
    # allow george to run the above commands as root without having to authenticate with a password 
    george        ALL=(root)       NOPASSWD: IPFAILOVER
    

    另一种方法是对这些命令设置 set-uid root 权限,但这允许任何和所有用户发送免费的 arp 请求并修改相邻系统的 ARP 缓存和/或修改系统 IP 堆栈。这可能不太理想。

    • 2
  2. symcbean
    2023-07-10T19:51:48+08:002023-07-10T19:51:48+08:00

    这主要是评论(但评论框中没有足够的空间)。

    是否有解决方案可以运行需要提升权限的命令而不提升权限?- 不

    “我不给予像根这样的特权” - 如果您解释了您的保留意见,那么我们可能能够建议替代方案或减轻您的担忧,例如

    maintenance ALL=(root) NOPASSWD: /usr/local/bin/your_provisioning_script
    

    允许“维护​​”用户仅以 root 身份运行指定的脚本。

    但我很难想象一个场景,用于实现高可用性的服务需要手动启动。将其作为服务运行还可以提供确保服务持续运行的好处 - 那么为什么不以 root 用户的身份提供它呢?不幸的是,删除 root 权限需要额外的工具。因此,以非特权用户身份运行服务并使用 sudo 规则进行特权操作可能更有意义。

    Linux 还有一个被描述为功能的权限管理系统 - 但授予解决此问题的功能可能会破坏您因不使用 root 帐户而隐含的未定义目标。

    • 2
  3. догонят
    2023-07-13T16:02:27+08:002023-07-13T16:02:27+08:00

    您可以允许用户通过 sudo 作为任何用户执行特定命令,而不执行任何其他命令(就像 Windows 中的“run-as”)。没有义务提供完全的 root 访问权限,sudo 可以非常精细。

    请阅读 sudoers 的手册。

    对于HA场景,这或多或少是VRRP的描述

    • 0

相关问题

  • Linux 主机到主机迁移

  • 如何在 Linux 机器上找到有关硬件的详细信息?

  • 如何在 Linux 下监控每个进程的网络 I/O 使用情况?

  • 在 RHEL4 上修改 CUPS 中的现有打印机设置

  • 为本地网络中的名称解析添加自定义 dns 条目

Sidebar

Stats

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

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

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

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve