如何在 Linux 中配置 sudo 訪問許可權
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
組來獲得該訪問許可權。
# 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 組為普通使用者授予超級使用者訪問許可權?
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)
方法 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
檔案中的 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: https://www.2daygeek.com/how-to-configure-sudo-access-in-linux/
作者:Magesh Maruthamuthu 選題:lujun9972 譯者:liujing97 校對:wxy
相關文章
- linux sudo許可權配置Linux
- Linux中無許可權使用sudoLinux
- Linux 筆記分享十:sudo 許可權Linux筆記
- Linux 筆記分享十一:sudo 許可權Linux筆記
- linux給使用者新增sudo許可權Linux
- linux為使用者新增sudo許可權Linux
- java的訪問許可權Java訪問許可權
- 『學了就忘』Linux許可權管理 — 54、sudo授權Linux
- Linux為普通使用者新增sudo許可權Linux
- Java 訪問許可權控制(6)Java訪問許可權
- mongoDB 3.0 安全許可權訪問MongoDB
- Swift4.0 訪問許可權Swift訪問許可權
- AndroidPermission訪問許可權大全Android訪問許可權
- public, private, protected 訪問許可權訪問許可權
- 如何在 Ubuntu 上為使用者授予和移除 sudo 許可權Ubuntu
- Swift 中 Selector 方法的訪問許可權控制問題Swift訪問許可權
- 使用nginx控制ElasticSearch訪問許可權NginxElasticsearch訪問許可權
- Think IN JAVA --------JAVA訪問許可權控制Java訪問許可權
- Quarkus中基於角色的許可權訪問控制教程
- 【Linux】Liunx配置sudo 使oracle使用者有root許可權執行指令碼LinuxOracle指令碼
- android自定義訪問許可權permissionAndroid訪問許可權
- android:各種訪問許可權PermissionAndroid訪問許可權
- Java:談談protected訪問許可權薦Java訪問許可權
- Linux下ACL許可權控制以及用sudo設定使用者對命令的執行許可權Linux
- win10老跳出訪問許可權怎麼辦_win10訪問許可權怎麼關閉Win10訪問許可權
- win7訪問xp您沒有許可權訪問 共享。請與網路管理員聯絡請求訪問許可權Win7訪問許可權
- Linux 中的許可權管理Linux
- Ubuntu共享資料夾訪問許可權問題Ubuntu訪問許可權
- Linux-許可權管理(ACL許可權)Linux
- linux 檔案許可權 s 許可權和 t 許可權解析Linux
- 利用sudo命令為Ubuntu分配管理許可權(轉)Ubuntu
- 無 sudo 許可權使用者的生存指南
- php執行shell指令碼需要sudo許可權PHP指令碼
- Linux sudo 漏洞可能導致未經授權的特權訪問Linux
- linux檔案許可權問題Linux
- Android7.0檔案訪問許可權Android訪問許可權
- SQLServer控制使用者訪問許可權表SQLServer訪問許可權
- win共享檔案沒有許可權訪問怎麼辦 win10共享檔案許可權訪問的方法Win10