一、前言
sudo是允許系統管理者讓普通使用者執行一些或者全部的root指令的一個工具,減少了root使用者的登陸和管理時間,提高了安全性。Sudo不是對shell的一個代替,它是面向每個指令的。
而防止root使用者密碼被惡意更改,主要是使用者基本上都是su - 切換到root,假如有很多人知道root賬号和密碼,那麼就會出現很多問題,也就不知道是誰幹的壞事,log裡面檢視的都是root使用者,防止root被惡意更改,為了更好的管理使用者權限。
二、特點
Sudo能夠限制使用者隻在某台主機上運作某些指令。
Sudo提供了豐富的日志,詳細地記錄了每個使用者幹了什麼。它能夠将日志傳到中心主機或者日志伺服器。
Sudo確定root密碼不會被遺忘,配置一個具有sudo權限的使用者,切換到root就可以修改。
Sudo使用時間戳檔案來執行類似的“檢票”系統。當使用者調用sudo并且輸入它的密碼時,使用者獲得了一張存活期為5分鐘的票(這個值可以在編譯的時候改變)。
Sudo的配置檔案是sudoers檔案,它允許系統管理者集中的管理使用者的使用權限和使用的主機。它所存放的位置預設是在/etc/sudoers,屬性必須為0411。
三、配置sudo
1、檢視系統是否安裝Sudo
[kuangl@jw-web02 root]$ rpm -qa |grep sudo
sudo-1.7.2p1-10.el5
2、建立一個系統管理使用者kuangl,以root使用者操作;
[root@jw-web02 ~]# useradd kuangl
[root@jw-web02 ~]# passwd kuangl
Changing password for user kuangl.
New UNIX password:
BAD PASSWORD: it is based on a (reversed) dictionary word
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
3、将kuangl使用者賦予root權限;
[root@jw-web02 ~]# visudo
在檔案内容後面添加
kuangl ALL=(ALL)
如果不想在sudo的時候輸入密碼,幹脆就把上面那行換成下面這行即可:
kuangl ALL=(ALL) NOPASSWD: ALL
4、測試 Sudo
[root@jw-web02 ~]# sudo whoami
root //如果配置正确,指令會傳回root字樣
5、切換到root
[kuangl@jw-web02 root]$ sudo su - //切換到root
[root@jw-web02 ~]# su kuangl //切換到賦予的使用者
四、防止Root密碼被惡意篡改
1、添加admin組;
[root@jw-web02 ~]# groupadd admin
2、添加使用者;
[root@jw-web02 ~]# useradd linda
[root@jw-web02 ~]# useradd rongw
3、将使用者添加到admin組;
[root@jw-web02 ~]# usermod -a -G admin linda
[root@jw-web02 ~]# usermod -a -G admin rongw
4、在sudoers檔案添加admin組,讓這個組的使用者權限和root一樣。
vim /etc/sudoers
密碼由自己設定和保管,互相之間不知道其他組的密碼,這樣子每個人員都有了sudo權限,而每個使用者所做的事情基本可以通過日志查詢得到。
五、備注:
[root@jw-index conf]# useradd kuangl
bash: useradd: command not found
為什麼會出現bash: useradd: command not found 這個問題呢?原因如下:
sudo su 隻是獲得root使用者的權限;
sudo su - 不僅獲得root使用者的權限,而且還執行root的profile來執行root的環境變量。
本文轉自 kuangling 51CTO部落格,原文連結:http://blog.51cto.com/kling/1167541