Linux

設置 RHEL/CentOS 5 在命令行和 X 中使用 SUDO

  • February 24, 2013

當我執行特權命令時,如何讓 CentOS/RHEL 提示我輸入*密碼(而不是 root)。*我找到了許多指南,詳細說明瞭如何為命令行執行此操作,但我希望它也適用於 X windows 應用程序。

或者換句話說:我如何讓 RHEL/CentOS 表現得像 Ubuntu。

終端設置

作為 root,我們需要/etc/sudoers通過執行來編輯文件visudo(注意:您可以export EDITOR=vim獲取語法高亮,或使用您選擇的編輯器)。

在第 83,86 行附近,您應該看到兩行相似(在 vim 中您可以執行:set number以顯示行號):

83 # %wheel  ALL=(ALL)       ALL
84
85 ## Same thing without a password
86 # %wheel  ALL=(ALL)       NOPASSWD: ALL

不同之處在於第 83 行將要求使用者輸入密碼以進行身份驗證,而第 86 行將允許使用者sudo無需重新提示他們輸入密碼即可。最佳安全實踐表明#83 更安全;但是根據您的情況,#86 可能是合適的(例如,我通常在設置伺服器時使用#86,然後切換到#83)。

退出並保存該文件。

現在我們需要告訴系統哪些使用者可以通過sudo. 這是通過將它們添加到wheel組中來完成的,這就是我們之前編輯%wheel的文件中指示的內容。sudoers有關該文件格式的更多資訊,請參閱man sudoers

$ usermod -a -G wheel erebusbat

該命令會將使用者添加erebusbat到 wheel 組,再加上我們之前的更改,所有使用者都可以以 root 身份執行任何命令:

erebusbat@centos$ sudo whoami
root
erebusbat@centos$

X / GNOME 設置

在 CentOS/RHEL 5 及以下版本中,X 身份驗證由一組名為consolehelperand的程序處理userhelper。基本上發生的情況是這樣的:當使用者執行一個pirut程序pirut/etc/security/console.apps/比如

USER=root
PROGRAM=/usr/sbin/pirut
SESSION=true
KEEP_ENV_VARS=http_proxy,ftp_proxy

這告訴consolehelper/userhelper允許使用者以 root 身份驗證和執行程序。如果我們man userhelper看到我們可以添加一個UGROUPS=指令,以便如果使用者在該組中,他們將被允許以自己的身份進行身份驗證,但以USER=指令中指定的使用者身份執行應用程序。所以輸出pirut文件需要看起來像:

USER=root
UGROUPS=wheel
PROGRAM=/usr/sbin/pirut
SESSION=true
KEEP_ENV_VARS=http_proxy,ftp_proxy

只要我們嘗試以pirut普通使用者身份執行(從 GNOME 菜單添加/刪除程序)進行更改,就會發生以下兩種情況之一:

  1. 系統將提示我們輸入我們的密碼,程序將以root.
  2. root如果目前使用者不在組中,系統將提示我們輸入密碼wheel

然而,手動更改所有這些文件可能是一個 PIA,所以我們工作很聰明,而不是更努力:

$ cd /etc/security/console.apps/
$ sudo su -
$ pcregrep -ML '^UGROUPS=' * | xargs sed -i 's/^USER=root/USER=root\nUGROUPS=wheel/' 

sudo su -如果您目前是 ,則不需要該命令root。該命令不會“雙重修復”任何文件,因此可以對其進行chron編輯或設置為在啟動時執行以確保您的文件正常。更新和安裝可以覆蓋它們或創建沒有UGROUPS=指令的新的。

禁用根使用者

完成所有設置和測試後,您應該禁用 root 使用者:

$ sudo passwd -l root

那是一個小寫的 L,就像在 LOCK 中一樣。

然後你應該PermitRootLogin no在你的/etc/ssh/sshd_config文件中設置或更改。即使您鎖定了 root 帳戶,這也很有用,以防將來有人啟用它。sudo su -即使你設置了它仍然可以工作,見下文,所以真的沒有理由不設置它。

如果您決定不鎖定 root 帳戶,這並不理想,因為任何人都可以登錄到 text/X/GNOME 控制台root,這就是壞事發生的時候(控制台保持登錄狀態或者您不小心刪除了一堆作業系統文件

$$ ask me how I know $$,最好鎖定帳戶。 長時間以 root 身份執行

有時,例如軟體安裝,需要執行許多命令root,而不希望每個命令都以sudo. 在這種情況下,您有兩種選擇:

  1. 臨時切換到root帳戶:$ sudo su - 該命令將為您提供與以 root 身份登錄帳戶相同的命令 shell。
  2. 解鎖root帳戶:$ sudo passwd root這將允許您設置密碼並解鎖帳戶;但是**,這不是暫時**的,您必須記住在完成後鎖定使用者帳戶。

引用自:https://serverfault.com/questions/205681