1. 什么是sudo?
sudo
(superuser do的缩写)是一个允许授权用户以别的用户身份(通常是root)运行程序的程序。它最初由Bob Coggeshall和Cliff Spencer在1980年代开发,旨在提供一种比传统的su(切换用户)更安全、更灵活的权限管理方式。
2. 为什么使用 sudo而不是直接使用root?
直接使用root
账户存在诸多风险:
-
安全性:
root
账户缺乏保护,一旦泄露,攻击者将拥有系统的完全控制权。 -
审计和日志:通过
root
执行的操作难以追踪来源,不利于审计和问题排查。 -
误操作风险:长期使用
root
账户容易导致误操作,可能对系统造成不可逆转的损害。
sudo
通过以下方式缓解上述问题:
-
最小权限原则:仅授予必要的权限,减少误操作和潜在的安全风险。
-
日志记录:所有使用sudo执行的命令都会被记录,便于审计和追踪。
-
细粒度控制:可以针对不同用户或用户组,设置不同的权限规则。
3. 基本用法
3.1 基本语法
sudo [选项] 命令
常用选项:
-
-u 用户
:以指定用户的身份运行命令,默认为root。 -
-s
:以shell形式运行命令。 -
-i
:模拟完整的登录环境。 -
-k
:无视和清除之前的认证缓存。
3.2 使用示例
以root身份执行命令
sudo apt update
sudo yum install nginx
以其他用户身份执行命令
sudo -u www-data ls /var/www
以shell形式切换到root
sudo -s
以登录shell形式切换到指定用户
sudo -i -u username