linux-sudo设置

[复制链接]
发表于 2026-10-3 21:52:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

给某个用户开 sudo 权限、又不想让他拿到完整 root,全靠 /etc/sudoers 里那一行规则的写法。本文从 sudo 是什么讲起,给出授权用户的完整步骤、每条规则的格式拆解,以及三个从粗到细的示例配置。

一、sudo 是什么

sudo 是 "superuser do" 的缩写,它是一个在 Unix 和 Linux 操作系统中允许普通用户以其他用户身份(通常为超级用户或 root 用户)执行命令的程序。通过 sudo,系统管理员可以授予某些用户执行特定命令的权限,而无需切换到 root 用户。利用 sudo 可以提高系统的安全性,因为它允许细粒度的权限控制,并且会在每次使用时要求用户输入密码。

以下是 sudo 的一些关键特性和用法:

  • 权限控制:sudo 配置文件(通常是 /etc/sudoers)允许管理员具体指定哪些用户可以执行哪些命令,以及他们是否需要输入密码。
  • 密码提示:当普通用户使用 sudo 执行命令时,系统通常会提示他们输入自己的密码(除非在 sudoers 文件中设置了 NOPASSWD:)。这增加了安全性,因为即使某个用户有 sudo 权限,他们仍然需要证实自己的身份。
  • 日志日志记录:sudo 会记录所有使用它的动作,这有助于管理员跟踪系统上的更改或潜在的安全事件。
  • 防止误操作:通过设置 sudo,管理员可以限定用户只能执行特定的命令或脚本,从而防止潜在的系统损坏或误操作。
  • 提升权限:最常见的 sudo 用法是以 root 用户的身份执行命令。例如,一个普通用户可能用 sudo apt update 来更新软件包列表,这需要 root 权限。

要使用 sudo,用户必须在 /etc/sudoers 文件中被明确授权。通常,这个文件只能通过 visudo 命令编辑,以确保语法正确并防止配置错误。visudo 在编辑完成后会检查语法错误,并在没有错误的情况下保存更改——这一点非常关键,直接 vim 改 sudoers 写错了语法会导致所有 sudo 失效。

二、sudo 设置用户(命令及举例)

在 Linux 系统中,sudo 设置用于允许普通用户执行超级用户(root)权限的命令。要为特定用户设置 sudo 权限,需要编辑 /etc/sudoers 文件。步骤如下:

  1. 确认 sudo 已安装:在终端中执行 sudo -V 命令来检查是否已安装 sudo。
  2. 切换到 root 用户:由于编辑 /etc/sudoers 文件需要超级用户权限,因此需要先切换到 root 用户。在终端中输入 su - root 并输入 root 用户的密码。
  3. 编辑 sudoers 文件:visudo
  4. 添加用户:在 visudo 编辑器中,找到类似 root ALL=(ALL:ALL) ALL 的行,然后在下一行添加想要授权的用户,格式如下:username ALL=(ALL:ALL) ALL,将 username 替换为你想要授权的用户名。这表示该用户可以以任何用户的身份执行任何命令。如果想让用户无需输入密码就可以使用 sudo,可以添加 NOPASSWD: 标签:username ALL=(ALL:ALL) NOPASSWD:ALL
  5. 保存并退出:在 visudo 编辑器中,按下 Esc 键,然后输入 :wq 并回车以保存并退出。

三、sudo 设置说明(格式拆解)

格式:

username ALL=(ALL:ALL) NOPASSWD:ALL
  • 第一个 ALL:表示这个规则适用于所有主机。在更复杂的设置中,可以指定特定的主机名或主机别名。
  • (ALL:ALL):这里的两个 ALL 分别表示用户可以以哪些用户身份执行命令,以及这些命令可以在哪些用户组下执行。第一个 ALL 表示用户可以以系统中任何用户的身份执行命令,第二个 ALL 表示命令可以在任何用户组下执行。
  • 最后的 ALL:表示用户可以执行所有命令。

四、举例如下

示例 1:允许特定用户执行特定命令

alice ALL=(ALL) /usr/bin/apt update
alice ALL=(ALL) /usr/bin/apt upgrade

这个设置只允许用户 alice 以任何用户的身份执行 apt update 和 apt upgrade 命令。她不能执行其他任何命令,也不能以 root 身份执行这些命令以外的其他操作。

示例 2:限定用户只能以特定用户身份执行命令

bob ALL=(www-data) /usr/sbin/apache2ctl restart

这个设置只允许用户 bob 以 www-data 用户的身份执行 apache2ctl restart 命令来重启 Apache 服务。这样,即使 bob 有 sudo 权限,他也不能执行其他命令或以其他用户身份执行命令。

示例 3:在某一台主机上

limiteduser myhost.example.com=(ALL) NOPASSWD:ALL
limiteduser 192.168.1.100=(ALL) NOPASSWD:ALL

小结

sudo 这块的要点其实是两条:一是永远用 visudo 而不是 vim /etc/sudoers 改,语法错了 visudo 会拦下来;二是规则从左到右是"谁、在哪台机器、以谁的身份、能跑什么",四个字段一个都不能省,收窄权限就改第三个(指定用户)和第四个(指定命令)。

实际给同事开权限时,从示例 1 起步(只给那几条必要的命令)、到示例 2(限定成 web 运维专用身份)、再到 NOPASSWD(CI 或容器内需要免密的场景),比一次性 ALL=(ALL:ALL) ALL 给满要稳得多。另外 sudo 自带日志日志,出了问题记得翻 /var/log/sudo。

qidao123.com企服评测-应用市场 编辑提示:本文为站点编辑整理的 Linux sudo 配置原理与实操示例,命令与配置格式已按原意规范化书写;修改 sudoers 前建议先备份该文件,避免误配导致权限全部失效;本站不提供任何系统工具下载或加好友服务。

回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表