Linux sudo用法示例权威详解
名称
sudo - 在以其他用户身份执行命令时使用安全策略
概要
sudo [选项] [-u 用户名|#用户 ID] 命令
sudo -l[l] [-AknS] [-g 组名|#组 ID] [-U 用户名] [-g 组名|#组 ID] [用户名]…
描述
sudo 允许普通用户以其他用户的身份执行命令,通常是超级用户(root)。它提供了一种安全的方法来授权普通用户执行特权操作,而无需完全切换到超级用户。
选项
适用于 sudo 命令的主要选项有:
-a, --askpass
使用图形界面提示输入密码。这对于在 GNOME 和 KDE 环境中运行 sudo 时非常有用。
-A, --ask
强制 sudo 每次执行都提示用户输入密码,即使当前用户已经通过验证。
-g, --group=组名|#组 ID
将命令的权限限制为指定的组。可以使用组名或组 ID。如果同时指定了 -U 选项,则该组将被视为该用户的附加组。
-h, --help
显示帮助消息并退出。
-k, --reset-timestamp
重置验证时间戳。这将使下一次执行 sudo 命令时需要重新验证密码。
-l, --list
列出当前用户有权执行的命令。如果使用两个 -l,还会显示用户可以为其他用户执行的命令。
-n, --non-interactive
在没有提示输入密码的情况下运行 sudo。如果密码已缓存,则此选项将被忽略。
-S, --stdin
从标准输入读取密码而不是终端设备。这通常与 echo 命令结合使用。
-u 用户名|#用户 ID
以指定的用户身份执行命令。可以使用用户名或用户 ID。
-U 用户名
以指定的用户身份列出可用命令。只有具有特权的用户才能使用此选项。
多种主要用法及其代码示例
- 以 root 用户身份执行命令:
sudo command
- 以其他用户身份执行命令:
sudo -u username command
- 列出当前用户可以执行的命令:
sudo -l
- 以图形界面提示输入密码:
sudo -a command
- 重置验证时间戳,下次执行 sudo 命令需要重新验证密码:
sudo -k
其他类似接口
- su:切换到其他用户账户。
- chroot:在新的根目录中执行命令。
- setuid:设置程序的有效用户 ID。
详细区别
sudo 和 su 都允许用户以其他用户的身份执行命令,但它们的工作方式有所不同。sudo 是通过配置文件(/etc/sudoers)来控制用户的访问权限,并提供了更细粒度的权限控制。而 su 则需要知道目标用户的密码才能切换到该用户。
另外,sudo 还可以记录执行命令的用户信息,并提供审计功能,以便管理员跟踪特权操作。