Linux_sudo命令的使用与机制

1、sudo命令的作用

sudo(全称 superuser do)是 Linux/Unix 系统中权限管理的核心工具。
允许普通用户在授权下以其他用户(默认是 root)的权限执行命令,而无需直接登录账户。


2、sudo命令的典型使用场景

sudo 覆盖了系统管理的几乎所有高权限操作场景,以下是常见示例:

2.1、安装/卸载软件

sudo apt-get install nginx  # Ubuntu/Debian系安装 
sudo yum remove httpd  		# CentOS/RHEL系卸载 

2.2、管理系统服务

sudo systemctl start nginx  	# 启动Nginx服务  
sudo systemctl restart mysql  	# 重启MySQL服务  

2.3、修改系统配置文件

sudo nano /etc/nginx/nginx.conf  # 编辑Nginx主配置文件 

2.4、 管理用户与权限

sudo adduser newuser  # 添加新用户 
sudo passwd olduser  # 修改指定用户密码 

3、sudo命令的选项

sudo 除了无选项以root用户执行指令的操作,还支持许多其他的选项,可灵活控制执行环境、目标用户等。

以下是常用选项的介绍:

3.1、 -u <用户>:指定目标用户

通过 -u 选项可指定其他目标用户。

示例

# 以 `www-data` 用户身份查看 Nginx 日志(需 `sudoers` 授权)  
sudo -u www-data cat /var/log/nginx/access.log  

3.2、-i--login):模拟目标用户的登录环境

-i--login):模拟目标用户的登录环境,加载其完整的登录配置文件(如 ~/.bash_profile、~/.profile),并切换到目标用户的家目录。

示例

# 以 root 身份模拟登录环境(需输入当前用户密码)  
sudo -i

效果等同于 su - 目标用户 后执行命令,关于su命令看这篇文章:Linux_su命令

3.3、-s--shell):启动目标用户的 shell

-s--shell):启动目标用户的非登录交互式 shell,仅加载非登录配置文件(如 ~/.bashrc),保持原用户的当前工作目录。

示例

# 以 root 身份启动 shell(需输入当前用户密码)  
sudo -s  

3.4、-l--list):查看当前用户的 sudo 权限

-l 可列出当前用户被允许执行的 sudo 命令(需输入密码验证身份)。

示例

user@host:~$ sudo -l  
Matching Defaults entries for user on host:  env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin  User user may run the following commands on host:  (ALL : ALL) ALL  # 允许以所有用户执行所有命令  

3.5、-k--reset-timestamp):重置密码缓存

sudo 默认会缓存用户密码(通常 15 分钟),期间无需重复输入。-k 强制清除缓存,下次使用 sudo 需重新输入密码。

示例

sudo -k  		# 清除当前用户的 sudo 密码缓存  

4、sudo 的核心机制

sudo 的核心是 基于用户/组的权限授权,所有权限规则存储在 /etc/sudoers 文件中。

其工作流程如下:

  1. 用户执行 sudo 命令
  2. 系统检查 /etc/sudoers,确认当前用户是否有权限以目标用户(默认 root)执行该命令;
  3. 若有权限,用户需输入自己的密码(非目标用户密码)验证身份;
  4. 验证通过后,命令以目标用户权限执行,操作记录被写入系统日志(如 /var/log/auth.log)。

4.1、sudo 的核心配置文件:/etc/sudoers

sudoers必须通过 visudo 命令编辑,可以自动检查语法错误,避免文件损坏导致无法使用 sudo.

sudoers中最核心的部分是权限规则,格式为:

用户/用户组  主机=(目标用户:目标组)  允许执行的命令  

示例1

root    ALL=(ALL:ALL) ALL

表示root用户可以在任何主机上以任何用户和任何组的身份执行任何命令。

示例2

%sudo ALL=(ALL:ALL) ALL

%符号:表示 “用户组”(Group),而非单个用户。
这条配置表示“sudo组的成员“可以在 任何主机上 以任何用户和任何组的身份执行任何命令。

sudo组 是Ubuntu等系统的默认特权组,普通用户加入此组后即可通过 sudo 执行高权限命令。

4.2、sudo 的其他配置文件:/etc/sudoers.d/

下图截取自/etc/sudoers,可以看到,不建议直接修改该文件,可以将自定义配置的内容放在/etc/sudoers.d/目录下,并且使用了@includedir去包含了这个目录。
在这里插入图片描述

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

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

相关文章

Scrapy框架之 中间件的使用

爬虫中间件 特点&#xff1a;主要处理蜘蛛&#xff08;Spider&#xff09;和下载器&#xff08;Downloader&#xff09;之间的请求和响应。可以对蜘蛛生成的请求进行拦截、修改或过滤&#xff0c;也可以对下载器返回给蜘蛛的响应进行处理。适用场景&#xff1a; 请求过滤与修改…

供应链算法整理(一)--- 销量预估

在供应链管理领域有较多的预估场景&#xff0c;例如送达时长预估、销量预估、用电量预估。特别的在智能供应链领域&#xff0c;销量和库存的管理的智能化也依赖销量预估&#xff0c;因此在本文我们整理了 销量预估的算法详细的技术方案。 时间序列预测在最近两年内发生了巨大的…

第4篇:服务层抽象与复用逻辑

在业务系统复杂度指数级增长的今天&#xff0c;服务层&#xff08;Service Layer&#xff09;的合理设计直接影响着系统的可维护性和扩展性。本文将深入剖析 Egg.js 框架中的服务层架构设计&#xff0c;从基础实现到高级封装&#xff0c;全方位讲解企业级应用的开发实践。 一、…

Java学习手册:Spring 数据访问

一、Spring JDBC JdbcTemplate &#xff1a;Spring JDBC 提供了 JdbcTemplate 类&#xff0c;它简化了数据库操作&#xff0c;提供了丰富的 API 来执行数据库访问任务。JdbcTemplate 可以自动处理数据库连接的获取、释放&#xff0c;SQL 语句的执行&#xff0c;结果集的处理等…

递归、搜索和回溯算法《递归》

在之前的优选算法当中我们已经学习了一些基本的算法&#xff0c;那么接下来我们就要来学习算法当中的一大重要章节——递归、搜索和回溯算法&#xff0c;其实也就是大家常常听到的dfs、bfs&#xff1b;其实本质就是递归&#xff0c;在学习搜索、回溯等算法的过程当中我们会先来…

Java进阶--设计模式

设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。设计模式使代码编制真正工程化&#xff0c;设计模式是软件工程的基石&#xff0c;如同大厦的一块块砖石一样&#xff0…

如何禁止AutoCAD这类软件联网

推荐二、三方法&#xff0c;对其他软件影响最小 一、修改Hosts文件 Hosts文件是一个存储域名与IP地址映射关系的文本文件&#xff0c;通过修改Hosts文件可以将AutoCAD的域名指向本地回环地址&#xff08;127.0.0.1&#xff09;&#xff0c;从而实现禁止联网的目的。具体步骤如…

深度学习框架搭建(Vscode/Anaconda/CUDA/Pytroch)

目录 ​​​​​​一 Vscode安装 二、Anaconda安装 三、更新显卡驱动 四、安装CUDA 五、安装Pytorch 六、Vscode配置 七、出现的问题汇总 ​​​​​​一 Vscode安装 在 Windows 上安装 访问 VS Code 官网 https://code.visualstudio.com/&#xff0c;点击 "Downl…

结构模式识别理论与方法

我们在前文《模式识别的基本概念与理论体系》中就已经提及“模式分类”。 具体内容看我的CSDN文章&#xff1a;模式识别的基本概念与理论体系-CSDN博客 模式的识别方法主要有统计模式识别方法和结构模式识别方法两大类。统计模式识别方法提出得较早&#xff0c;理论也较成熟…

12.多边形的三角剖分 (Triangulation) : Fisk‘s proof

目录 1.Fisks proof Trangulation Coloring Domination Pigeon-Hold Principle Generation 2.Orthogonal Polygons (正交多边形) Necessity of floor(n4) Sufficiency by convex Quadrilateralization Generalization 1.Fisks proof Trangulation 引入内对角线&…

面经-计算机网络——OSI七层模型与TCP/IP四层模型的对比详解

OSI七层模型与TCP/IP四层模型的对比详解 一、图示解析&#xff1a;分层封装结构 你提供的图清晰展示了网络通信中从应用层到物理层的封装过程&#xff0c;每一层都会对上层的数据加上自己的头部信息&#xff08;Header&#xff09;&#xff1a; 应用层&#xff1a; 应用…

React Native本地存储方案总结

1. AsyncStorage&#xff08;键值对存储&#xff09; 适用场景&#xff1a;简单键值对存储&#xff08;如用户配置、Token、缓存数据&#xff09;。特点&#xff1a;异步、轻量、API 简单&#xff0c;但性能一般&#xff0c;不推荐存储大量数据。安装&#xff1a;npm install …

Arduino程序函数详解与实际案例

一、Arduino程序的核心架构与函数解析 Arduino程序的核心由两个函数构成:setup() 和 loop()。这两个函数是所有Arduino代码的骨架,它们的合理使用决定了程序的结构和功能。 1.1 setup() 函数:初始化阶段 setup() 函数在程序启动时仅执行一次,用于完成初始化配置,例如设置…

【Unity】使用Socket建立客户端和服务端并进行通信的例子

Socket服务端: using System; using System.Collections.Generic; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading; public class SocketServer { public static Socket listenSocket;//监听Socket public static List<Socket>…

Qt connect第五个参数

在 Qt 中&#xff0c;QObject::connect 函数的第五个参数用于指定 连接类型&#xff08;Qt::ConnectionType&#xff09;&#xff0c;它决定了信号与槽之间的通信方式。以下是各枚举值的详解及使用场景&#xff1a; 1. Qt::AutoConnection&#xff08;默认值&#xff09; 行为…

【2025域适应科研日报】

本笔记主要为了记录自己的科研日报&#xff0c;前段时间刚开始想写的初衷也是为了自己的思考不跑偏&#xff0c;但是有几天又没有坚持下来&#xff0c;看到一位学长的文章&#xff0c;发现这种形式还是很有必要的&#xff0c;所以自己也打算坚持记录下来&#xff0c;由于还正在…

XrayR启动失败

公司要用服务器之间进行数据加密&#xff0c;这里用的XrayR 我使用的Centos 7。 我这里使用一键脚本安装后&#xff0c;/etc/XrayR目录下没有配置文件。 解决方案 XrayR安装时&#xff0c;系统没有unzip工具&#xff0c;也是会安装失败的&#xff0c;因为Centos7已经停止维…

鸿蒙文件上传-从前端到后端详解,对比jq请求和鸿蒙arkts请求区别,对比new FormData()和鸿蒙arktsrequest.uploadFile

需要权限&#xff1a;ohos.permission.INTERNET 1.nodejs自定义书写上传后端接口 传输过来的数据放在files?.image下 router.post(/upload,(req, res) > {var form new multiparty.Form();form.uploadDirpublic/images/uploads; //上传图片保存的地址(目录必须存在)fo…

编写教育网站后端页面笔记

callbacktitle.html 对应表: 对应的功能: 控制器层数据: 页面没有写内容 chapter.html 对应表: questionbank ,intofloortime,questionBank,title,didtitles,option,answer,analyse 对应的功能:问题反馈页面 控制器层数据(控制器类): ChapterQuestionbankTitle c…

日常开发小Tips:后端返回带颜色的字段给前端

一般来说&#xff0c;展示给用户的字体格式&#xff0c;都是由前端控制&#xff0c;展现给用户&#xff1b; 但是当要表示某些字段的数据为异常数据&#xff0c;或者将一些关键信息以不同颜色的形式呈现给用户时&#xff0c;而前端又不好判断&#xff0c;那么就可以由后端来控…