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


9

我不小心删除了sudoersMac OS X上的文件;有什么办法可以恢复吗?
恢复后,如何将其设置为模式0440?

Answers:


8

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

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

要检查sudo是否运行正常cd /etc,请执行以下操作sudo vim sudoers。您应该能够通过vim编辑器查看sudoers文件。/ etc中的任何读/写操作都需要sudo命令。

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


1
等效于命令行的GUI确实可以工作,这确实很奇怪。我猜苹果比命令行更全面地测试GUI工作流程。谢天谢地,这篇文章救了我。
Sridhar Sarnobat

很高兴知道它对您有所帮助。
坦美

6

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

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

如果您没有将自己放到该admin组中,则需要将OSX重新引导至单用户模式并执行命令chmod 0440 /etc/sudoers


6

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

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

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

chown root:wheel /etc/sudoers

创建完后,/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

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

mount -uw /

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


3

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

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

很好!!!


2

上面的答案涵盖了文件的默认内容,以及如何使用Finder将其移到适当位置以及如何更改其权限。但是,除非sudoers文件的所有者是root,否则sudo会抱怨。更改所有者而不使用sudo的唯一方法是通过以下命令:

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


1
这似乎最多回答“你怎么把它设置为模式0440”的一部分,这 已经得到解决,但没有解决恢复方面。由于OP首先缺少/ etc / sudoers文件,这对他们有什么帮助?
杰夫·谢勒

您可以使用任何编辑器创建文件,然后使用Finder将其移动到位。困难的部分是将所有者更改为root,这是无法通过任何其他方法实现的。
tmm1
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.