Linux常用命令学习笔记:sudo

基本概念

  • sudo:Super User DO 的缩写,允许授权用户以其他用户(通常是 root 用户)的身份执行命令
  • 使用权限由 /etc/sudoers文件控制

语法和常用参数

sudo [选项] 命令

主要参数:

  • -i:模拟初始登录,加载目标用户的环境变量
  • -s:运行shell
  • -u user:以指定用户身份运行命令
  • -l:列出当前用户可执行的sudo命令
  • -v:验证用户凭据,延长sudo会话
  • -k:撤销sudo凭据缓存

实用实例

基本使用

sudo apt update                    # 更新软件包列表
sudo systemctl restart nginx      # 重启nginx服务
sudo mkdir /opt/myapp            # 在系统目录创建文件夹

切换用户环境

sudo -i          # 切换到root的登录shell(加载环境变量)
sudo -s          # 切换到root的非登录shell
sudo su -        # 另一种切换方式

以其他用户身份执行

sudo -u username command
sudo -u postgres psql    # 以postgres用户运行psql

系统文件编辑

sudo nano /etc/hosts
sudo vim /etc/nginx/nginx.conf

配置文件管理

  • 主配置文件:/etc/sudoers
  • 必须使用visudo命令编辑(避免语法错误):
sudo visudo

配置示例

# 允许用户免密码执行所有命令
username ALL=(ALL) NOPASSWD: ALL

# 允许用户组执行特定命令
%wheel ALL=(ALL) /bin/systemctl, /usr/bin/apt

常见问题解决

用户不在sudoers文件

# Ubuntu/Debian
usermod -aG sudo username

# CentOS/RHEL  
usermod -aG wheel username

调整缓存时间

/etc/sudoers中修改:

Defaults timestamp_timeout=30    # 单位:分钟

su vs sudo 对比

特性susudo
需要密码目标用户密码当前用户密码
会话持续直到手动exit单次命令或短时间缓存
配置复杂度简单需要配置sudoers
安全性需要知道root密码更细粒度的权限控制
审计有限更详细的日志

总结建议

  • 在现代系统管理中,sudo 比 su 更受推荐
  • 提供更好的安全性和审计能力
  • 支持细粒度的权限控制
  • 避免直接共享root密码

这份笔记涵盖了sudo命令的核心知识点,适合日常使用和故障排查参考。


作 者:南烛
链 接:https://www.itnotes.top/archives/635
来 源:IT笔记
文章版权归作者所有,转载请注明出处!


上一篇
下一篇