如何在 Linux 中配置 sudo 訪問權限

Linux 系統中 root 用戶擁有 Linux 中所有控制權力。Linux 系統中 root 是擁有最高權力的用戶,能夠在系統中實施任意的行爲。linux

若是其餘用戶想去實施一些行爲,不能爲全部人都提供 root 訪問權限。由於若是他或她作了一些錯誤的操做,沒有辦法去糾正它。git

爲了解決這個問題,有什麼方案嗎?github

咱們能夠把 sudo 權限發放給相應的用戶來克服這種狀況。apache

sudo 命令提供了一種機制,它能夠在不用分享 root 用戶的密碼的前提下,爲信任的用戶提供系統的管理權限。安全

他們能夠執行大部分的管理操做,但又不像 root 同樣有所有的權限。bash

什麼是 sudo?

sudo 是一個程序,普通用戶可使用它以超級用戶或其餘用戶的身份執行命令,是由安全策略指定的。session

sudo 用戶的訪問權限是由 /etc/sudoers 文件控制的。less

sudo 用戶有什麼優勢?

在 Linux 系統中,若是你不熟悉一個命令,sudo 是運行它的一個安全方式。ui

  • Linux 系統在 /var/log/secure/var/log/auth.log 文件中保留日誌,而且你能夠驗證 sudo 用戶實施了哪些行爲操做。
  • 每一次它都爲當前的操做提示輸入密碼。因此,你將會有時間去驗證這個操做是否是你想要執行的。若是你發覺它是不正確的行爲,你能夠安全地退出並且沒有執行此操做。

基於 RHEL 的系統(如 Redhat (RHEL)、 CentOS 和 Oracle Enterprise Linux (OEL))和基於 Debian 的系統(如 Debian、Ubuntu 和 LinuxMint)在這點是不同的。spa

咱們將會教你如何在本文中說起的兩種發行版中執行該操做。

這裏有三種方法能夠應用於兩個發行版本。

  • 增長用戶到相應的組。基於 RHEL 的系統,咱們須要添加用戶到 wheel 組。基於 Debain 的系統,咱們添加用戶到 sudoadmin 組。
  • 手動添加用戶到 /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 組來得到該訪問權限。

# grep -i wheel /etc/sudoers

## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
# %wheel ALL=(ALL) NOPASSWD: ALL
複製代碼

假設咱們已經建立了一個用戶帳號來執行這些操做。在此,我將會使用 daygeek 這個用戶帳號。

執行下面的命令,添加用戶到 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
複製代碼

當我試圖以普通用戶身份訪問 /var/log/secure 文件時出現錯誤。 我將使用 sudo 訪問同一個文件,讓咱們看看這個魔術。

$ 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 文件爲普通用戶授予超級用戶訪問權限?

咱們能夠經過編輯 /etc/group 文件來手動地添加用戶到 wheel 組。

只需打開該文件,並在恰當的組後追加相應的用戶就可完成這一點。

$ grep -i wheel /etc/group
wheel:x:10:daygeek,user1
複製代碼

在該例中,我將使用 user1 這個用戶帳號。

我將要經過在系統中重啓 Apache httpd 服務來檢查用戶 user1 是否是擁有 sudo 訪問權限。讓咱們看看這個魔術。

$ 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 文件爲普通用戶授予超級用戶訪問權限?

sudo 用戶的訪問權限是被 /etc/sudoers 文件控制的。所以,只需將用戶添加到 sudoers 文件中 的 wheel 組下便可。

只需經過 visudo 命令將指望的用戶追加到 /etc/sudoers 文件中。

# grep -i user2 /etc/sudoers
user2 ALL=(ALL) ALL
複製代碼

在該例中,我將使用 user2 這個用戶帳號。

我將要經過在系統中重啓 MariaDB 服務來檢查用戶 user2 是否是擁有 sudo 訪問權限。讓咱們看看這個魔術。

$ 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 系統中如何配置 sudo 訪問權限?

在基於 Debian 的系統中(如 Debian、Ubuntu 和 LinuxMint),使用下面的三個方法就能夠作到。

方法 1:在 Linux 中如何使用 sudo 或 admin 組爲普通用戶授予超級用戶訪問權限?

sudoadmin 是基於 Debian 的系統中的特殊組,它提供額外的權限,能夠受權用戶像超級用戶同樣執行受到限制的命令。

注意,應該在 /etc/sudoers 文件中激活 sudoadmin 組來得到該訪問權限。

# 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
複製代碼

假設咱們已經建立了一個用戶帳號來執行這些操做。在此,我將會使用 2gadmin 這個用戶帳號。

執行下面的命令,添加用戶到 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
複製代碼

當我試圖以普通用戶身份訪問 /var/log/auth.log 文件時出現錯誤。 我將要使用 sudo 訪問同一個文件,讓咱們看看這個魔術。

$ 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 組來執行相同的操做。

運行下面的命令,添加用戶到 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 文件爲普通用戶授予超級用戶訪問權限?

咱們能夠經過編輯 /etc/group 文件來手動地添加用戶到 sudo 組或 admin 組。

只需打開該文件,並在恰當的組後追加相應的用戶就可完成這一點。

$ grep -i sudo /etc/group
sudo:x:27:2gadmin,user2
複製代碼

在該例中,我將使用 user2 這個用戶帳號。

我將要經過在系統中重啓 Apache httpd 服務來檢查用戶 user2 是否是擁有 sudo 訪問權限。讓咱們看看這個魔術。

$ 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 文件爲普通用戶授予超級用戶訪問權限?

sudo 用戶的訪問權限是被 /etc/sudoers 文件控制的。所以,只需將用戶添加到 sudoers 文件中的 sudoadmin 組下便可。

只需經過 visudo 命令將指望的用戶追加到 /etc/sudoers 文件中。

# grep -i user3 /etc/sudoers
user3 ALL=(ALL:ALL) ALL
複製代碼

在該例中,我將使用 user3 這個用戶帳號。

我將要經過在系統中重啓 MariaDB 服務來檢查用戶 user3 是否是擁有 sudo 訪問權限。讓咱們看看這個魔術。

$ 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: www.2daygeek.com/how-to-conf…

做者:Magesh Maruthamuthu 選題:lujun9972 譯者:liujing97 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出

相關文章
相關標籤/搜索