Linux教學:gpasswd群組管理,su、visudo與sudo切換帳號權限

Linux帳號是以群組進行管理,本文介紹如何查看/etc/group系統配置文件,gpasswd加入或刪除群組、su切換使用者,visudo編輯管理員權限,再以sudo臨時執行管理員權限命令。

一、Linux使用者資料

首先,用正規表示法查找「root」和「zanzan」兩個帳戶資料,前者是建立作業系統時一定會有、而且是唯一的管理員帳戶,後者則是管理員新增的一個普通使用者。為了進一步瞭解普通使用者,使用「id」命令進行查詢,可以看到有三個主要的屬性:「uid」、「gid」與「groups」,分別代表:使用者帳號、群組帳號和副群組帳號,三個數值皆為「1000」,另外也有英文名稱「1000(zanzan)」,不過可想見和很系統資料紀錄一樣,在Linux系統是以數值「1000」作為真正的記錄。

關於Linux正規表示法的基本用法,可以參考贊贊小屋相關文章

Linux教學:gpasswd群組管理,su、visudo與sudo切換帳號權限 1

二、Head -n檢視文件

Linux所有的群組資料都放在「etc/group」這個文件,用「cat」檢視命令查看,發現總共分成37個群組,由於資料筆數較多,僅節錄部份清單。如同截圖所示,最後一筆第37筆為「zanzan」,ID是「1000」。注意到這裡的「cat /etc/group -n」中的「-n」表示要將檢視內容加上行編號。

除了「cat」命令之外,輸入另外一個檢視命令:「head -n 3」,「head」命令預設是檢視前十筆資料,加上「-n 3」參數表示只取前三行資料,其中的第一筆資料便是「root」管理員,群組ID為「0」。

關於Linux如何使用「cat」和「head」查看文件,可以參考贊贊小屋相關文章

結合第一和第二步驟先小小總結一下:Linux系统共有三種使用者,除了root系統管理員以及普通使用者之外,還有一些應用程序會自動建立的使用者,從意義上而說並非真正的使用者,此類使用者的 ID序號會從1開始,一直到999,因此可以看到管理員「root」 的ID序號是0,而新增的第一個使用者「zanzan」的ID序號是1000,而如果是群組的話,gid會從1往下依序編號,第一個是root,而zanzan群組的37則是最後一個。

Linux教學:gpasswd群組管理,su、visudo與sudo切換帳號權限 3

三、sed命令基本用法

有了群組序號概念之後,接下來介紹Linux一個處理文字資料的強大命令:「sed」,這用到算是簡單的基本用法:「sed -n ‘1p;37p’」,作用是取得序號第1跟第37的群組資料,亦即root和zanzan。

Linux教學:gpasswd群組管理,su、visudo與sudo切換帳號權限 5

四、gpasswd群組管理

接下來介紹如何將使用者加入到某個群組裡,例如打算把zanzan加入到 root群組,讓它擁有系統管理員的權限,可以執行命令「gpasswd -a zanzan root」,好了之後再使用「id」指令查看zanzan,會發現所屬群組「groups」多了一個「O(root) 」。

另外,新增是add,刪除是delete,所以「-a」是加入群組的參數,從群組中刪除的參數則是「-d」。

Linux教學:gpasswd群組管理,su、visudo與sudo切換帳號權限 7

五、su命令切換使用者

Linux系統中root管理員擁有一切的權限,先前步驟都是以root管理員身份操作,在此簡單測試一下,執行「su」命令切換使用者,後面加個參數是要切換的使用者,因此「su zanzan」便是從root轉換到「zanzan」,也就是登入者從系統管理員變更為普通使用者,這時候如果普通使用者想將自己加入到系統管理員的群組中,會發現沒有這個權限,系統顯示「權限被拒」的提示字句。

Linux教學:gpasswd群組管理,su、visudo與sudo切換帳號權限 9

六、visudo編輯權限

如果要讓普通使用者具有系統管理員權限,通常會給予「visudo」的權限。先切換回root系統管理員登入,輸入命令「visudo」,等於是用vi編輯器開啟sudo這一個配置文件,在裡面找到「root ALL=(ALL) ALL」,如同截圖所示的配置區塊,然後新增一行「zanzan ALL=(ALL) ALL」,讓zanzan也具有root的權限,注意到左下角會有「——INSERT——」字樣,表示目前是插入編輯的狀態。

關於Linux系統如何使用vi編輯器,可以參考贊贊小屋相關文章

Linux教學:gpasswd群組管理,su、visudo與sudo切換帳號權限 11
一張含有 文字 的圖片

自動產生的描述

七、sudo -u root命令

接下來要再執行剛才加入群組的命令,不過在「gpasswd -a zanzan root」前面加上「sudo -u root」,代表雖然目前使用者是zanzan,但是臨時以root系統管理員的權限執行命令,會看到Linux系統突然出現超級英雄電影的台詞:有了權利,就必須負起責任 (「With great power comes great responsibility」)等三項注意事項,在此確認沒有問題,輸入普通使用者「zanzan」的密碼,接著就可以執行管理員命令了,將自己加入到系統管理員的群組中。

一張含有 文字 的圖片

自動產生的描述

八、執行權限測試

接下來用「su」指令切換回root系統管理員,再次使用先前第六步驟同樣方式更改sudo檔案,接著是「gpasswd -d zanzan root」命令將zanzan從root群組中刪除,然後切換到普通使用者zanzan,這時如果要執行sudo命令將自己加到管理員群組,就會發現已無權限,系統還會警告將回報這次越權行為 :「This incident will be reported.」。

一張含有 文字 的圖片

自動產生的描述

Linux系統入門與進階

這篇文章的重點是Linux群組的概念機制以及如何實際運用,雖然最終使用的命令相對簡單,可是在操作過程中無可避免地會使用「cat」、「head」等基本的命令,同時用到了相對進階的正規表示法和sudo資料處理命令。由此可見Linux在入門時必須系統性地學習,熟悉每一項基本操作,才有可能真正進行實務運作。

每天學習,每天充電:Linux文章合集