centos sudo不能运行_如何在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)總結
以上是生活随笔為你收集整理的centos sudo不能运行_如何在Linux中配置sudo访问权限的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python matplotlib简单使
- 下一篇: 白盒测试六种方法案例分析