Linux 系統中 root 用戶擁有 Linux 中所有控制權力。Linux 系統中 root 是擁有最高權力的用戶,能夠在系統中實施任意的行爲。linux
若是其餘用戶想去實施一些行爲,不能爲全部人都提供 root 訪問權限。由於若是他或她作了一些錯誤的操做,沒有辦法去糾正它。git
爲了解決這個問題,有什麼方案嗎?github
咱們能夠把 sudo 權限發放給相應的用戶來克服這種狀況。apache
sudo
命令提供了一種機制,它能夠在不用分享 root 用戶的密碼的前提下,爲信任的用戶提供系統的管理權限。安全
他們能夠執行大部分的管理操做,但又不像 root 同樣有所有的權限。bash
sudo
是一個程序,普通用戶可使用它以超級用戶或其餘用戶的身份執行命令,是由安全策略指定的。session
sudo 用戶的訪問權限是由 /etc/sudoers
文件控制的。less
在 Linux 系統中,若是你不熟悉一個命令,sudo
是運行它的一個安全方式。ui
/var/log/secure
和 /var/log/auth.log
文件中保留日誌,而且你能夠驗證 sudo 用戶實施了哪些行爲操做。基於 RHEL 的系統(如 Redhat (RHEL)、 CentOS 和 Oracle Enterprise Linux (OEL))和基於 Debian 的系統(如 Debian、Ubuntu 和 LinuxMint)在這點是不同的。spa
咱們將會教你如何在本文中說起的兩種發行版中執行該操做。
這裏有三種方法能夠應用於兩個發行版本。
wheel
組。基於 Debain 的系統,咱們添加用戶到 sudo
或 admin
組。/etc/group
文件中。visudo
命令添加用戶到 /etc/sudoers
文件中。在基於 RHEL 的系統中(如 Redhat (RHEL)、 CentOS 和 Oracle Enterprise Linux (OEL)),使用下面的三個方法就能夠作到。
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)
複製代碼
咱們能夠經過編輯 /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
複製代碼
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 的系統中(如 Debian、Ubuntu 和 LinuxMint),使用下面的三個方法就能夠作到。
sudo
或 admin
是基於 Debian 的系統中的特殊組,它提供額外的權限,能夠受權用戶像超級用戶同樣執行受到限制的命令。
注意,應該在 /etc/sudoers
文件中激活 sudo
或 admin
組來得到該訪問權限。
# 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)
複製代碼
咱們能夠經過編輯 /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
複製代碼
sudo 用戶的訪問權限是被 /etc/sudoers
文件控制的。所以,只需將用戶添加到 sudoers
文件中的 sudo
或 admin
組下便可。
只需經過 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