linux 系統(tǒng)中 root 用戶擁有 Linux 中全部控制權(quán)力。Linux 系統(tǒng)中 root 是擁有最高權(quán)力的用戶,可以在系統(tǒng)中實施任意的行為。
-- Magesh Maruthamuthu
Linux 系統(tǒng)中 root 用戶擁有 Linux 中全部控制權(quán)力。Linux 系統(tǒng)中 root 是擁有最高權(quán)力的用戶,可以在系統(tǒng)中實施任意的行為。
如果其他用戶想去實施一些行為,不能為所有人都提供 root 訪問權(quán)限。因為如果他或她做了一些錯誤的操作,沒有辦法去糾正它。
為了解決這個問題,有什么方案嗎?
我們可以把 sudo 權(quán)限發(fā)放給相應(yīng)的用戶來克服這種情況。
sudo 命令提供了一種機制,它可以在不用分享 root 用戶的密碼的前提下,為信任的用戶提供系統(tǒng)的管理權(quán)限。
他們可以執(zhí)行大部分的管理操作,但又不像 root 一樣有全部的權(quán)限。
什么是 sudo?
sudo 是一個程序,普通用戶可以使用它以超級用戶或其他用戶的身份執(zhí)行命令,是由安全策略指定的。
sudo 用戶的訪問權(quán)限是由 /etc/sudoers 文件控制的。
sudo 用戶有什么優(yōu)點?
在 Linux 系統(tǒng)中,如果你不熟悉一個命令,sudo 是運行它的一個安全方式。
- Linux 系統(tǒng)在 /var/log/secure 和 /var/log/auth.log 文件中保留日志,并且你可以驗證 sudo 用戶實施了哪些行為操作。
- 每一次它都為當(dāng)前的操作提示輸入密碼。所以,你將會有時間去驗證這個操作是不是你想要執(zhí)行的。如果你發(fā)覺它是不正確的行為,你可以安全地退出而且沒有執(zhí)行此操作。
基于 RHEL 的系統(tǒng)(如 Redhat (RHEL)、 centos 和 Oracle Enterprise Linux (OEL))和基于 Debian 的系統(tǒng)(如 Debian、Ubuntu 和 LinuxMint)在這點是不一樣的。
我們將會教你如何在本文中提及的兩種發(fā)行版中執(zhí)行該操作。
這里有三種方法可以應(yīng)用于兩個發(fā)行版本。
- 增加用戶到相應(yīng)的組。基于 RHEL 的系統(tǒng),我們需要添加用戶到 wheel 組。基于 Debain 的系統(tǒng),我們添加用戶到 sudo 或 admin 組。
- 手動添加用戶到 /etc/group 文件中。
- 用 visudo 命令添加用戶到 /etc/sudoers 文件中。
如何在 RHEL/CentOS/OEL 系統(tǒng)中配置 sudo 訪問權(quán)限?
在基于 RHEL 的系統(tǒng)中(如 Redhat (RHEL)、 CentOS 和 Oracle Enterprise Linux (OEL)),使用下面的三個方法就可以做到。
方法 1:在 Linux 中如何使用 wheel 組為普通用戶授予超級用戶訪問權(quán)限?
wheel 是基于 RHEL 的系統(tǒng)中的一個特殊組,它提供額外的權(quán)限,可以授權(quán)用戶像超級用戶一樣執(zhí)行受到限制的命令。
注意,應(yīng)該在 /etc/sudoers 文件中激活 wheel 組來獲得該訪問權(quán)限。
# grep -i wheel /etc/sudoers
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
# %wheel ALL=(ALL) NOPASSWD: ALL
假設(shè)我們已經(jīng)創(chuàng)建了一個用戶賬號來執(zhí)行這些操作。在此,我將會使用 daygeek 這個用戶賬號。
執(zhí)行下面的命令,添加用戶到 wheel 組。
# usermod -aG wheel daygeek
我們可以通過下面的命令來確定這一點。
# getent group wheel
wheel:x:10:daygeek
我將要檢測用戶 daygeek 是否可以訪問屬于 root 用戶的文件。
$ tail -5 /var/log/secure
tail: cannot open /var/log/secure for reading: Permission denied
當(dāng)我試圖以普通用戶身份訪問 /var/log/secure 文件時出現(xiàn)錯誤。 我將使用 sudo 訪問同一個文件,讓我們看看這個魔術(shù)。
$ sudo tail -5 /var/log/secure
[sudo] password for daygeek:
Mar 17 07:01:56 CentOS7 sudo: daygeek : TTY=pts/0 ; PWD=/home/daygeek ; USER=root ; COMMAND=/bin/tail -5 /var/log/secure
Mar 17 07:01:56 CentOS7 sudo: pam_unix(sudo:session): session opened for user root by daygeek(uid=0)
Mar 17 07:01:56 CentOS7 sudo: pam_unix(sudo:session): session closed for user root
Mar 17 07:05:10 CentOS7 sudo: daygeek : TTY=pts/0 ; PWD=/home/daygeek ; USER=root ; COMMAND=/bin/tail -5 /var/log/secure
Mar 17 07:05:10 CentOS7 sudo: pam_unix(sudo:session): session opened for user root by daygeek(uid=0)
方法 2:在 RHEL/CentOS/OEL 中如何使用 /etc/group 文件為普通用戶授予超級用戶訪問權(quán)限?
我們可以通過編輯 /etc/group 文件來手動地添加用戶到 wheel 組。
只需打開該文件,并在恰當(dāng)?shù)慕M后追加相應(yīng)的用戶就可完成這一點。
$ grep -i wheel /etc/group
wheel:x:10:daygeek,user1
在該例中,我將使用 user1 這個用戶賬號。
我將要通過在系統(tǒng)中重啟 Apache httpd 服務(wù)來檢查用戶 user1 是不是擁有 sudo 訪問權(quán)限。讓我們看看這個魔術(shù)。
$ sudo systemctl restart httpd
[sudo] password for user1:
$ sudo grep -i user1 /var/log/secure
[sudo] password for user1:
Mar 17 07:09:47 CentOS7 sudo: user1 : TTY=pts/0 ; PWD=/home/user1 ; USER=root ; COMMAND=/bin/systemctl restart httpd
Mar 17 07:10:40 CentOS7 sudo: user1 : TTY=pts/0 ; PWD=/home/user1 ; USER=root ; COMMAND=/bin/systemctl restart httpd
Mar 17 07:12:35 CentOS7 sudo: user1 : TTY=pts/0 ; PWD=/home/user1 ; USER=root ; COMMAND=/bin/grep -i httpd /var/log/secure
方法 3:在 Linux 中如何使用 /etc/sudoers 文件為普通用戶授予超級用戶訪問權(quán)限?
sudo 用戶的訪問權(quán)限是被 /etc/sudoers 文件控制的。因此,只需將用戶添加到 sudoers 文件中 的 wheel 組下即可。
只需通過 visudo 命令將期望的用戶追加到 /etc/sudoers 文件中。
# grep -i user2 /etc/sudoers
user2 ALL=(ALL) ALL
在該例中,我將使用 user2 這個用戶賬號。
我將要通過在系統(tǒng)中重啟 MariaDB 服務(wù)來檢查用戶 user2 是不是擁有 sudo 訪問權(quán)限。讓我們看看這個魔術(shù)。
$ sudo systemctl restart mariadb
[sudo] password for user2:
$ sudo grep -i mariadb /var/log/secure
[sudo] password for user2:
Mar 17 07:23:10 CentOS7 sudo: user2 : TTY=pts/0 ; PWD=/home/user2 ; USER=root ; COMMAND=/bin/systemctl restart mariadb
Mar 17 07:26:52 CentOS7 sudo: user2 : TTY=pts/0 ; PWD=/home/user2 ; USER=root ; COMMAND=/bin/grep -i mariadb /var/log/secure
在 Debian/Ubuntu 系統(tǒng)中如何配置 sudo 訪問權(quán)限?
在基于 Debian 的系統(tǒng)中(如 Debian、Ubuntu 和 LinuxMint),使用下面的三個方法就可以做到。
方法 1:在 Linux 中如何使用 sudo 或 admin 組為普通用戶授予超級用戶訪問權(quán)限?
sudo 或 admin 是基于 Debian 的系統(tǒng)中的特殊組,它提供額外的權(quán)限,可以授權(quán)用戶像超級用戶一樣執(zhí)行受到限制的命令。
注意,應(yīng)該在 /etc/sudoers 文件中激活 sudo 或 admin 組來獲得該訪問權(quán)限。
# grep -i 'sudo|admin' /etc/sudoers
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
假設(shè)我們已經(jīng)創(chuàng)建了一個用戶賬號來執(zhí)行這些操作。在此,我將會使用 2gadmin 這個用戶賬號。
執(zhí)行下面的命令,添加用戶到 sudo 組。
# usermod -aG sudo 2gadmin
我們可以通過下面的命令來確定這一點。
# getent group sudo
sudo:x:27:2gadmin
我將要檢測用戶 2gadmin 是否可以訪問屬于 root 用戶的文件。
$ less /var/log/auth.log
/var/log/auth.log: Permission denied
當(dāng)我試圖以普通用戶身份訪問 /var/log/auth.log 文件時出現(xiàn)錯誤。 我將要使用 sudo 訪問同一個文件,讓我們看看這個魔術(shù)。
$ sudo tail -5 /var/log/auth.log
[sudo] password for 2gadmin:
Mar 17 20:39:47 Ubuntu18 sudo: 2gadmin : TTY=pts/0 ; PWD=/home/2gadmin ; USER=root ; COMMAND=/bin/bash
Mar 17 20:39:47 Ubuntu18 sudo: pam_unix(sudo:session): session opened for user root by 2gadmin(uid=0)
Mar 17 20:40:23 Ubuntu18 sudo: pam_unix(sudo:session): session closed for user root
Mar 17 20:40:48 Ubuntu18 sudo: 2gadmin : TTY=pts/0 ; PWD=/home/2gadmin ; USER=root ; COMMAND=/usr/bin/tail -5 /var/log/auth.log
Mar 17 20:40:48 Ubuntu18 sudo: pam_unix(sudo:session): session opened for user root by 2gadmin(uid=0)
或者,我們可以通過添加用戶到 admin 組來執(zhí)行相同的操作。
運行下面的命令,添加用戶到 admin 組。
# usermod -aG admin user1
我們可以通過下面的命令來確定這一點。
# getent group admin
admin:x:1011:user1
讓我們看看輸出信息。
$ sudo tail -2 /var/log/auth.log
[sudo] password for user1:
Mar 17 20:53:36 Ubuntu18 sudo: user1 : TTY=pts/0 ; PWD=/home/user1 ; USER=root ; COMMAND=/usr/bin/tail -2 /var/log/auth.log
Mar 17 20:53:36 Ubuntu18 sudo: pam_unix(sudo:session): session opened for user root by user1(uid=0)
方法 2:在 Debian/Ubuntu 中如何使用 /etc/group 文件為普通用戶授予超級用戶訪問權(quán)限?
我們可以通過編輯 /etc/group 文件來手動地添加用戶到 sudo 組或 admin 組。
只需打開該文件,并在恰當(dāng)?shù)慕M后追加相應(yīng)的用戶就可完成這一點。
$ grep -i sudo /etc/group
sudo:x:27:2gadmin,user2
在該例中,我將使用 user2 這個用戶賬號。
我將要通過在系統(tǒng)中重啟 Apache httpd 服務(wù)來檢查用戶 user2 是不是擁有 sudo 訪問權(quán)限。讓我們看看這個魔術(shù)。
$ sudo systemctl restart apache2
[sudo] password for user2:
$ sudo tail -f /var/log/auth.log
[sudo] password for user2:
Mar 17 21:01:04 Ubuntu18 systemd-logind[559]: New session 22 of user user2.
Mar 17 21:01:04 Ubuntu18 systemd: pam_unix(systemd-user:session): session opened for user user2 by (uid=0)
Mar 17 21:01:33 Ubuntu18 sudo: user2 : TTY=pts/0 ; PWD=/home/user2 ; USER=root ; COMMAND=/bin/systemctl restart apache2
方法 3:在 Linux 中如何使用 /etc/sudoers 文件為普通用戶授予超級用戶訪問權(quán)限?
sudo 用戶的訪問權(quán)限是被 /etc/sudoers 文件控制的。因此,只需將用戶添加到 sudoers 文件中的 sudo 或 admin 組下即可。
只需通過 visudo 命令將期望的用戶追加到 /etc/sudoers 文件中。
# grep -i user3 /etc/sudoers
user3 ALL=(ALL:ALL) ALL
在該例中,我將使用 user3 這個用戶賬號。
我將要通過在系統(tǒng)中重啟 MariaDB 服務(wù)來檢查用戶 user3 是不是擁有 sudo 訪問權(quán)限。讓我們看看這個魔術(shù)。
$ sudo systemctl restart mariadb
[sudo] password for user3:
$ sudo tail -f /var/log/auth.log
[sudo] password for user3:
Mar 17 21:12:32 Ubuntu18 systemd-logind[559]: New session 24 of user user3.
Mar 17 21:12:49 Ubuntu18 sudo: user3 : TTY=pts/0 ; PWD=/home/user3 ; USER=root ; COMMAND=/bin/systemctl restart mariadb
Mar 17 21:12:49 Ubuntu18 sudo: pam_unix(sudo:session): session opened for user root by user3(uid=0)
Mar 17 21:12:53 Ubuntu18 sudo: pam_unix(sudo:session): session closed for user root
Mar 17 21:13:08 Ubuntu18 sudo: user3 : TTY=pts/0 ; PWD=/home/user3 ; USER=root ; COMMAND=/usr/bin/tail -f /var/log/auth.log
Mar 17 21:13:08 Ubuntu18 sudo: pam_unix(sudo:session): session opened for user root by user3(uid=0)
via: https://www.2daygeek.com/how-to-configure-sudo-access-in-linux/
作者: Magesh Maruthamuthu 選題: lujun9972 譯者: liujing97 校對: wxy