sudo 命令生成器
生成用于以其他用户身份运行命令的 sudo 命令
开始使用 sudo
## 什么是 sudo?
`sudo` 能够以其他用户(默认为 root)的安全权限来执行命令。它的操作依据是 sudoers 策略,通常会要求输入您自己的密码,而非目标用户的密码。
## 使用方法
1. **选择用户/组**(可选):使用 `-u` / `-g` 以非 root 用户身份执行命令。 2. **选择标志**:可添加 `-n`(非交互模式)、`-b`(后台运行)、`-E`(保留环境变量)等标志。 3. **输入命令**:输入要执行的命令(即位置参数)。 4. **复制并运行**:将生成的命令复制到您的终端中执行。
常用选项
### `-u` 以用户身份运行 以指定用户而非 root 身份执行命令,例如 `-u postgres`。
### `-g` 以组身份运行 以指定组作为主组来运行命令。
### `-n` 非交互模式 不会提示输入密码;若需要密码则会立即失败。适用于脚本和 cron 作业。
### `-b` 后台运行 在后台运行命令,不会占用终端。
### `-S` 从标准输入读取密码 从标准输入而非终端读取密码——适用于管道操作。
### `-H` 设置 HOME 目录 将 `$HOME` 变量设置为目标用户的家目录。
### `-E` 保留环境变量 保留调用方的环境变量。仅当 sudoers 策略允许时才会生效。
### `-s` 运行 shell 以目标用户身份运行 shell(默认为 root)。
### `-e` 编辑文件 使用安全的编辑器以目标用户身份编辑一个或多个文件。
### 命令参数 该位置参数即为通过 sudo 执行的命令(包括其选项)。
▶如何以非 root 用户的身份运行命令?
使用 \`-u\`:\`sudo -u postgres psql -l\` 以 postgres 用户身份运行 psql。
▶如何在脚本中以非交互方式运行命令?
请使用 \`-n\`,这样在需要密码时就不会出现提示或失败:\`sudo -n systemctl restart nginx\`。为无人值守任务在 sudoers 中配置 NOPASSWD。
▶在使用 sudo 时,如何保留我的环境变量?
添加 \`-E\`:\`sudo -E env\`。不过,sudoers 策略仍可能限制可保留的变量范围。
▶如何在后台运行长命令?
使用 \`-b\`:\`sudo -b yum update\` 会分离更新过程,从而使你的终端保持空闲状态。
如果这个工具对你有帮助的话,请考虑请我喝杯咖啡。
请给我买杯咖啡吧。