Linux和Unix系统sudo命令程序用法
|
admin
2025年6月29日 14:51
本文热度 48
|
sudo
(superuser do)是一个在Linux和Unix系统中广泛使用的命令行程序,它允许授权的用户以另一个用户的身份,通常是超级用户(root)来运行命令,sudo主要特性如下:
- 权限提升:
sudo
命令提升普通用户的权限,使其能够执行原本需要更高权限才能运行的命令 - 安全机制:通过
sudo
,系统管理员可以安全地委派任务给普通用户,而无需共享 root 密码 - 配置文件:通过
/etc/sudoers
控制谁可以通过 sudo
运行哪些命令,以及在哪些条件下可以运行 - 最小权限原则:
sudo
允许用户仅在需要时获得执行特定任务所需的权限 - 环境隔离:
sudo
可以在执行时隔离环境变量,避免用户的环境影响系统命令的执行 - 灵活性:
sudo
提供了极大的灵活性,管理员可以精细控制每个用户的权限
本例子演示使用centos7.9系统
首先查看下配置文件/etc/sudoers,使用visudo命令打开:
#不建议使用vim命令打开,因为会提示只读,还要赋权
#使用visudo编辑保存后会自动校验语法是否正确
visudo #直接输入这个命令即可打开/etc/sudpers文件

上图中也是系统提示的模版,指定用户和用户组可以执行的sudo命令,含义如下:参数 | 说明 |
root | 表示roo用户 |
%wheel | 表示wheel用户组,以%开头表示组 |
ALL | 表示从任何主机都可以执行,保持默认即可 |
(ALL) | 表示任何人都可以以root身份执行命令,此字段可省略 |
ALL | 所有命令,NOPASSWD表示无需输入密码 |
因此,图中第一行表示root用户可以在任何主机以任何人身份来执行所有的命令,第2行表示wheel组中的用户可以在任何主机以任何人身份来执行任何命令,第三行与第二行一样,只是无需输入密码1、下面定义用户gongguan可以执行的命令,如图:


上述命令表示用户gongguan可以在任何主机以任何身份执行useradd和userdel命令,执行未授权的cat /etc/passwd命令就会报错,执行,并提示输入gongguan用户密码,如图:

注:配置命令要使用绝对路径,主要是出于安全考虑,如果用户创建了一个相同名字的脚本,那么就很可能导致执行错误,实际执行的是创建的脚本而不是原始的命令如果执行命令的时候不需要输入密码,加上字段NOPASSWD即可,如图:

1、定义组可执行的命令,注意,组名前面有个%如图:2、创建tgroup组和三个用户,并将用户userone和usertwo加入到组中,如下:groupadd tgroup
useradd -m userone && usermod -a -G tgroup userone
useradd -m usertwo && usermod -a -G tgroup usertwo
useradd -m userthree

3、切换到userone和usertwo,执行cat命令,如图:


登录userthree后无法执行,因此此用户不在tgroup组中,如图:

通过别名定义命令
还可以通过Cmnd_Alias来定义别名,别名中填写命令,别名需要大写
1、下面创建一个别名COMM1,在其中定义命令,然后在ALL后指定即可,如图:

设置禁止用户执行某条命令
1、下图定义用户只能创建用户,但是不能删除用户,如图:

切换到gongguan用户,执行创建和删除命令,可以看到删除失败,如图:

修改sudo会话有效期
sudo 默认在输入一次密码后 5 分钟内不会再次要求密码。5 分钟后,你会再次被要求输入密码,这个有效期可以设置,操作如下:
打开文件/etc/sudoers,找到行:
在这行上面添加如下全局变量,对用户和组都适用:

Defaults timestamp_timeout=2
阅读原文:原文链接
该文章在 2025/7/1 23:17:35 编辑过