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

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.xdnf.cn/news/253405.html

相关文章:

  • 5.2刷题
  • libevent库详解:高性能异步IO的利器
  • python 常用web开发框架及使用示例
  • Python 在世界地图上加气泡图
  • 【多线程】六、基于阻塞队列的生产者消费者模型
  • react js 查看字体效果
  • MySQL 中的游标(Cursor)
  • NV162NV172美光固态颗粒NV175NV188
  • SpringBoot癌症患者交流平台设计开发
  • Flutter AppBar 详解
  • gRPC学习笔记记录以及整合gin开发
  • 【云备份】配置文件加载模块
  • 贝叶斯算法(Bayesian Algorithms)详解
  • DBeaver连接人大金仓数据库V9
  • Nginx搭建test服务器
  • 企业级分布式 MCP 方案
  • 文章六:《循环神经网络(RNN)与自然语言处理》
  • 第十六届蓝桥杯 2025 C/C++组 客流量上限
  • 2025五一数学建模竞赛A题完整分析论文(共45页)(含模型、可运行代码、数据)
  • 【服务器通信-socket】——int socket(int domain, int type, int protocol);
  • LangChain入门(五)AI记住聊天历史
  • Android基础控件用法介绍
  • 报文三次握手对么٩(๑^o^๑)۶
  • 开源ERP系统对比:Dolibarr、ERPNext与Odoo
  • 【每日八股】复习 Redis Day5:集群(上)
  • 云原生后端:构建高效、可扩展的现代后端架构
  • HBM的哪些事
  • 【凑修电脑的小记录】vscode打不开
  • React useCallback函数
  • 从爬虫到网络---<基石3> gfw防火墙是怎么保护我们的?