sudo: /etc/sudoers is mode 0777, should be 0440 单用户 sudo不用输入密码的方法

本文介绍了如何解决Linux系统中sudo权限问题,包括通过编辑sudoers文件为特定用户分配sudo权限,以及如何在忘记sudoers文件权限更改后恢复系统正常运行。

sudo权限问题考察一题  su -   sudo su -    sudo su - test

[root@localhost ~]# su - zzx   #root用户进行切换不需要输入密码

[zzx@localhost ~]$ su - zzy    #这时需要输入zzy的密码

[zzy@localhost ~]$ su - zzx   #输入zzx的密码才能由zzx切换到zzy

[zzx@localhost ~]$ su -   #zzx切换到root  输入root密码

[zzy@localhost ~]$ sudo su -zzx   

[sudo] password for zzy:           #输入zzy密码  提示如下  ,说明zzy没有sudo权限  需要visudo授权

zzy 不在 sudoers 文件中。此事将被报告。

切换到root进行visudo授权

[zzy@localhost ~]$ su -

[root@localhost ~]# visudo  #root行下添加

98 root ALL=(ALL) ALL
99 zzy ALL=(ALL) ALL

[zzy@localhost ~]$ sudo su - zzx   #此时zzy有了sudo权限
[sudo] password for zzy:               #输入zzy的密码就可以切换到zzx
上一次登录:六 4月 11 13:59:45 CST 2015pts/0 上
[zzx@localhost ~]$   #这时zzx没有sudo权限  要用sudo su - 切换到zzy 是不行的  只能用  su - zzy  用root权限进行切换

 

 

 

 

 

 

 

打开上网客户端、新立得,这些涉及到系统的都要输入密码,对于我们大多数人来说,用Linux无非是做桌面应用,对安全性没必要搞得跟服务器一些。下面是我的一个解决办法:


在启动时进入安全模式,这时是用root登录的,执行: (注:下面这些命令都是要加:sudo的,或者开一个窗口:sudo su - 切换到root界面来操作)

chmod 740 /etc/sudoers  

然后打开/etc/sudoers这个文件,把最后一行: 

%admin ALL=(ALL) 
改为 
%admin ALL=(ALL) NOPASSWD: NOPASSWD: ALL 

保存退出。 

执行: 
chmod 0440 /etc/sudoers   (注:这个地方千万要注意,一定要设置成044,而不能设置成777,如果是777的话,并且你还忘记了root的密码的话,之后就不能使用sudo了)

reboot your ubuntu.OK! 
 
 
单用户
 

不得不说,有时候手贱的把/etc/sudoers文件权限改了,是一件很蛋疼的事.因为此时你会发现无论做什么都会弹出一条讨厌的提示,说没有权限执行等等...

网上有介绍登入root用户,或者去grub的recovery mode选项去选择root模式进入,再去用chmod把/etc/sudoers的权限改回来.但是你可能从来没设置过root密码,或者你根本就不知道root密码是多少.或者即便进入了recovery mode选项去选择root模式,当执行chmod的时候却发现read-only file system.这时,同学们也许只能仰天长啸了...

下面的方法可谓终极解决之道(本人在ubuntu12.04版本亲测,其他版本也许不同).

1. 启动ubuntu的时候按下shift键,注意是一直按住,也是进入grub list栏;

2. 选择第二个recovery mode模式,注意,选择之后不是按回车(enter),而是按e键编辑引导命令;

3. 然后修改倒数第三行里面的“ro recovery nomodeset”改为"rw single init=/bin/bash",最下面有按键的提示.(注意:ro是只读模式read only,rw是读写模式read write);

4. 修改完之后按Ctrl-x或F10进入单用户模式(此时做什么操作都可以);

5. 输入“chmod 0440 /etc/sudoers”将/etc/sudoers的权限改回来(同时,这里可以设置root密码,输入“passwd root”,然后回车,输入密码,要两次.注意,密码不会出现***);

6. 重启,只能使用“ctrl+alt+delete”,其他的都不行.

 

 

把/etc/sudoers里面最后一行
%admin ALL=(ALL)
改为
%admin ALL=(ALL) NOPASSWD: NOPASSWD: ALL 

转载于:https://www.cnblogs.com/hanxing/p/4269406.html

<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、付费专栏及课程。

余额充值