Ubuntu问题sudo: /etc/sudoers is mode 0640, should be 0440的解决方法

本文介绍了在Ubuntu系统中遇到的sudoers文件权限问题及解决步骤。从初始的权限修改失败,到通过恢复模式获取root权限,最终成功修改sudoers文件,使普通用户获得sudo权限。

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

以前一直使用Fedora系统,今天偶尔用了用Ubuntu Linux系统,感觉那个sudo有点很不适应啊。


我的经历还是有一点点曲折。首先我使用用户shiyanjun创建了/home/shirdrn目录,本来以为之后可以chown给shirdrn用户的;然后我才创建了一个用户shirdrn,默认指定shirdrn组,提示我/home/shirdrn目录不属于shirdrn,这是肯定的。当我su到shirdrn用户,并想使用sudo权限将/home/shirdrn目录chown过来的时候,结果提示我:


shirdrn is not in the sudoers file


所以我就想把shirdrn用户加入到sudoers文件中,具体位置是/etc/sudoers,可以看到,该文件默认的权限是-r-r-----,只对于root组的root用户,也就是0440权限。默认root用户也不能对该文件执行w权限,必须通过root用户首先添加对该文件的w权限才能修改该文件。


结果,在网上搜到一篇文章,说是什么Alt+F1等等,最后su到用户shiyanjun,增加了/etc/sudoers文件的w权限:


sudo chmod u+w /etc/sudoers


修改成功了,结果出现了可以使用用户shiyanjun修改/etc/sudoers文件,但是因为是read-only的,无法保存。再执行sudo命令,老是出现提示:


sudo: /etc/sudoers is mode 0640, should be 0440


彻底要崩溃了,我感觉,此时如果不使用超级用户(以前在Fedora下root最管用了)是解决不了问题的,这时就想到如何启动Ubuntu下的root用户,网上搜索了一通,不得而知,最后终于找到了一种解决方式,文章出自http://www.craigmayhew.com/blog/2009/09/ubuntu-error-sudo-etcsudoers-is-mode-0640-should-be-0440/,非常感谢。下面简单叙述一下具体解决过程:


1、重新启动Ubuntu系统,启动的时候按住Esc键,可以看到引导选项;


2、可以看到引导选项列表中,有一项的末尾括号里是这样的(recovery mode),也就是恢复模式,选择这项,回车继续;


3、数据加载一会,进入到Recovery Menu页面,可以看到有如下选项:


resume
clean
dpkg
fsck
grub
netroot
root
xifx


选择root,也就是进入试用root用户进行系统恢复,在里面可以执行超级用户权限的操作。


回车后,可以看到熟悉的


root@TUZKI:~#


命令提示符了。


4、设置或者撤销/etc/sudoers文件的权限


此时,你可以执行:


chmod u-w /etc/sudoers


撤销对/etc/sudoers文件的w权限。我是直接增加了root的w权限,直接将用户shirdrn添加到了/etc/sudoers文件中,在


root    ALL=(ALL)    ALL


这行下面增加了如下一行:


shirdrn    ALL=(ALL)    ALL


这就使得用户shirdrn成了sudo组的用户了,可以执行超级权限了。


退出recovery mode,重新启动系统,进入后,可以使用shirdrn用户创建/home/shirdrn目录了:


sudo mkdir /home/shirdrn


因为shirdrn已经是sudo组的用户了,执行cd ~再执行pwd可以看到shirdrn用户的/home/shirdrn目录了。
<think>我们正在解决sudo命令报错的问题,具体错误是: sudo: /etc/sudo.conf is world writable sudo: /etc/sudoers is world writable 根据引用内容,这些错误通常是由于相关配置文件目录的权限设置过于宽松(world writable)导致的。正确的权限设置应该是只有所有者(root)有写权限。 参考引用[1][2][3][4]中的解决方法,我们可以总结出以下步骤: 1. 使用`pkexec su`或`su`切换到root用户(如果当前用户有权限的话)。如果无法使用sudo,可能需要通过其他方式(如恢复模式)获取root权限。 2. 修改相关文件目录的权限: - 对于`/etc/sudoers`文件,权限应为440(即-r--r-----): ```bash chmod 440 /etc/sudoers ``` - 对于`/etc/sudoers.d`目录,权限应为755(即drwxr-xr-x)或775(即drwxrwxr-x),但引用[2]中使用了775,而通常建议是750或755。为了安全,建议使用755(所有者有读、写、执行权限,组和其他人有读和执行权限): ```bash chmod 755 /etc/sudoers.d ``` - 对于`/etc/sudoers.d/`目录下的文件,权限应为440(和sudoers文件相同): ```bash chmod 440 /etc/sudoers.d/* ``` - 另外,根据错误提示,我们还需要处理`/etc/sudo.conf`文件,因为报错中提到了它也是world writable。同样,这个文件的权限应该设置为440(或至少600,但440更安全): ```bash chmod 440 /etc/sudo.conf ``` 3. 确保文件的所有者为root: ```bash chown root:root /etc/sudoers chown root:root /etc/sudo.conf chown -R root:root /etc/sudoers.d ``` 注意:在执行这些命令时,必须使用root权限。 如果当前无法使用sudo,可以尝试以下方法获取root权限: - 如果当前用户在sudoers列表中,但sudo命令报错,可以尝试使用`su`切换到root(需要知道root密码)。 - 如果没有root密码,且系统允许,可以通过单用户模式(恢复模式)进入root shell。 步骤总结: 1. 切换到root用户。 2. 修改文件目录权限以及所有权。 3. 验证sudo命令是否恢复正常。 请按照以下步骤操作: ### 解决步骤 1. **切换到root用户**: 如果当前用户有`su`权限,可以输入: ```bash su - ``` 然后输入root密码。如果没有root密码,或者无法通过`su`切换,请参考系统文档进入恢复模式。 2. **修改权限和所有权**: 在root用户下执行以下命令: ```bash # 设置sudoers文件权限和所有权 chmod 440 /etc/sudoers chown root:root /etc/sudoers # 设置sudo.conf文件权限和所有权 chmod 440 /etc/sudo.conf chown root:root /etc/sudo.conf # 设置sudoers.d目录权限和所有权 chmod 755 /etc/sudoers.d chown -R root:root /etc/sudoers.d # 设置sudoers.d目录下所有文件的权限 chmod 440 /etc/sudoers.d/* ``` 3. **验证**: 退出root用户(使用`exit`命令),然后尝试使用sudo命令,例如: ```bash sudo ls ``` 如果不再报错,则问题解决。 ### 注意事项 - 在修改权限时,请确保不要将权限设置得过于严格(例如,将sudoers文件设置为000会导致sudo完全不可用)。 - 如果`/etc/sudoers.d`目录下有子目录,需要递归设置权限,但通常该目录下只有文件。如果有子目录,则子目录的权限应设置为755,文件设置为440。 - 如果系统中没有`/etc/sudo.conf`文件(有些系统可能没有),那么可以忽略关于该文件的步骤。但根据错误提示,你的系统存在该文件且权限有问题。 ### 相关问题 §§相关问题§§ 1. 如何在没有sudo权限的情况下修复sudo配置? 2. 如何通过恢复模式修复系统权限? 3. 如何防止配置文件权限被错误修改?</think>### 解决 sudo: /etc/sudo.conf 和 /etc/sudoers 权限问题 出现 `sudo: /etc/sudo.conf is world writable` 和 `sudo: /etc/sudoers is world writable` 错误,是由于关键配置文件权限设置不安全(全局可写),导致 sudo 安全机制拒绝执行。以下是解决步骤: #### 修复步骤(需 root 权限执行) 1. **获取 root 权限** 若仍有 sudo 访问权限: ```bash sudo -i # 尝试进入root ``` 若完全无法使用 sudo: ```bash pkexec su # 通过PolicyKit获取root ``` 2. **修正权限** 依次执行: ```bash # 修复sudo.conf权限 chmod 440 /etc/sudo.conf chown root:root /etc/sudo.conf # 修复sudoers权限 chmod 440 /etc/sudoers chown root:root /etc/sudoers # 修复sudoers.d目录权限 chmod 755 /etc/sudoers.d chown -R root:root /etc/sudoers.d # 修复sudoers.d内文件权限 chmod 440 /etc/sudoers.d/* ``` 3. **验证修复** ```bash ls -l /etc/sudo.conf /etc/sudoers /etc/sudoers.d ``` 正确权限应显示: - `/etc/sudo.conf`:`-r--r-----` (440) - `/etc/sudoers`:`-r--r-----` (440) - `/etc/sudoers.d`:`drwxr-xr-x` (755) - 子文件:`-r--r-----` (440) #### 关键原理 - **440权限**:仅允许 root 用户读写,其他用户只读,防止未授权修改[^1][^4]。 - **755目录权限**:确保目录可访问但不可随意修改内容[^2]。 - 权限错误通常由误操作(如 `chmod 777`)或错误脚本导致[^3]。 #### 预防措施 ```bash # 定期检查权限 sudo ls -l /etc/sudoers* /etc/sudo.conf # 避免危险命令 永远不要执行:sudo chmod -R 777 /etc ``` > 注意:若执行 `pkexec su` 失败,需通过系统恢复模式(Recovery Mode)或 Live CD 挂载根分区修复[^4]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值