当前位置: 首页 > news >正文

[Linux基础——Lesson10.Linux环境下普通用户 sudo 提权]

前言

   本次博客我将会手把手带大家快速解决 Linux 下用不了sudo命令的问题,相信看完的小伙伴都能解决该问题。那么废话不多说,开始我们今天的内容。 

一、什么是 sudo 指令? 

理解 sudo 指令

1️⃣sudo 指令的核心本质

  • sudo 是 Superuser Do(以超级用户身份执行)的缩写,它的核心价值是 “权限精细化管控”—— 既避免普通用户直接使用 root 账号(减少误操作风险),又能让普通用户在需要时临时获取特定高权限,无需切换到 root 账号(提升操作效率)
  • 比如普通用户执行 apt install xxx(安装软件)时会提示 “权限不足”,但加上 sudo 后(sudo apt install xxx),输入自己的密码验证通过,就能以 root 权限完成安装,无需先执行 su root 切换账号。

2️⃣sudo 与 su 的关键区别(为什么不用 su 而用 sudo?)

很多初学者会混淆 sudo  su(切换用户指令),两者的核心差异在于 “权限范围” 和 “安全性”,具体对比如下:

特性sudosu
权限范围仅当前指令拥有 root 权限切换到 root 后,所有操作都有 root 权限
验证方式输入当前普通用户的密码输入 **root 账号的密码 **
安全性低风险(权限仅作用于单条指令)高风险(易因误操作删除系统文件)
适用场景临时执行高权限指令(安装、配置)需长期以 root 身份操作(极少用)

3️⃣sudo 的常见使用场景

  1. 安装 / 卸载软件:
    几乎所有 Linux 发行版(Ubuntu、CentOS 等)安装软件都需要 root 权限,例如:

    • Ubuntu/Debian 系统:sudo apt install 软件名(安装)sudo apt remove 软件名(卸载)
    • CentOS/RHEL 系统:sudo yum install 软件名(安装)sudo yum remove 软件名(卸载)
  2. 修改系统配置文件系统核心配置文件:
    (如 /etc/profile/etc/hosts)默认只有 root 能修改,普通用户需用 sudo 编辑,例如:sudo nano /etc/hosts(用 nano 编辑器修改 hosts 文件)

  3. 管理系统服务启动、停止、重启系统服务:
    (如 Apache、MySQL)需要 root 权限,例如:sudo systemctl start apache2(启动 Apache 服务)

  4. 查看 / 操作高权限文件
    某些系统日志文件(如 /var/log/syslog)只有 root 能读取,普通用户需用 sudo 查看:sudo cat /var/log/syslog(查看系统日志)

4️⃣sudo 的重要特性(你可能不知道的细节)

1.密码缓存机制

        输入一次 sudo 密码后,系统会缓存权限约 5 分钟(默认值),期间再次使用 sudo 无需重复输密码,5 分钟后自动失效(需重新验证)。

  • 手动取消缓存:执行 sudo -k(立即失效,下次用 sudo 需重新输密码)。

2.权限管控文件:/etc/sudoers

        不是所有普通用户都能使用 sudo—— 只有在 /etc/sudoers 文件中被 “授权” 的用户,才能执行 sudo 指令。

  • 编辑该文件必须用 sudo visudo 命令(不能直接用 nano 或 vimvisudo 会自动检查语法,避免改错导致 sudo 失效)。
  • 常见授权格式:用户名 ALL=(ALL:ALL) ALL(表示 “该用户可在所有主机上,以所有用户身份,执行所有命令”,Ubuntu 中默认给初始用户此权限)。

3.限制特定命令的权限
管理员可通过 sudoers 文件,只允许普通用户用 sudo 执行特定命令(而非所有命令),例如:

  • user1 ALL=(ALL:ALL) /usr/bin/apt install(仅允许 user1 用 sudo 执行 apt install,不能执行其他高权限命令,进一步提升安全性)。

5️⃣常见错误与解决

如果执行 sudo 时提示 xxx is not in the sudoers file. This incident will be reported.(用户不在 sudoers 文件中),说明当前用户未被授权使用 sudo,解决方法:

  1. 切换到 root 账号:su root(输入 root 密码);
  2. 编辑 sudoers 文件:visudo
  3. 在文件末尾添加一行:当前用户名 ALL=(ALL:ALL) ALL
  4. 保存退出(visudo 用 Ctrl+O 保存,Ctrl+X 退出),之后切换回普通用户即可使用 sudo

安装 sudo 指令

 在root用户下的操作指令:

yum install -y sudo


二、为什么普通用户无法使用 sudo 命令?

         在linux中 root 的权限非常大,比如我们常开玩笑的命令 rm -rf /,这都是可以直接执行的。而且在Linux中没有回收站这一说,这就造成一旦执行了错误的命令,产生的代价将会非常大。
       所以普通用户要受权限影响,只有被root用户添加到信任列表里面的人才可以用sudo命令,因为root用户也怕你拿着他的权限去到处瞎搞。

 例如:

sudo ls -l		//就是以root权限查看当前目录里的内容
  • 但是,如果是新创建的普通账户,一般来说一开始是不能执行sudo命令的: 

  • 根据提示,WD 这一用户并不在sudoers这个文件中,因此没有使用sudo的权利
  • suduers文件位于路径/etc/sudoers
  • sudoers这个文件为root账户所属。这个文件相当于一个白名单,在这个文件里的用户才可以使用sudo命令,如果不在sudoers文件里,就无法使用sudo提权,来暂时获得root的权利
  • 如果要将普通用户添加到sudoers文件中,那就需要进入root账户进行操作

 三、如何将普通用户添加到信任列表里面

🎈前提 

  • 只有root用户才能将某个普通用户添加到信任列表里面,因为sudo命令的功能就是,将sudo后面的命令以root权限级别来执行,你想使用root的权限,肯定要先征求root用户的同意才行。所以只有root用户才能将普通用户添加到信任列表里面,root用户将当前普通用户添加到信任列表里面后,当前普通用户就可以使用sudo命令了。
  • 注意:添加信任用户还必须掌握一些vim的基本命令,如果还有不熟悉vim的小伙伴可以去看看我这篇文章:[Linux基础——Lesson4.Vim编辑器]

🧐 解决方案

  •  首先,进入root账户

  •  接着,进入目录/etc

  •  然后,用vim打开文件sudoers
 命令:vim sudoers

可以看到如下界面: 

 看起来很复杂,所以我们先设置一下行数:

  •  操作1:shift  + : 
  •  操作2命令:set nu

  •  找到对应的位置

找到 /etc/sudoers 文件100行左右## Allows people in group wheel to run all commands” 所在的那几行。

  •  接着,输入字符i,进入插入模式
  • 然后,根据上面黄色框所框出来部分的格式,将要添加的普通用户写入即可: 

  • 其实第 99 行“Allows people in group wheel to run all commands”这句话的意思就是 “允许wheel组中的人运行所有命令”,所以你只需要将你想要信任的用户添加到wheel组中即可。

  • 按照以下格式写入。
用户名     ALL=(ALL)       ALL

  •  最后,先按Esc键,进入命令模式,再按冒号:,即shift + ;进入底行模式,在底行模式下输入wq!强制保存退出
  • 注意:一定要是英文状态下的符号 

🍑 检验正确性

  •  我们回到普通账户来检验是否可以使用sudo命令:

  •  可以看到,原来不能使用sudo提权命令的普通账户,经过修改后就可以正常使用sudo命令了。

 四、结束语

以上就是我对  sudo 提权  的理解,

感谢你的三连支持!!!

http://www.dtcms.com/a/442826.html

相关文章:

  • 兰州网站建设兼职山东兴润建设集团网站
  • 内存总线(Memory Bus)是什么?
  • 深圳建筑业网站建设现在市场最火的网店平台
  • DrvBsp_I2C驱动_EEPROM(一)
  • JAVA实现评委打分
  • 建设网站需要哪些职位营销策略有哪些有效手段
  • 工艺品网站建设开发青羊区建设局网站
  • ViT实战一:Patch_embedding
  • Java8+新特性
  • 网站的根目录怎么找境外网站不备案盈利
  • 【Linux】Linux 常用指令2
  • 买服务器做网站百度云搜索引擎入口手机版
  • 算法入门:专题攻克主题一---双指针(2)快乐数 呈最多水的容器
  • 中国建设银行移动门户网站广州市花
  • 手写MyBatis第92弹:SqlSource体系、SqlNode树与Trim标签实现原理全揭秘
  • Perl 简介
  • 【c++】set和map
  • LabVIEW脉冲信号中值滤波
  • 做网站北京公司网站做301对优化有影响
  • 【序列晋升】47 Spring Authorization Server授权码模式深度解构:OAuth2.1协议与PKCE扩展的实现细节
  • 深圳市手机网站建设企业网站模板 兼容
  • YOLO入门教程(番外):机器视觉一文通
  • 网站做cdn服务流量ps做网站字号大小
  • Cooperative ISAC-empowered Low-Altitude Economy
  • YOLO入门教程(番外):卷积神经网络—填充与步幅
  • 中国建设银行校园招聘网站注册个公司要多少钱费用
  • 商务网站建设的主流程网站作为医院形象建设
  • 旅游网站推广方案华为外包做的网站
  • 国际民用航空组织ICAO
  • 1.6 傅里叶变换7-拉氏变换、Z变换