sudo 权限之危险的 bash 命令

news2025/1/11 12:49:57

文章目录

    • @[toc]
    • 事出有因
    • 干就完事了
      • 创建用户
      • 配置 sudo 权限
      • sudo 验证
        • 使用 bash 命令执行 chmod 命令
        • 使用 bash 命令执行删根

事出有因

使用普通用户安装 tidb 时,发现报错了,报错内容如下:

ERROR   SSHCommand      {"host": "172.17.133.182", "port": "22", "cmd": "export LANG=C; PATH=$PATH:/bin:/sbin:/usr/bin:/usr/sbin; /usr/bin/sudo -H bash -c \"uname -m\"", "error": "Process exited with status 1", "stdout": "", "stderr": "We trust you have received the usual lecture from the local System\nAdministrator. It usually boils down to these three things:\n    #1) Respect the privacy of others.\n    #2) Think before you type.\n    #3) With great power comes great responsibility.\nsudo: no tty present and no askpass program specified\n"}

发现,tidb 在自动安装时,会用到 sudo bash 命令,当前环境只开放了指定的命令,不包含 bash 命令,导致 tidb 在创建集群的时候报错了,于是,临时修改了 sudo 的权限配置,增加了 bash 命令的权限,于是乎,引发了思考,是不是给了 bash 的 sudo 权限,有这个命令权限的用户也能删根跑路了?

干就完事了

为了图方便,我这边直接用 docker 的方式来验证,这个 docker 镜像并没有挂载任何目录,下面是 dockerfile,我需要安装一下 sudo 命令和一些方便自己习惯的工具,顺便拿 rockylinux 玩一玩

FROM rockylinux:8.9

ENV PS1='\[\e[7;34m\]\u@\h\[\e[0m\]\[\e[0;35m\]:$(pwd) \[\e[0m\]\[\e[0;35m\]\t\[\e[0m\]\n\[\e[0;32m\]> \[\e[0m\]'
ENV LANG=en_US.UTF-8

RUN yum install -y sudo vim && yum clean all && \
    echo '/usr/bin/sleep 315360000' > start.sh && \
    chmod +x start.sh

CMD ["/usr/bin/bash","start.sh"]

构建镜像

sudo docker build -t rockylinux:test-sudo .

镜像放后台启用

sudo docker run -d --name sudotest rockylinux:test-sudo

进入容器

sudo docker exec -it sudotest bash

创建用户

模拟一下,名字不重要

useradd testsudo

配置 sudo 权限

可以看到,这里我只给了一个 bash 命令的权限,看看后面可以有多么的无法无天

cat << EOF > /etc/sudoers.d/testbash
User_Alias SUDOMAN = testsudo
Cmnd_Alias SYSTEM = /usr/bin/bash
Defaults    log_host, log_year, logfile = /root/.sudo_sudoman.log
SUDOMAN ALL=(ALL) NOPASSWD: SYSTEM
EOF

给文件变个权限,等会先拿这个文件赋权来验证

chmod 400 /etc/sudoers.d/testbash

可以确认一下是不是修改成功了

ls -l /etc/sudoers.d/

那当然必须成功

-r-------- 1 root root 165 Jun 23 07:58 testbash

sudo 验证

先切换到前面创建的 testsudo 用户

su - testsudo
使用 bash 命令执行 chmod 命令

前面,我们使用 root 用户把 /etc/sudoers.d/testbash 这个文件的权限改成 400,现在我们用 sudo bash 命令改回来

sudo bash -c "chmod 644 /etc/sudoers.d/testbash"

验证一下结果(因为咱们只给了 bash 命令,所以直接执行 ls -l /etc/sudoers.d/命令就会返回 Permission denied

sudo bash -c "ls -l /etc/sudoers.d/"

可以看到,权限被改成 644 了

-rw-r--r-- 1 root root 165 Jun 23 07:58 testbash

在这里插入图片描述

使用 bash 命令执行删根

家人们,这一步是在容器环境执行的,只是为了告诉大家风险有多高,别去生产玩,会去提篮桥的

  • 保险起见,我拆解解释一下 rm -rf /* 这个命令的含义,不要成为张三(法外狂徒)
    • rm 是 linux 删除文件的命令,类似于 windows 的 delete 键和删除这个选项(不过 windows 有回收站,删了还能找回,linux 就没有这么幸运了,回收站需要自己创建,可以看我之前的博客:linux 大工程 - 我要一个属于自己的回收站)
    • -r 是 rm 命令的参数,用户删除目录和目录下的所有内容
    • -f 是 rm 命令的参数,表示不需要用户同意,直接删除,类似于 windows 的 shift + delete 组合键,就不会进入回收站了(linux 如果按照上面的方法创建了回收站,还是会进入到回收站的,除非使用绝对路径的 rm 命令去删除的)
    • / 是 linux 的根目录,也是所有目录和文件的起始目录,只要根删的够快,牢房就吃的越快
    • * 是 linux 中的通配符,表示匹配所有,当然,这个命令下,这个通配符加不加都是一样的结果
sudo bash -c "rm -rf /*"

然后就会看到一堆的刷屏,就问你刺不刺激

在这里插入图片描述

愿大家都不会误删根目录,另外 tidb 你太狠了,普通用户创建完之后,直接给 tidb 用户加了所有命令的 sudo 免密配置,这真的不危险吗???

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1854609.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

green bamboo snake

green bamboo snake 【竹叶青蛇】 为什么写这个呢&#xff0c;因为回县城听说邻居有人被蛇咬伤&#xff0c;虽然不足以危及生命&#xff0c;严重的送去市里了。 1&#xff09;这种经常都是一动不动&#xff0c;会躲在草地、菜地的菜叶里面、果树上、有时候会到民房大厅休息&a…

嵌入式系统中的加解密签名

笔者来了解一下嵌入式系统中的加解密 1、背景与名词解释 笔者最近在做安全升级相关的模块&#xff0c;碰到了一些相关的概念和一些应用场景&#xff0c;特来学习记录一下。 1.1 名词解释 对称加密&#xff1a;对称加密是一种加密方法&#xff0c;使用相同的密钥&#xff08;…

如何搭建饥荒服务器

《饥荒》是由Klei Entertainment开发的一款动作冒险类求生游戏&#xff0c;于2013年4月23日在PC上发行&#xff0c;2015年7月9日在iOS发布口袋版。游戏讲述的是关于一名科学家被恶魔传送到了一个神秘的世界&#xff0c;玩家将在这个异世界生存并逃出这个异世界的故事。《饥荒》…

力扣SQL50 求关注者的数量 分组计数

Problem: 1729. 求关注者的数量 Code select user_id, count(1) followers_count from Followers group by user_id order by user_id;

stm32学习笔记---GPIO输入(代码部分)按键控制LED/光敏传感器控制蜂鸣器

目录 第一个代码&#xff1a;按键控制LED 模块化程序 LED驱动程序 GPIO的四个读取函数 GPIO_ReadInputDataBit GPIO_ReadInputData GPIO_ReadOutputDataBit GPIO_ReadOutputData Key驱动程序 第二个代码&#xff1a;光敏传感器控制蜂鸣器 蜂鸣器驱动代码 光敏传感器…

【内存管理】页面分配机制

前言 Linux内核中是如何分配出页面的&#xff0c;如果我们站在CPU的角度去看这个问题&#xff0c;CPU能分配出来的页面是以物理页面为单位的。也就是我们计算机中常讲的分页机制。本文就看下Linux内核是如何管理&#xff0c;释放和分配这些物理页面的。 伙伴算法 伙伴系统的…

K8s部署高可用Jenkins

小伙伴们大家好呀&#xff01;断更了近一个月&#xff0c;XiXi去学习了一下K8s和Jenkins的相关技术。学习内容有些庞杂&#xff0c;近一个月的时间里我只学会了一些皮毛&#xff0c;更多的内容还需要后面不断学习&#xff0c;不断积累。最主要的是云主机真得很贵&#xff0c;为…

C++ | Leetcode C++题解之第155题最小栈

题目&#xff1a; 题解&#xff1a; class MinStack {stack<int> x_stack;stack<int> min_stack; public:MinStack() {min_stack.push(INT_MAX);}void push(int x) {x_stack.push(x);min_stack.push(min(min_stack.top(), x));}void pop() {x_stack.pop();min_sta…

多物理场仿真对新能源汽车用电机优化分析 衡祖仿真

1、问题所在 为了改善空气质量&#xff0c;减少环境污染&#xff0c;减少对石油的依赖&#xff0c;降低能源安全风险&#xff0c;国家大力倡导发展新能源汽车&#xff0c;大量新能源车企应运而生&#xff0c;竞争日趋激烈。使用经济效率较高的电机对于增强企业市场竞争力非常重…

常用加密算法之 RSA 简介及应用

引言 相关博文&#xff1a; Spring Boot 开发 – 常用加密算法简介&#xff08;一&#xff09;常用加密算法之 SM4 简介及应用 一、RSA算法简介 RSA &#xff08;Rivest-Shamir-Adleman&#xff09; 算法是一种非对称加密技术&#xff0c;由Ron Rivest、Adi Shamir和Leonar…

本地离线模型搭建指南-中文大语言模型底座选择依据

搭建一个本地中文大语言模型&#xff08;LLM&#xff09;涉及多个关键步骤&#xff0c;从选择模型底座&#xff0c;到运行机器和框架&#xff0c;再到具体的架构实现和训练方式。以下是一个详细的指南&#xff0c;帮助你从零开始构建和运行一个中文大语言模型。 本地离线模型搭…

spdlog生产者消费者模式

spdlog生产者消费者模式 spdlog提供了异步模式&#xff0c;显示的创建async_logger, 配合环形队列实现的消息队列和线程池实现了异步模式。异步logger提交日志信息和自身指针&#xff0c; 任务线程从消息队列中取出消息后执行对应的sink和flush动作。 1. 环形队列 1.1 环形队…

独角兽品牌獭崎酱酒:高性价比的酱香之选

在酱香型白酒领域中&#xff0c;獭崎酱酒以其独特的品牌定位和高性价比迅速崛起&#xff0c;成为市场上备受关注的独角兽品牌。作为贵州茅台镇的一款新秀酱香酒&#xff0c;獭崎酱酒不仅传承了百年酿造工艺&#xff0c;还以创新的商业模式和亲民的价格赢得了广大消费者的青睐。…

双指针算法——部分OJ题详解

目录 关于双指针算法&#xff1a; 1&#xff0c;对撞指针 2&#xff0c;快慢指针 部分OJ题详解 283.移动零 1089.复写零 202.快乐数 11.盛水最多的容器 611.有效三角形的个数 剑指offer 57.和为s的两个数字 15.三数之和 18.四数之和 关于双指针算法&#xff1a; …

硬盘数据恢复软件,推荐5种适合你的方法来恢复硬盘数据

硬盘数据恢复软件&#xff0c;作为解决数据丢失问题的关键工具&#xff0c;帮助用户在重要文件丢失时迅速找回数据。本教程介绍5种恢复实用硬盘数据方法&#xff0c;适应不同类型和严重程度的数据损坏情况。 文章摘要&#xff1a; 一. 硬盘数据恢复软件 二. 数据恢复原理 三. …

ThinkPHP:查询数据库数据之后,更改查询数据的字段名称

一、原始查询数据 含有字段item_no&#xff0c;lot_num&#xff0c;position $data[brushed] db::table(wip_station_transaction) ->where([wip_entity_name>$wip_entity_name,line_code>$line_code,]) ->field([item_no, lot_num, position]) ->select(); …

React18中各种Hooks用法总结( 内附案例讲解)

React中各种Hooks用法总结 内附案例讲解 一、useState useState 是一个 React Hook&#xff0c;它允许你向组件添加一个 状态变量。 import React, { FC, memo, useState } from react import { MainContainer } from ./style interface IProps {children?: React.ReactNo…

上新:NFTScan 正式上线 Bitcoin-brc20 浏览器!

近日&#xff0c;NFTScan 团队正式对外发布了 Bitcoin-brc20 浏览器&#xff0c;将为 Bitcoin 生态的 NFT 开发者和用户提供简洁高效的 NFT 数据搜索查询服务。作为比特币生态中最火热的标准之一&#xff0c;brc20 也吸引着广泛的关注。洞悉其巨大潜力&#xff0c;NFTScan 对 b…

基于springboot websocket和okhttp实现消息中转

1、业务介绍 消息源服务的消息不能直接推给用户侧&#xff0c;用户与中间服务建立websocket连接&#xff0c;中间服务再与源服务建立websocket连接&#xff0c;源服务的消息推给中间服务&#xff0c;中间服务再将消息推送给用户。流程如下图&#xff1a; 此例中我们定义中间服…

Linux应急响应——知攻善防应急靶场-Linux(1)

文章目录 查看history历史指令查看开机自启动项异常连接和端口异常进程定时任务异常服务日志分析账户排查总结 靶场出处是知攻善防 Linux应急响应靶机 1 前景需要&#xff1a; 小王急匆匆地找到小张&#xff0c;小王说"李哥&#xff0c;我dev服务器被黑了",快救救我&…