当前位置: 首页 > 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去包含了这个目录。
在这里插入图片描述

相关文章:

  • 力扣刷题 -- 206.反转链表
  • 第Y3周:yolov5s.yaml文件解读
  • TCP三次握手和四次挥手(简要版)
  • 多模态大模型轻量化探索-视觉大模型SAM(Segment Anything Model)
  • Linux 下使用tcpdump进行网络分析原
  • SpringTask
  • 自动化测试项目2 --- 比特纵横 [软件测试实战 Java 篇]
  • Baklib知识中台驱动企业服务智能升级
  • 深入理解C++构造函数:从入门到实践
  • win10系统安卓开发环境搭建
  • Spring 分批处理 + 冷热数据分离:历史订单高效迁移与数据清理实战
  • 数字智慧方案6206丨智慧园区大数据整体解决方案(45页PPT)(文末有下载方式)
  • 数字智慧方案5846丨智慧广场整体解决方案(91页PPT)(文末有下载方式)
  • JavaScript基础-逻辑运算符
  • 【网络层】之IP协议
  • 源码安装SRS4
  • UE运行游戏时自动播放关卡序列
  • 纯前端专业PDF在线浏览器查看器工具
  • 【Shell编程】条件表达式中[]和[[]]的区别
  • 计算方法实验三 解线性方程组的直接方法
  • 五一假期前三日多景区客流刷新纪录,演艺、古镇、山水都很火
  • 单阶段遭遇零封偶像奥沙利文,赵心童要让丁俊晖预言成真
  • 五一首日出沪高峰,G1503高东收费站上午车速约30公里/小时
  • 迎接八方来客:全国多地“五一”假期党政机关大院停车场免费开放
  • 白玉兰奖征片综述丨国产剧集创作的此消彼长
  • 智能终端出海服务创新联合体成立