用户无法使用sudo权限

💡问题

Ubuntu 在普通用户使用sudo命令时,出现xxx is not in the sudoers file. This incident will be reported. 并且Linux系统中root用户没有打开。
问题图片

奔着解决问题的原则,第一个想到的是打开root权限,对普通用户授权。结果令人意外,在进行认证时,同样要使用sudo命令,而使用sudo命令就要进root去授权,这是个死循环。(不应该啊,这不符合逻辑啊!!!)

🔎原因

当前用户未被授予sudo权限,所以无法使用sudo命令。



📖解决办法

❗当前计算机不存在其他用户

进入GNU GRUB,找到高级选项,通过恢复模式去操作root用户。GNU GRUB是一个来自GNU项目的多操作系统启动程序。GRUB是多启动规范的实现,它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。

🔧具体操作

重启,在系统加载时,长按shift,进入GNU GRUB界面,选择Ubuntu 高级选项,如图所示。(虚拟机操作时注意鼠标位置,要放在虚拟机里,别放到宿主机里,避免系统误认为是对宿主机操作

GNU GRUB界面

选择带有recovery mode的选项(恢复模式),如图所示。

恢复模式

选择root,进入root的shell界面,回车即可进入root用户。

输入usermod -G sudo xxx(xxx是上面报错出现的用户名)

然后输入exit退出root shell界面。

root shell界面
最后选择resume这一项进行正常启动。

正常启动
启动后,使用sudo命令即可正常使用。

正常使用




❗❗存在其他用户并且其他用户拥有sudo权限

🔧具体操作

(注:用户A未拥有sudo权限的用户,用户B为其他用户)
切换至其他用户:su 用户名B

使用用户的sudo命令为用户A授权sudo usermod -G sudo 用户名A

使用groups命令查看用户所属组:groups 用户名A 可以看到用户在sudo组下即可。具体示例




⭐拓展

对用户进行sudo授权时,也可以修改/etc/sudoers这个文件(需要对该文件增加写权限)

实际可以使用visudo命令进行修改。

找到root ALL=(ALL:ALL) ALL这一行,在下面一行加上:

用户名 ALL=(ALL:ALL) ALL

然后保存 :wq!



📚参考内容

参考内容:

GRUB-百度百科

菜鸟教程——Linux 用户和用户组管理

ubuntu系统启动时Recovery Mode的详细使用教程

https://blog.51cto.com/qingspace/1913910

https://blog.csdn.net/qq_43780850/article/details/122380093(关于拓展中添加的内容解释)

ubuntu下执行sudo命令提示:xx is not in the sudoers file. This incident will be reported.(相对比较详细的)

`sudo firewall-cmd --panic-on` 并不是 `deny all` 的准确表述,但在某些情境下它可以起到类似于“禁止所有流量”的效果。如果你确实想彻底拒绝所有的网络流量(包括已经建立的连接),则理解并慎重考虑这一操作的影响。 ## 正确的做法:使用 rich rule 实现精细化管理 如果你想更精细地控制流量而不仅仅是简单粗暴地全部拒之门外,建议按照以下步骤创建一个丰富的规则集 (`rich rules`) 来达成目的: ### 1. **允许已有的合法连接继续通行** 这一步是为了不影响当前正在进行的工作和业务,避免突然中断服务造成影响。例如SSH远程会话等关键链路。 ```bash sudo firewall-cmd --add-rich-rule='rule family="ipv4" priority="1" ctstate=ESTABLISHED,RELATED accept' ``` ### 2. **定义自定义区域或修改现有公共区域策略** 你可以选择在一个新的区域内实施严格的访问控制措施,或者直接编辑默认使用的 `public` 区域。为了安全起见,这里我们演示如何新建一个叫做 "strict_control" 的特殊用途区: ```bash sudo firewall-cmd --new-zone=strict_control --permanent sudo firewall-cmd --reload # 用更改使新区域可用 sudo firewall-cmd --set-default-zone=strict_control # 设定为默认工作区 (可选) ``` ### 3. **设置入口流量默认处理方式为丢弃(DROP)** 接下来让这个区域对外部发来的任何未知求都采取拒绝态度,默认丢弃掉它们而不给出回报文: ```bash sudo firewall-cmd --zone=strict_control --remove-target # 清除原有目标导向(如果有) sudo firewall-cmd --zone=strict_control --set-target=DROP --permanent sudo firewall-cmd --runtime-to-permanent # 确保永久保存这些变动 ``` ### 4. **逐一添加必要的白名单项** 最后才开始逐条列出那些经过评估后认为必须对外开放的服务端口或用程序接口。比如您只想暴露 HTTP(S) 和 SSH 接入权限给外界用户就可以像这样配置: ```bash sudo firewall-cmd --zone=strict_control --add-service=http --permanent # 开放Web浏览(HTTP/TCP 80) sudo firewall-cmd --add-service=https --permanent # 安全网页浏览(HTTPS/TCP 443) sudo firewall-cmd --zone=strict_control --add-port=22/tcp --permanent # 远程登陆(Secure Shell Protocol) # 别忘了刷新缓存令最新的规定即时生效噢! sudo firewall-cmd --complete-reload ``` 注意,在生产环境中盲目执行类似 “完全关闭” 或者 “封禁一切” 操作之前一定要充分测试,并确保有急回滚方案以防万一! --- **重要提示**: 直接运行所谓的 "deny all" 命令可能会导致意外后果特别是对于正在依赖外部网络资源正常运作着的系统来说尤为危险。始终优先选用细粒度、有针对性的安全策略而不是一刀切的方法来保障计算机系统的稳定性与可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值