su
需要知道目标用户的密码sudo
需要当前用户的密码(或不需要密码,取决于配置)sudo [选项] 命令
常用选项:
- -u 用户
:以指定用户身份执行命令
- -l
:列出当前用户可执行的命令
- -v
:刷新sudo认证时间戳
- -k
:清除认证时间戳
- -s
:启动一个shell
- -i
:模拟root登录环境
/etc/sudoers
visudo
命令(会检查语法)语法结构:
用户 主机=(目标用户) [NOPASSWD:]命令
示例:
alice ALL=(ALL) ALL
bob ALL=(ALL) NOPASSWD: /usr/bin/apt-get
用户/组:
alice
%wheel
User_Alias ADMINS = alice, bob
主机:
localhost
Host_Alias SERVERS = server1, server2
命令:
/usr/bin/apt-get
Cmnd_Alias PKGMGMT = /usr/bin/apt-get, /usr/bin/dpkg
运行身份:
(root)
:以root身份运行(ALL)
:可以以任何用户身份运行密码缓存:
timestamp_timeout
修改日志记录:
/var/log/auth.log
或/var/log/secure
syslog
配置环境变量处理:
env_reset
:重置环境变量env_keep
:保留指定环境变量限制sudo权限:
ALL=(ALL) ALL
权限NOPASSWD
要谨慎权限被拒绝:
/etc/sudoers
配置命令找不到:
secure_path
设置环境变量问题:
-E
保留环境变量env_keep
查看sudo权限:
sudo -l
允许用户管理服务:
%admin ALL=(ALL) /usr/bin/systemctl restart *, /usr/bin/systemctl status *
允许用户管理特定目录:
alice ALL=(ALL) /bin/chown alice:alice /var/www/*
允许无密码执行特定命令:
bob ALL=(ALL) NOPASSWD: /usr/bin/apt-get update
sudo是一个强大的工具,正确配置可以大大提高系统管理效率同时保持安全性。