設置 RHEL/CentOS 5 在命令行和 X 中使用 SUDO
當我執行特權命令時,如何讓 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 身份驗證由一組名為
consolehelper
and的程序處理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 菜單添加/刪除程序)進行更改,就會發生以下兩種情況之一:
- 系統將提示我們輸入我們的密碼,程序將以
root
.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
. 在這種情況下,您有兩種選擇:
- 臨時切換到
root
帳戶:$ sudo su -
該命令將為您提供與以 root 身份登錄帳戶相同的命令 shell。- 解鎖root帳戶:
$ sudo passwd root
這將允許您設置密碼並解鎖帳戶;但是**,這不是暫時**的,您必須記住在完成後鎖定使用者帳戶。