Sudo命令的使用技巧

Sudo 授权需谨慎,否则亲人两行泪!

sudo 表示 “superuser do”,它允许已验证的用户以其他用户的身份来运行命令。其他用户可以是普通用户或者超级用户。然而,大部分时候我们用它来提权运行命令,以替代直接使用 root 用户的操作。sudo 命令与安全策略配合使用,安全策略可以通过文件 /etc/sudoers 来配置。其安全策略具有高度可拓展性,支持插件扩展。默认情况下 /etc/sudoers 是不能被任何人直接编辑的,因为它的权限是 440,虽然也可以对其赋予写权限后再编辑,但推荐使用 visudo 命令编辑该文件。

Sudo命令的使用技巧

1. 工作模式理解

简述其使用工作流程和配置文件配置!

  • [1] 理解 sudo 命令的工作流程
    • sudo 会读取和解析 /etc/sudoers 文件,查找调用命令的用户及其权限。
    • 然后提示调用该命令的用户输入密码,或者也可以通过 NOPASSWD 标志来跳过密码验证。
    • 之后,sudo 创建一个子进程,调用 setuid() 来切换到目标用户。
    • 最好,它会在上述子进程中执行参数给定的 shell 或命令。
  • [2] 理解 sudo 命令授权配置
    • USER/GROUP HOST=(USER[:GROUP]) [NOPASSWD:] COMMANDS
    • USER/GROUP: 表示需要被授权的用户或者组;如果是组则需要以 % 开头
    • HOST: 表示允许从哪些主机登录的用户运行 sudo 命令;ALL 表示允许从任何终端、机器访问
    • (USER[:GROUP]): 表示使用 sudo 可切换的用户或者组,组可以不指定;ALL 表示可以切换到系统的所有用户
    • NOPASSWD: 如果指定,则该用户或组使用 sudo 时不必输入密码
    • COMMANDS: 表示运行指定的命令;ALL 表示允许执行所有命令