Linux 系统中 root 用户拥有 Linux 中全部控制权力。Linux 系统中 root 是拥有最高权力的用户,可以在系统中实施任意的行为。
如果其他用户想去实施一些行为,不能为所有人都提供 root 访问权限。因为如果他或她做了一些错误的操作,没有办法去纠正它。
为了解决这个问题,有什么方案吗?
我们可以把 sudo 权限发放给相应的用户来克服这种情况。
sudo
命令提供了一种机制,它可以在不用分享 root 用户的密码的前提下,为信任的用户提供系统的管理权限。
他们可以执行大部分的管理操作,但又不像 root 一样有全部的权限。
什么是 sudo?
sudo
是一个程序,普通用户可以使用它以超级用户或其他用户的身份执行命令,是由安全策略指定的。
sudo 用户的访问权限是由 /etc/sudoers
文件控制的。
sudo 用户有什么优点?
在 Linux 系统中,如果你不熟悉一个命令,sudo
是运行它的一个安全方式。
- Linux 系统在
/var/log/secure
和/var/log/auth.log
文件中保留日志,并且你可以验证 sudo 用户实施了哪些行为操作。 - 每一次它都为当前的操作提示输入密码。所以,你将会有时间去验证这个操作是不是你想要执行的。如果你发觉它是不正确的行为,你可以安全地退出而且没有执行此操作。
基于 RHEL 的系统(如 Redhat (RHEL)、 CentOS 和 Oracle Enterprise Linux (OEL))和基于 Debian 的系统(如 Debian、Ubuntu 和 LinuxMint)在这点是不一样的。
我们将会教你如何在本文中提及的两种发行版中执行该操作。
这里有三种方法可以应用于两个发行版本。
- 增加用户到相应的组。基于 RHEL 的系统,我们需要添加用户到
wheel
组。基于 Debain 的系统,我们添加用户到sudo
或admin
组。 - 手动添加用户到
/etc/group
文件中。 - 用
visudo
命令添加用户到/etc/sudoers
文件中。
如何在 RHEL/CentOS/OEL 系统中配置 sudo 访问权限?
在基于 RHEL 的系统中(如 Redhat (RHEL)、 CentOS 和 Oracle Enterprise Linux (OEL)),使用下面的三个方法就可以做到。
方法 1:在 Linux 中如何使用 wheel 组为普通用户授予超级用户访问权限?
wheel 是基于 RHEL 的系统中的一个特殊组,它提供额外的权限,可以授权用户像超级用户一样执行受到限制的命令。
注意,应该在 /etc/sudoers
文件中激活 wheel
组来获得该访问权限。
1 | # grep -i wheel /etc/sudoers |
假设我们已经创建了一个用户账号来执行这些操作。在此,我将会使用 daygeek
这个用户账号。
执行下面的命令,添加用户到 wheel
组。
1 | # usermod -aG wheel daygeek |
我们可以通过下面的命令来确定这一点。
1 | # getent group wheel |
我将要检测用户 daygeek
是否可以访问属于 root 用户的文件。
1 | $ tail -5 /var/log/secure |
当我试图以普通用户身份访问 /var/log/secure
文件时出现错误。 我将使用 sudo
访问同一个文件,让我们看看这个魔术。
1 | $ sudo tail -5 /var/log/secure |
方法 2:在 RHEL/CentOS/OEL 中如何使用 /etc/group 文件为普通用户授予超级用户访问权限?
我们可以通过编辑 /etc/group
文件来手动地添加用户到 wheel
组。
只需打开该文件,并在恰当的组后追加相应的用户就可完成这一点。
1 | $ grep -i wheel /etc/group |
在该例中,我将使用 user1
这个用户账号。
我将要通过在系统中重启 Apache httpd 服务来检查用户 user1
是不是拥有 sudo 访问权限。让我们看看这个魔术。
1 | $ sudo systemctl restart httpd |
方法 3:在 Linux 中如何使用 /etc/sudoers 文件为普通用户授予超级用户访问权限?
sudo 用户的访问权限是被 /etc/sudoers
文件控制的。因此,只需将用户添加到 sudoers
文件中 的 wheel
组下即可。
只需通过 visudo
命令将期望的用户追加到 /etc/sudoers
文件中。
1 | # grep -i user2 /etc/sudoers |
在该例中,我将使用 user2
这个用户账号。
我将要通过在系统中重启 MariaDB 服务来检查用户 user2
是不是拥有 sudo 访问权限。让我们看看这个魔术。
1 | $ sudo systemctl restart mariadb |
在 Debian/Ubuntu 系统中如何配置 sudo 访问权限?
在基于 Debian 的系统中(如 Debian、Ubuntu 和 LinuxMint),使用下面的三个方法就可以做到。
方法 1:在 Linux 中如何使用 sudo 或 admin 组为普通用户授予超级用户访问权限?
sudo
或 admin
是基于 Debian 的系统中的特殊组,它提供额外的权限,可以授权用户像超级用户一样执行受到限制的命令。
注意,应该在 /etc/sudoers
文件中激活 sudo
或 admin
组来获得该访问权限。
1 | # grep -i 'sudo\|admin' /etc/sudoers |
假设我们已经创建了一个用户账号来执行这些操作。在此,我将会使用 2gadmin
这个用户账号。
执行下面的命令,添加用户到 sudo
组。
1 | # usermod -aG sudo 2gadmin |
我们可以通过下面的命令来确定这一点。
1 | # getent group sudo |
我将要检测用户 2gadmin
是否可以访问属于 root 用户的文件。
1 | $ less /var/log/auth.log |
当我试图以普通用户身份访问 /var/log/auth.log
文件时出现错误。 我将要使用 sudo
访问同一个文件,让我们看看这个魔术。
1 | $ sudo tail -5 /var/log/auth.log |
或者,我们可以通过添加用户到 admin
组来执行相同的操作。
运行下面的命令,添加用户到 admin
组。
1 | # usermod -aG admin user1 |
我们可以通过下面的命令来确定这一点。
1 | # getent group admin |
让我们看看输出信息。
1 | $ sudo tail -2 /var/log/auth.log |
方法 2:在 Debian/Ubuntu 中如何使用 /etc/group 文件为普通用户授予超级用户访问权限?
我们可以通过编辑 /etc/group
文件来手动地添加用户到 sudo
组或 admin
组。
只需打开该文件,并在恰当的组后追加相应的用户就可完成这一点。
1 | $ grep -i sudo /etc/group |
在该例中,我将使用 user2
这个用户账号。
我将要通过在系统中重启 Apache httpd 服务来检查用户 user2
是不是拥有 sudo
访问权限。让我们看看这个魔术。
1 | $ sudo systemctl restart apache2 |
方法 3:在 Linux 中如何使用 /etc/sudoers 文件为普通用户授予超级用户访问权限?
sudo 用户的访问权限是被 /etc/sudoers
文件控制的。因此,只需将用户添加到 sudoers
文件中的 sudo
或 admin
组下即可。
只需通过 visudo
命令将期望的用户追加到 /etc/sudoers
文件中。
1 | # grep -i user3 /etc/sudoers |
在该例中,我将使用 user3
这个用户账号。
我将要通过在系统中重启 MariaDB 服务来检查用户 user3
是不是拥有 sudo
访问权限。让我们看看这个魔术。
1 | $ sudo systemctl restart mariadb |
via: https://www.2daygeek.com/how-to-configure-sudo-access-in-linux/
作者:Magesh Maruthamuthu 选题:lujun9972 译者:liujing97 校对:wxy