彻底搞乱了 sudoers 文件和 su 操作

彻底搞乱了 sudoers 文件和 su 操作

我现在的情况真的很糟糕。我正在记下我陷入这种境地的步骤。

sudo我的目标是在我的计算机上禁用它。

我正在运行 Amazon Ec2 Ubuntu 12.04

  1. 我使用此命令创建了 root 密码。

    sudo passwd
    

    此时我是“ubuntu”用户。

  2. /etc/sudoers使用 nano 编辑了我的文件并执行以下操作。

    #ubuntu ALL=(ALL) NOPASSWD:ALL----This enabled no password
    ubuntu ALL=(ALL) ALL---this enables password
    

    所以我的文件看起来像(在我退出之前)

    #ubuntu ALL=(ALL) NOPASSWD:ALL
    #ubuntu ALL=(ALL) NOPASSWD:ALL----This enabled no password
    ubuntu ALL=(ALL) ALL---this enables password
    

现在,当我使用该sudo命令时,出现以下错误,这显然是因为我弄乱了文件:

ubuntu@ip-10-144-143-249:~$ sudo
sudo: >>> /etc/sudoers.d/90-cloudimg-ubuntu: syntax error near line 4 <<<
sudo: parse error in /etc/sudoers.d/90-cloudimg-ubuntu near line 4
sudo: no valid sudoers sources found, quitting
sudo: unable to initialize policy plugin

但是当我使用这些命令时susu root它会要求我输入在步骤 1 中设置的密码。

但每次我输入密码时,都会收到一条身份验证失败消息,尽管我 100%确定我输入的密码正确:

ubuntu@ip-10-144-143-249:~$ su
Password:
su: Authentication failure

我不知道现在该怎么办。我在网上查了几个解决方案,其中一种方法建议分离并重新连接卷。这可以做到,但由于这是生产环境,会出现很多问题。有没有什么方法/技巧可以让我让 sudo 操作正常工作?

答案1

拉胡尔,首先你应该修复该sudoers文件。

在桌面上创建一个 sudoers 文件并将以下行粘贴到其中:

#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults    env_reset
Defaults    mail_badpass
Defaults    secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL:ALL) ALL

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d

好的,现在你必须sudoers用新文件替换原始文件,使用ctrl+F1切换到 tty,尝试成为 root 并输入

mv /home/RAHUL/Desktop/sudoers /etc/sudoers 

如果您不能成为 root 用户,那么您必须从实时 Ubuntu 启动,然后按照上述步骤操作。

答案2

以下是我为解决这个问题所做的事情-

  1. 启动了一个与硬件相同(搞乱了的那个)的实例。
  2. 停止混乱的uo实例。
  3. ssh 完整的 ubuntu 文件夹(其中包含需要的所有文件)。
  4. 启动副本服务器并确保一切正常。(我们使用 Mongo、Mysql、Tomcat 和 Java)。
  5. 完成后,我分离了用于混乱实例的弹性 IP,并将其附加到副本实例。

现在您有一个具有相同配置和 IP 的新运行实例。

耗时 30 分钟。

答案3

您输入的密码错误。sudo passwd正在更改 root 用户的密码,而不是 sudo 所需的密码。此外,root 帐户通常在 ubuntu 中被锁定,因此您无法通过su或成为 root su root,请参阅这里

您对 90-cloudimg-ubuntu 所做的一切可能都与身份验证失败无关。您确定这ubuntu ALL=(ALL) ALL---this enables password在语法上是正确的吗?首先,注释应该以 开头#

为了防止任何用户执行sudo,请从 /etc/group 中的 sudo 组中删除所有用户。您打算随后以 root 身份登录吗?

相关内容