错误:/etc/sudoers: syntax error near line

当遇到Ubuntu系统中sudo命令因/etc/sudoers.d/文件夹下的文件语法错误而失效时,可以通过多步操作进行修复。首先,需要在两个SSH终端中登录同一用户,然后在其中一个终端获取PID,再在另一个终端使用pkttyagent启动进程并输入PID。接着,在第一个终端运行`pkexec visudo`以编辑sudoers文件。由于sudoers文件损坏,系统不允许直接使用sudo,因此需要通过上述步骤获取编辑权限。找到并删除sudoers文件末尾多余的包含指令,保存并退出后,sudo命令即可恢复正常。这是一个解决sudoers文件错误的详细过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近登上远程主机时莫名报错sudo不能用了,原因是 /etc/sudoers.d/文件夹下有一个文件语法错误。搞了好几天,终于搞定了

这个错误的麻烦之处是这个文件必须使用sudo命令才可以修改,而sudo又不能用,所以只能干瞪眼着急。好在找到了一种骚套路解决方法,现在分享给大家!

>>> /etc/sudoers.d/50_stack_sh: syntax error near line 1 <<<
>>> /etc/sudoers.d/50_stack_sh: syntax error near line 2 <<<
>>> /etc/sudoers.d/50_stack_sh: syntax error near line 3 <<<
sudo: parse error in /etc/sudoers.d/50_stack_sh near line 1
sudo: no valid sudoers sources found, quitting
sudo: unable to initialize policy plugin


自此,无法使用sudo命令,无法打开/etc/sudoers文件,当然也无法修改/etc/sudoers文件。

解决
网上的解决方法是,用下列命令重新打开sudoers文件,从而把之前修改的地方恢复。

pkexec visudo
但是,这个命令执行后,需要输入密码进入root权限,但因为sudoers文件损坏,输入密码后出现下列错误:

==== AUTHENTICATING FOR org.freedesktop.policykit.exec ===
Authentication is needed to run `/usr/sbin/visudo' as the super user
Authenticating as: ubuntu,,, (ubuntu)
Password:
polkit-agent-helper-1: error response to PolicyKit daemon: GDBus.Error:org.freedesktop.PolicyKit1.Error.Failed: No session for cookie
==== AUTHENTICATION FAILED ===
Error executing command as another user: Not authorized
This incident has been reported.
这就尴尬了。最终的解决办法如下:

1、打开两个ssh终端,都是用同一个ubuntu用户登录

2、在第一个终端输入以下命令,获取pid

echo $$

3、在第二个终端,输入:

pkttyagent --process 刚刚得到的pid


4、这个时候,第二个终端会卡住,在第一个终端输入:

pkexec visudo


5、然后,第一个终端也卡主,回到第二个终端,会提示输入当前用户密码,输入

6、好吧,输入完密码,第二个终端卡主了,回到第一个终端,会发现,出现了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:/snap/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

我的sudoer文件是这样的,可以看到最下方莫名其妙多出现了两行 

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

#includedir /etc/sudoers.d

 将这两行删去,保存退出,就可以发现sudo可以正常使用了~

7、完成任务,修改完成,发现就可以继续使用sudo命令了,over

PS:这里用的编辑器是nano,以下是nano简单的保存方式:

linux下在编辑状态下退出请按Ctrl+X,会有两种情形:
①、如果文件未修改,直接退出;
②、如果修改了文件,下面会询问是否需要保存修改。输入Y确认保存,输入N不保存,按Ctrl+C取消返回。如果输入了Y,下一步会提示输入想要保存的文件名。如果不需要修改文件名直接回车就行;若想要保存成别的名字(也就是另存为)则输入新名称然后确定,这个时候也可用Ctrl+C来取消返回。

### 回答1: 这个错误提示是在执行sudo命令时出现的,意思是sudoers文件中存在语法错误sudoers文件是用来配置sudo命令的权限的,如果文件中存在语法错误,就会导致sudo命令无法正常执行。需要检查sudoers文件中的语法错误并进行修复。修复完成后,再次执行sudo命令即可。 ### 回答2: “sudo /etc/sudoers: 语法错误”这个错误提示是在使用sudo命令时出现的,通常出现在修改sudoers文件之后。这个文件是授权用户执行特定任务的文件,也是system administrator(系统管理员)进行权限管理的必要文件。 这个错误提示通常是由于sudoers文件的语法错误所引起的。在更改sudoers文件时,可能会影响到sudo命令的正确运行,导致出现语法错误。 解决此错误最好的方法是在root(超级管理员)权限下执行 “visudo”命令,并编辑sudoers文件。visudo是一个系统设置,它允许您以特定方式编辑sudoers文件。visudo检查sudoers文件的语法和逻辑错误,并在您提交更改之前进行验证。因此,使用visudo修改sudoers文件会避免出现语法错误的情况。 首先,使用root用户登录系统。接下来,使用命令“sudo visudo”打开sudoers文件,然后按照指令进行修改。如果在修改后尝试使用sudo命令时还出现语法错误,您应该再次打开sudoers文件,检查哪些语法错误可能存在,并进行修正。 如果sudoers文件语法,让看起来有点吓人,那么可以先备份该文件,然后尝试将sudoers文件还原到其原始状态。从备份版本中找出错误,并使用visudo验证和修复该文件。 总体而言,sudo /etc/sudoers: 语法错误可能发生在修改sudoers文件时。通过使用visudo编辑sudoers文件,确保文件不存在语法错误,可以有效避免此问题的发生。 ### 回答3: sudo /etc/sudoers:语法错误。这个错误是指在使用sudo命令时,Linux系统发现了sudoers文件中的语法错误。 sudo是一个非常有用的命令,可以允许我们以超级管理员的身份运行某些命令,这在进行系统维护等工作中非常方便。sudoers文件用于控制哪些用户或者用户组可以执行sudo命令。 然而,如果在sudoers文件的编辑过程中存在语法错误,就会出现sudo /etc/sudoers:语法错误。这个错误可能会导致sudo命令无法正常运行,因为sudoers文件的格式不正确。 如果你遇到了这个错误,可以尝试使用visudo命令来编辑sudoers文件。visudo命令可以帮助我们在编辑sudoers文件的过程中自动检测语法错误,并且更换成正确的文件,避免了出现sudo /etc/sudoers:语法错误的潜在问题。 如果在使用visudo命令过程中还是出现sudo /etc/sudoers:语法错误的问题,可以使用其他命令进行检查和修改,比如grep命令查找sudoers文件中的语法错误,或者使用nano来手动编辑sudoers文件。 总之,sudo /etc/sudoers:语法错误这个错误是因为sudoers文件的语法格式不正确导致的,可以通过使用visudo或其他命令进行检查和修复来解决这个问题。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值