📌  相关文章
📜  sudo:etc sudoers 归 uid 1001 所有,应为 0 sudo:找不到有效的 sudoers 源,退出 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:05:24.086000             🧑  作者: Mango

权限管理与 sudoers 文件

如果你在 Linux 中想要进行一些需要管理员权限的操作,可能会在命令前加上 sudo,例如:

sudo apt-get update
sudo chown -R user:user /path/to/directory

sudo 命令可以让普通用户执行需要管理员权限的操作,但是这需要在系统中配置一些权限管理的设置。其中一个重要的设置就是 sudoers 文件。

sudoers 文件是一个系统中的配置文件,用于规定哪些用户可以以哪些身份(例如 root)进行哪些操作。该文件通常存储在 /etc 目录下,而且只有管理员用户才有权利修改这个文件。

我们有时会遇到这样的提示:sudo:找不到有效的 sudoers 源,退出,它出现的原因可能是我们修改 sudoers 文件不正确,导致文件结构错误。此时可以使用以下命令修复:

sudo chown -R root:root /etc/sudoers
sudo chmod 440 /etc/sudoers

这两个命令将修复 sudoers 文件所需的所有权限问题。尤其是第一行命令中的 root:root,将 sudoers 文件的拥有者和组都设为 root。

配置 sudoers 文件

sudoers 文件的格式并不简单,下面是一些示例:

# 表示后面的一行是注释
# User privilege specification
root      ALL=(ALL:ALL) ALL
# 表示 root 用户可以以任意身份执行任意命令
%admin   ALL=(ALL)     ALL
# 表示组 admin 中的用户可以以任意身份执行任意命令
user     ALL=(root)    NOPASSWD: /bin/kill, /usr/bin/top
# 表示 user 用户可以以 root 身份执行 /bin/kill 和 /usr/bin/top,而且不需要输入密码

上述示例中 sudoers 文件可以看成一个二维表,其中包含了用户、用户组、命令、身份等信息。为了添加一个新的规则,需要在 sudoers 文件中手动编辑,当然也可以使用 visudo 命令进行编辑,注意只能使用这个命令打开编辑器,否则在保存时可能会报错。

visudo 命令会在修改 sudoers 文件之前,检查文件的语法和正确性。

sudo visudo

此时你需要编辑 sudoers 文件,添加或者修改规则。如果你不确定怎么添加规则,请参考手册:man sudoers 或者 man visudo

结论

sudoers 文件是系统权限管理的重要组成部分,只有通过这个文件,才能保证系统的安全性和可管理性。对于普通用户来说,应该保持系统文件的干净和规范,不要随意修改这个文件。