linux - 使用sudo 和 su 切换用户身份

发布时间 2023-12-06 23:26:41作者: 箫笛

1. su

  • 切换到root身份
    su -
  • 切换到其他普通用户
    su -l gogs
  • 切换到其他普通用户并执行命令
    su -l gogs -c pwd

2. sudo

  • 切换到root身份
    sudo -i

  • 切换到root身份
    sudo su -

  • 重新设定root的密码
    sudo passwd root

  • 以提升的权限执行命令
    sudo less /etc/sudoers

  • 以普通用户的身份执行命令
    sudo -u gogs whoami

  • 访问root shell 执行内置命令
    sudo bash

3. 允许sudo权限添加

  • 编辑 /etc/sudoers
    sudo visudo

  • 增加如下用户权限
    gogs ALL=(ALL) ALL

- gogs 表示用户名
- 第一个 ALL 指示允许从任何终端、机器访问 sudo
- 第二个 (ALL) 指示 sudo 命令被允许以任何用户身份执行
- 第三个 ALL 表示所有命令都可以作为 root 执行
  • 无密码运行 sudo 命令
    gogs ALL=(ALL) NOPASSWD: ALL

  • 限制用户执行某些命令
    gogs ALL=(ALL) NOPASSWD: /bin/echo /bin/ls

4. su 与 sudo的区别

  • sudo 命令需要输入当前用户的密码,su 命令需要输入切换的用户的密码。
  • sudo 命令只允许使用提升的权限运行单个命令,而 su 命令会启动一个新的 shell,同时允许使用 root 权限运行尽可能多的命令,直到明确退出登录。
  • sudo 命令是以目标用户(默认情况下是 root 用户)的身份执行命令,但是它们会使用 sudoer 所配置的用户名来记录是谁执行命令。而 su 命令是无法直接跟踪记录用户切换到 root 用户之后执行了什么操作。
  • sudo 命令比 su 命令灵活很多,因为你甚至可以限制 sudo 用户可以访问哪些命令。换句话说,用户通过 sudo 命令只能访问他们工作需要的命令。而 su 命令让用户有权限做任何事情。