原创

Linux为普通用户sudo赋权ROOT权限

sudo(SuperUser DO)是Linux系统中允许普通用户以root或其他指定用户身份执行命令的工具。

sudo提供了一种机制,可以在不共享root密码的情况下,为信任的用户提供管理权限,从而增强系统安全性。

下面记录一下在腾讯云Centos7系统上sudo权限配置过程。

一、配置命令

sudo的配置文件位于/etc/sudoers,可以直接使用vi命令编辑,也可以使用visudo命令,该命令等价vi /etc/sudoers。

因为使用visudo命令会自动检查语法错误,所以一般都使用该命令配置。

二、配置语法

过滤一下注释行和空行,看一下默认配置选项:

grep -vE '^#|^$' /etc/sudoers

最后三行就是系统的默认权限配置。

配置文件采用用户/组 主机=(目标用户) 授权命令的格式,各字段含义如下:

  • 用户/组:指定授权对象,可为具体用户名(如root)、用户组(如%wheel)或用户别名。

  • 主机:限制用户从哪些主机执行sudo,ALL表示所有主机。

  • 目标用户:用户可切换的身份,ALL表示任意用户,默认通常为root。

  • 授权命令:用户可执行的命令路径,需使用绝对路径(如/usr/bin/mount),ALL表示所有命令。

三、配置方法

1.直接将用户加入到wheel组

上面看到默认配置可以wheel组是具有全部root权限的,我们可以直接将用户加入到该组来获得权限,比如将测试用户testuser加入到wheel组:

usermod -G wheel testuser

然后切换到testuser用户进行测试:

直接创建用户会提示没有权限,这时候就可以通过sudo命令提权:

查看用户已经新增成功了:

使用这种加入wheel组的方式比较适合为批量用户配置相同权限。

2.单独为用户配置sudo权限

因为wheel组比较特殊,出于安全原因,大部分情况下我们会注释掉用户组的root权限,而选择单独为用户配置:

编辑sudo配置文件:

visudo

新增用户的sudo权限配置:

testuser ALL=(ALL) ALL

输入:wq!保存后,使用下面命令验证一下配置文件语法是否正确:

visudo -c -f /etc/sudoers

切换到testuser用户进行测试:

测试成功创建用户。

四、配置实例

1.为testuser用户添加sudo权限:

testuser ALL=(ALL) ALL

2.为testuser用户添加sudo权限,同时不需要验证密码(不推荐):

testuser ALL=(ALL) NOPASSWD:ALL

3.为testuser用户添加sudo权限,限制其可以执行的命令(可以重启服务,同时可以touch在任何目录下创建文件):

testuser ALL=(ALL) /bin/systemctl,/usr/bin/touch

4.限制testuser用户只能从192.168.100.100主机执行sudo权限:

testuser 192.168.100.100=(ALL) ALL

5.授权testuser使用passwd命令,但是不能修改root用户密码(使用!符号显式禁止执行某命令):

testuser ALL=(ALL) /usr/bin/passwd,!/usr/bin/passwd root

扩展说明

1.可以通过which命令来获取某个命令的所在绝对路径。

2.使用sudo时,必须先输入普通用户的密码,默认5分钟之内不需要重复输入密码,超时后需要重新验证身份。如果需要修改超时时间,可以在/etc/sudoers文件中增加timestamp_timeout配置时长:

Defaults        timestamp_timeout=5
正文到此结束
本文目录