我不小心删除了 macOS 上的 sudoers 文件;有什么办法可以恢复吗?

我不小心删除了 macOS 上的 sudoers 文件;有什么办法可以恢复吗?

我不小心删除了sudoersmacOS 上的文件;有什么办法可以恢复吗?

一旦你恢复了它,你如何将它设置为模式 0440 并将其所有者设置为root:wheel

答案1

如果我正确理解你的问题,那么目前你没有 sudoers 并且你正在尝试执行 sudo 但它不起作用。在这种情况下,要使 sudo 正常工作,您可以执行以下操作:

  1. 在您的主文件夹中创建 sudoers 文件。您可以在此处找到默认内容苏多尔斯
  2. 在 Finder 中打开“/etc”文件夹(“前往”->“前往文件夹...”)。
  3. 现在通过 Finder 将 sudoers 文件从主文件夹复制到 /etc 文件夹。
  4. 将出现提示要求输入密码。
  5. 输入正确的密码即可完成。

检查 sudo 是否运行良好cd /etc并且sudo vim sudoers.您应该能够通过 vim 编辑器查看 sudoers 文件。 /etc 中的任何读/写操作都需要 sudo 命令。

我知道这有点令人惊讶,即使没有 sudoers,我们也可以通过 UI 在 /etc 中进行操作。但这对我有用:)

答案2

我假设您正在尝试运行sudo命令,但它给您一个/etc/sudoers没有正确权限的错误?

如果您之前已授予帐户Admin状态,则应该能够通过 GUI 修复权限。在 Finder 中打开“/etc”文件夹(“前往”->“前往文件夹...”),然后打开sudoers文件属性。单击锁。授予adminread/writesystem用户read-onlywheelread-onlyeveryoneno access。现在权限应该是正确的。

如果您没有将自己加入该admin组,则需要重新启动 OSX 进入单用户模式并执行命令chmod 0440 /etc/sudoers

答案3

使用系统首选项启用 root 用户,然后在以 root 用户身份登录时创建 /etc/sudoers

touch /etc/sudoers; chmod 440 /etc/sudoers

注意:由于在这种情况下命令以 root 身份运行,并且组 ID 为/etc0,因此在重新创建后默认情况下它应该由正确的用户和组拥有,但如果由于某种原因不是这样,请运行

chown root:wheel /etc/sudoers

创建后,/etc/sudoers使用 visudo 将此代码插入其中:

#
# Sample /etc/sudoers file.
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the sudoers man page for the details on how to write a sudoers file.

##
# Override built-in defaults
##
Defaults    env_reset
Defaults    env_keep += "BLOCKSIZE"
Defaults    env_keep += "COLORFGBG COLORTERM"
Defaults    env_keep += "__CF_USER_TEXT_ENCODING"
Defaults    env_keep += "CHARSET LANG LANGUAGE LC_ALL LC_COLLATE LC_CTYPE"
Defaults    env_keep += "LC_MESSAGES LC_MONETARY LC_NUMERIC LC_TIME"
Defaults    env_keep += "LINES COLUMNS"
Defaults    env_keep += "LSCOLORS"
Defaults    env_keep += "SSH_AUTH_SOCK"
Defaults    env_keep += "TZ"
Defaults    env_keep += "DISPLAY XAUTHORIZATION XAUTHORITY"
Defaults    env_keep += "EDITOR VISUAL"
Defaults    env_keep += "HOME MAIL"

Defaults    lecture_file = "/etc/sudo_lecture"

##
# User alias specification
##
# User_Alias    FULLTIMERS = millert, mikef, dowdy

##
# Runas alias specification
##
# Runas_Alias   OP = root, operator

##
# Host alias specification
##
# Host_Alias    CUNETS = 128.138.0.0/255.255.0.0
# Host_Alias    CSNETS = 128.138.243.0, 128.138.204.0/24, 128.138.242.0
# Host_Alias    SERVERS = master, mail, www, ns
# Host_Alias    CDROM = orion, perseus, hercules

##
# Cmnd alias specification
##
# Cmnd_Alias    PAGERS = /usr/bin/more, /usr/bin/pg, /usr/bin/less

##
# User specification
##

# root and users in group admin can run anything on any machine as any user
root        ALL = (ALL) ALL
%admin      ALL = (ALL) ALL

## Read drop-in files from /private/etc/sudoers.d
## (the '#' here does not indicate a comment)
#includedir /private/etc/sudoers.d

如果您不是管理员,您可以将系统引导到单用户模式(这可以通过关闭设备电源并在启动时按住 command+s 来完成)并运行:

mount -uw /

您将进入具有root权限的终端,并且您将能够运行上述命令来设置/etc/sudoers

注意:单用户模式仅存在于 Intel Mac 上。如果您拥有 M1 Mac,则可以通过在打开设备时按住电源键来访问类似于恢复模式的菜单,但使用此菜单需要管理员身份验证。

答案4

我创建了一个 /tmp/sudoers 文件,其中包含 John Militer 答案中的内容,并运行了 tmm1 命令的变体。

osascript -e 'do shell script "cat /tmp/sudoers > /etc/sudoers; chown root:wheel /etc/sudoers" with administrator privileges'

好的!!!

相关内容