su 需要知道目标用户的密码sudo 需要当前用户的密码(或不需要密码,取决于配置)sudo [选项] 命令
常用选项:
- -u 用户:以指定用户身份执行命令
- -l:列出当前用户可执行的命令
- -v:刷新sudo认证时间戳
- -k:清除认证时间戳
- -s:启动一个shell
- -i:模拟root登录环境
/etc/sudoersvisudo命令(会检查语法)语法结构:
用户 主机=(目标用户) [NOPASSWD:]命令
示例:
alice ALL=(ALL) ALL
bob ALL=(ALL) NOPASSWD: /usr/bin/apt-get
用户/组:
alice%wheelUser_Alias ADMINS = alice, bob主机:
localhostHost_Alias SERVERS = server1, server2命令:
/usr/bin/apt-getCmnd_Alias PKGMGMT = /usr/bin/apt-get, /usr/bin/dpkg运行身份:
(root):以root身份运行(ALL):可以以任何用户身份运行密码缓存:
timestamp_timeout修改日志记录:
/var/log/auth.log或/var/log/securesyslog配置环境变量处理:
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是一个强大的工具,正确配置可以大大提高系统管理效率同时保持安全性。