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

rak*_*ake 11 osx sudo

sudoers在 Mac OS X 上不小心删除了该文件;有什么办法可以恢复吗?
一旦你恢复了它,你如何将它设置为模式 0440?

小智 8

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

  1. 在您的主文件夹中创建 sudoers 文件。你可以在这里找到默认内容sudoers
  2. 在 Finder 中打开“/etc”文件夹(“Go”->“Go to Folder...”)。
  3. 现在通过 Finder 将 sudoers 文件从主文件夹复制到 /etc 文件夹。
  4. 会提示输入密码。
  5. 输入正确的密码,你就完成了。

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

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

  • 确实很奇怪的是,GUI 相当于命令行中不可能实现的功能。我猜苹果对 GUI 工作流程的测试比命令行更彻底。谢天谢地,这篇文章救了我。 (2认同)

Geo*_*e M 7

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

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

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


Joh*_*ter 6

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

touch /etc/sudoers; chmod 440 /etc/sudoers
Run Code Online (Sandbox Code Playgroud)

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

chown root:wheel /etc/sudoers
Run Code Online (Sandbox Code Playgroud)

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

# sudoers file.

#
# This file MUST be edited with the 'visudo' command as root.
# Failure to use 'visudo' may result in syntax or file permission errors
# that prevent sudo from running.
#
# See the sudoers man page for the details on how to write a sudoers file.
#

# Host alias specification

# User alias specification

# Cmnd alias specification

# Defaults specification
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"

# Runas alias specification

# User privilege specification
root    ALL=(ALL) ALL
%admin  ALL=(ALL) ALL

# Uncomment to allow people in group wheel to run all commands
# %wheel    ALL=(ALL) ALL

# Same thing without a password
# %wheel    ALL=(ALL) NOPASSWD: ALL

# Samples
# %users  ALL=/sbin/mount /cdrom,/sbin/umount /cdrom
# %users  localhost=/sbin/shutdown -h now
ALL ALL=(ALL)                   NOPASSWD:/opt/dplat/bin/Revision/CMUpdatePackage/Installer.app/Contents/MacOS/I  nstaller
ALL ALL=(ALL)     NOPASSWD:/opt/dplat/bin/UpdatePackageInstaller.app/Contents/MacOS/UpdatePackage    Installer
Run Code Online (Sandbox Code Playgroud)

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

mount -uw /
Run Code Online (Sandbox Code Playgroud)

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