You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

74 lines
4.3 KiB

5 years ago
# **sudo**
7 years ago
6 years ago
## 说明
7 years ago
5 years ago
**sudo命令**用来以其他身份来执行命令预设身份为root。在`/etc/sudoers`中设置可执行sudo指令的用户。若其未经授权的用户企图
使用sudo则会发出警告的邮件给管理员。用户使用sudo时必须先输入密码之后有5分钟的有效期限超过期限则必须重新输入密码
## 选项
```markdown
sudo - 以其他用户身份执行一条命令
sudo -h | -K | -k | -V
sudo -v [-AknS] [-g group] [-h host] [-p prompt] [-u user]
sudo -l [-AknS] [-g group] [-h host] [-p prompt] [-U user] [-u user] [command]
sudo [-AbEHknPS] [-r role] [-t type] [-C num] [-g group] [-h host] [-p prompt] [-T timeout] [-u user] [VAR=value] [-i|-s] [<command>]
sudo -e [-AknS] [-r role] [-t type] [-C num] [-g group] [-h host] [-p prompt] [-T timeout] [-u user] file ...
选项:
-A, --askpass 使用助手程序进行密码提示
-b, --background 在后台运行命令
-C, --close-from=num 关闭所有 >= num 的文件描述符
-E, --preserve-env 在执行命令时保留用户环境
--preserve-env=list 保留特定的环境变量
-e, --edit 编辑文件而非执行命令
-g, --group=group 以指定的用户组或 ID 执行命令
-H, --set-home 将 HOME 变量设为目标用户的主目录。
-h, --help 显示帮助消息并退出
-h, --host=host 在主机上运行命令(如果插件支持)
-i, --login 以目标用户身份运行一个登录 shell可同时指定一条命令
-K, --remove-timestamp 完全移除时间戳文件
-k, --reset-timestamp 无效的时间戳文件
-l, --list 列出用户权限或检查某个特定命令;对于长格式,使用两次
-n, --non-interactive 非交互模式,不提示
-P, --preserve-groups 保留组向量,而非设置为目标的组向量
-p, --prompt=prompt 使用指定的密码提示
-r, --role=role 以指定的角色创建 SELinux 安全环境
-S, --stdin 从标准输入读取密码
-s, --shell 以目标用户运行 shell可同时指定一条命令
-t, --type=type 以指定的类型创建 SELinux 安全环境
-T, --command-timeout=timeout 在达到指定时间限制后终止命令
-U, --other-user=user 在列表模式中显示用户的权限
-u, --user=user 以指定用户或 ID 运行命令(或编辑文件)
-V, --version 显示版本信息并退出
-v, --validate 更新用户的时间戳而不执行命令
-- 停止处理命令行参数
```
## 实例
```bash
: << comment
配置sudo必须通过编辑`/etc/sudoers`文件而且只有超级用户才可修改它还必须使用visudo编辑。之所以使用visudo有两个原因
是能够防止两个用户同时修改二是它也能进行有限的语法检查。所以即使只有你一个超级用户你也最好用visudo来检查一下语法
visudo默认的是在vi里打开配置文件用vi来修改文件。我们可以在编译时修改这个默认项。visudo不会擅自保存带有语法错误的配置文
件,它会提示你出现的问题,并询问该如何处理
此时有三种选择键入“e”重新编辑键入“x”不保存退出键入“Q”退出并保存。选择Q那么sudo将不会再运行直到错误被纠正
comment
# 日志与安全,sudo不仅可以记录日志还能在有必要时向系统管理员报告。但sudo的日志功能不是自动的必须由管理员开启
7 years ago
touch /var/log/sudo
5 years ago
# 编辑/etc/syslog.conf,在syslog.conf最后面添加如下一行内容必须用tab分割开并保存
7 years ago
local2.debug /var/log/sudo
5 years ago
# sudo记录日志并不是很完善,重定向没有被记录,但也有个好处,下面的手段不会得逞:
sudo ls /root > /etc/shadow # 提示bash: /etc/shadow: 权限不够
7 years ago
5 years ago
# sudo 有自己的方式来保护安全。以root的身份执行`sudo-V`查看一下sudo的设置。因为考虑到安全问题一部分环境变量并没有传
# 递给sudo后面的命令或者被检查后再传递的比如PATHHOMESHELL等。当然你也可以通过sudoers来配置这些环境变量
7 years ago
```