![我不小心删除了 macOS 上的 sudoers 文件;有什么办法可以恢复吗?](https://linux22.com/image/22835/%E6%88%91%E4%B8%8D%E5%B0%8F%E5%BF%83%E5%88%A0%E9%99%A4%E4%BA%86%20macOS%20%E4%B8%8A%E7%9A%84%20sudoers%20%E6%96%87%E4%BB%B6%EF%BC%9B%E6%9C%89%E4%BB%80%E4%B9%88%E5%8A%9E%E6%B3%95%E5%8F%AF%E4%BB%A5%E6%81%A2%E5%A4%8D%E5%90%97%EF%BC%9F.png)
我不小心删除了sudoers
macOS 上的文件;有什么办法可以恢复吗?
一旦你恢复了它,你如何将它设置为模式 0440 并将其所有者设置为root:wheel
?
答案1
如果我正确理解你的问题,那么目前你没有 sudoers 并且你正在尝试执行 sudo 但它不起作用。在这种情况下,要使 sudo 正常工作,您可以执行以下操作:
- 在您的主文件夹中创建 sudoers 文件。您可以在此处找到默认内容苏多尔斯
- 在 Finder 中打开“/etc”文件夹(“前往”->“前往文件夹...”)。
- 现在通过 Finder 将 sudoers 文件从主文件夹复制到 /etc 文件夹。
- 将出现提示要求输入密码。
- 输入正确的密码即可完成。
检查 sudo 是否运行良好cd /etc
并且sudo vim sudoers
.您应该能够通过 vim 编辑器查看 sudoers 文件。 /etc 中的任何读/写操作都需要 sudo 命令。
我知道这有点令人惊讶,即使没有 sudoers,我们也可以通过 UI 在 /etc 中进行操作。但这对我有用:)
答案2
我假设您正在尝试运行sudo
命令,但它给您一个/etc/sudoers
没有正确权限的错误?
如果您之前已授予帐户Admin
状态,则应该能够通过 GUI 修复权限。在 Finder 中打开“/etc”文件夹(“前往”->“前往文件夹...”),然后打开sudoers
文件属性。单击锁。授予admin
组read/write
、system
用户read-only
、wheel
组read-only
和everyone
组no access
。现在权限应该是正确的。
如果您没有将自己加入该admin
组,则需要重新启动 OSX 进入单用户模式并执行命令chmod 0440 /etc/sudoers
。
答案3
使用系统首选项启用 root 用户,然后在以 root 用户身份登录时创建 /etc/sudoers
touch /etc/sudoers; chmod 440 /etc/sudoers
注意:由于在这种情况下命令以 root 身份运行,并且组 ID 为/etc
0,因此在重新创建后默认情况下它应该由正确的用户和组拥有,但如果由于某种原因不是这样,请运行
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'
好的!!!