一、Sudo基本介绍
sudo是Linux 中用于允许特定用户以超级用户或其他特权用户的身份执行特定的命令或任务。sudo 提供了一种安全的方法,使用户能够临时获取额外的权限,而不需要以完全超级用户的身份登录系统。sudo也可以用了设置黑名单命令清单,控制用户不允许执行一些命令。
默认情况下/etc/sudoers 是不能被任何人直接编辑的,因为它的权限是 440,虽然也可以对其赋予写权限后再编辑,但推荐使用 visudo 命令编辑该文件。
sudo的执行过程:
1、sudo 会读取和解析 /etc/sudoers 文件,查找调用命令的用户及其权限
2、然后提示调用该命令的用户输入密码(通常是用户密码,但也可能是目标用户的密码,或者也可以通过 NOPASSWD 标志来跳过密码验证)
3、 之后,sudo 创建一个子进程,调用 setuid() 来切换到目标用户
4、接着,它会在上述子进程中执行参数给定的shell 或命令
二、sudo基本用法
1、授权配置格式
USER/GROUP HOST=(USER[:GROUP]) [NOPASSWD:] COMMANDS
• USER/GROUP 表示需要被授权的用户或者组,如果是组则,需要以 % 开头
• HOST 表示允许从哪些主机登录的用户运行 sudo 命令,ALL 表示允许从任何终端、机器访问
• (USER[:GROUP]) 表示使用 sudo 可切换的用户或者组,组可以不指定,ALL 表示可以切换到系统的所有用户
• NOPASSWD 如果指定,则该用户或组使用 sudo 时不必输入密码
• COMMANDS 表示运行指定的命令,ALL 表示允许执行所有命令
配置示例:
# 允许 sudo 组执行所有命令
%sudo ALL=(ALL:ALL) ALL
# 允许用户执行所有命令,且无需输入密码</