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 命令让用户有权限做任何事情。