相對於 su 需要了解新切換的使用者口令 (常常是需要 root 的口令), sudo 的執行則僅需要自己的口令即可!甚至可以配置不需要口令即可執行 sudo 呢!由於 sudo 可以讓你以其他使用者的身份執行命令(通常是使用 root 的身份來執行命令),因此並非所有人都能夠執行 sudo ,而是僅有規範到 /etc/sudoers 內的使用者才能夠執行 sudo 這個命令
[root@www ~]# sudo [-b] [-u 新使用者賬號]選項與引數:
-b :將後續的命令放到背景中讓系統自行執行,而不與目前的 shell 產生影響
-u :後面可以接欲切換的使用者,若無此項則代表切換身份為 root 。
範例一:你想要以 sshd 的身份在 /tmp 底下建立乙個名為 mysshd 的檔案
[root@www ~]# sudo -u sshd touch /tmp/mysshd
[root@www ~]# ll /tmp/mysshd
-rw-r--r-- 1 sshd sshd 0 feb 28 17:42 /tmp/mysshd
# 特別留意,這個檔案的許可權是由 sshd 所建立的情況喔!
但是 sudo 預設僅有 root 能使用啊!為什麼呢?因為 sudo 的執行是這樣的流程:
當使用者執行 sudo 時,系統於 /etc/sudoers 檔案中搜尋該使用者是否有執行 sudo 的許可權;
若使用者具有可執行 sudo 的許可權後,便讓使用者『輸入使用者自己的口令』來確認;
若口令輸入成功,便開始進行 sudo 後續接的命令(但 root 執行 sudo 時,不需要輸入口令);
若欲切換的身份與執行者身份相同,那也不需要輸入口令。
所以說,sudo 執行的重點是:『
能否使用 sudo 必須要看 /etc/sudoers 的配置值,而可使用 sudo 者是透過輸入使用者自己的口令來執行後續的命令串』
從上面的說明我們可以知道,除了 root 之外的其他賬號,若想要使用 sudo執行屬於 root 的許可權命令,則 root 需要先使用visudo去修改 /etc/sudoers ,讓該賬號能夠使用全部或部分的root 命令功能。為什麼要使用 visudo 呢?這是因為 /etc/sudoers 是有配置語法的,如果配置錯誤那會造成無法使用 sudo 命令的不良後果。因此才會使用 visudo 去修改,並在結束離開修改畫面時,系統會去檢驗 /etc/sudoers 的語法就是了。
1.單一使用者可進行 root 所有命令,與 sudoers 檔案語法:
假如我們要讓 vbird1 這個賬號可以使用 root 的任何命令,那麼可以簡單的這樣進行修改即可:
[root@www ~]# visudo....(前面省略)....
root all=(all) all <==找到這一行,大約在 76 行左右
vbird1 all=(all) all
<==這一行是你要新增的!
....(前面省略)....
有趣吧!其實 visudo 只是利用 vi 將 /etc/sudoers 檔案呼叫出來進行修改而已,所以這個檔案就是 /etc/sudoers 啦!這個檔案的配置其實很簡單,如上面所示,如果你找到 76 行 (有 root 配置的那行) 左右,看到的資料就是:
使用者賬號 登陸者的**主機名=(可切換的身份) 可下達的命令root all=(all) all <==這是預設值
上面這一行的四個元件意義是:
系統的哪個賬號可以使用 sudo 這個命令的意思,預設為 root 這個賬號;
當這個賬號由哪部主機聯機到本 linux 主機,意思是這個賬號可能是由哪一部網路主機聯機過來的,這個配置值可以指定客戶端計算機(信任使用者的意思)。預設值 root 可來自任何一部網路主機
這個賬號可以切換成什麼身份來下達後續的命令,預設 root 可以切換成任何人;
可用該身份下達什麼命令?這個命令請務必使用絕對路徑撰寫
。預設 root 可以切換任何身份且進行任何命令之意。
2.利用群組以及免口令的功能處理 visudo
我們在本章前面曾經建立過 pro1, pro2, pro3 ,這三個使用者能否透過群組的功能讓這三個人可以管理系統?可以的,而且很簡單!同樣我們使用實際案例來說明:
[root@www ~]# visudo<==同樣的,請使用 root 先配置
....(前面省略)....
%wheel all=(all) all
<==大約在 84 行左右,請將這行的 # 拿掉!
# 在最左邊加上 % ,代表後面接的是乙個『群組』之意!改完請儲存後離開
[root@www ~]# usermod -a -g wheel pro1
<==將 pro1 加入 wheel 的支援
上面的配置值會造成『任何加入 wheel 這個群組的使用者,就能夠使用 sudo 切換任何身份來操作任何命令』的意思。
如果你想要讓 pro3 也支援這個 sudo 的話,不需要重新使用 visudo ,只要利用 usermod 去修改 pro3 的群組支援,讓 wheel 也支援 pro3 的話,那他就能夠進行 sudo 囉!簡單吧!不過,既然我們都信任這些 sudo 的使用者了,能否提供『不需要口令即可使用 sudo 』呢?就透過如下的方式:
[root@www ~]# visudo<==同樣的,請使用 root 先配置
....(前面省略)....
%wheel all=(all) nopasswd: all
<==大約在 87 行左右,請將 # 拿掉!
# 在最左邊加上 % ,代表後面接的是乙個『群組』之意!改完請儲存後離開
重點是那個
sudo 搭配 su 的使用方式:
很多時候我們需要大量執行很多 root 的工作,所以一直使用 sudo 覺得很煩ㄟ!那有沒有辦法使用 sudo 搭配 su ,一口氣將身份轉為 root ,而且還用使用者自己的口令來變成 root 呢?是有的!而且方法簡單的會讓你想笑!我們建立乙個 admins 帳戶別名,然後這樣做:
[root@www ~]# visudouser_alias admins = pro1, pro2, pro3, myuser1
admins all=(root) /bin/su -
接下來,上述的 pro1, pro2, pro3, myuser1 這四個人,只要輸入『 sudo su - 』並且輸入『自己的口令』後,立刻變成 root 的身份!不但 root 口令不會外流,使用者的管理也變的非常方便!這也是實務上面多人共管一部主機時常常使用的技巧呢!這樣管理確實方便,不過還是要強調一下大前提,那就是『
這些你加入的使用者,全部都是你能夠信任的使用者』!
sudo指令用法
sudo語法 sudo b u新使用者賬號 選項與引數 b 將後續的指令放到背景中讓系統自行執行,而不與目前的shell產生影響 u 接切換的使用者,若無此項則代表切換身份為root 例如 sudo u wang touch tmp sudo.txt 注意 目前只能在tmp目錄下面建立,需要設定su...
sudo用法記錄
預設5分鐘後剛才輸入的sodo密碼過期,下次sudo需要重新輸入密碼,如果覺得在sudo的時候輸入密碼麻煩,使普通使用者使用sudo擁有root身份執行所有命令且無需密碼,新增一行 xiaobai all all nopasswd all 注意nopasswd 與all之間有乙個空格!注意 有的時候...
sudo的簡單用法
sudo 的簡單用法 sudo 是linux 下一種能讓普通使用者執行 root 使用者或者其他使用者的命令 在 linux 中為了能方便的作業系統,同事也為了減輕管理員的負擔,這裡就有了 sudo 這個工具,讓普通使用者能執行 root 使用者的一部分權利。在 linux unix 下專門為 su...