su -l 或 su -l root (皆可,端看您懶惰的程度)。如此,才能轉換到 root 預設的環境 (bash / tcsh)下,並完全使用到 /sbin/ 內的指令,且直接是轉換到 /root,若只是使用 su,則僅使用輸入此指令的使用者帳號之環境,並路徑維持原狀,路徑環境變數亦無改變,如圖3-1。若要從 root 轉換至其他一般使用者帳號,則直接用指令 su -l newuser ,newuser 為要轉換的帳號,利用 root 帳號轉換其他使用者帳號,無須欲轉換的使用者輸入密碼,但若一般使用者要轉換其他使用者帳號,一樣要用 su -l 指令後面接欲轉換的帳號,且接著要輸入欲轉換帳號的使用者密碼。若是要登出 su 登入的帳號,則使用 鍵盤 Ctrl + d 鍵,便可登出現在帳號,若因為使用 su -l 轉換至太多帳號,而忘記現在是使用和帳號名稱,則可以使用指令 whoami ( Who am I ),印出結果為現在帳號名稱。
(圖3-1)
我們若只是要暫時使用 root 管理者權限,來執行 root 才可以使用的指令呢?那就使用指令 sudo ,就如同在 Ubuntu Linux 環境下,會讓第一個一般使用者,擁有 sudo 來執行 root 才能執行的指令,MS Windows下,則是利用滑鼠右鍵,點選以系統管理員身分執行。而在CentOS_x64 下,亦可以利用 vim 編輯 /etc/sudoers,或利用指令 visudo( visudo指令是在存檔時會檢查是否有設定錯誤,適合較不熟悉的操作者,/etc/sudoers 說明內容也建議此方法 ),就會開啟 /etc/sudoers檔案,但因筆者較喜歡彩色的( visudo 也可以用參數變更編輯器,如指令visudo後在內容加入 Defaults editor=/usr/bin/vim,儲存後離開,下次再執行 visudo 就可改變,如圖3-2),故 su - 轉換 root 後,直接使用 vim /etc/sudeors 來講解( 圖3-3-1,圖3-3-2),之後的命令,因跟系統管理相關,故皆使用 root 權限來執行,而 root 權限又十分的大,故操作時,請小心再小心。本章請讀者要記得保持 root 權限,往後不再贅述。
(圖3-2)
(圖3-3-1)
(圖3-3-2)
圖3-3-1與圖3-3-2結合後,為完整的 /etc/sudoers 檔內容,在CentOS的設定檔內容,一般上面的說明行,是很重要的設定資訊,可能會包含解決參數名稱、SELinux 安全特性( https://en.wikipedia.org/wiki/Security-Enhanced_Linux ),所造成的設定問題,通常會寫在頭幾行說明(如架設SAMBA的設定檔內說明),而有些設定,則是刪去 # 符號,就可以設定完成。圖3-2-1的與圖3-2-2的 Defaults ,為設定 sudo 後的環境變數值,詳細請參閱 sudo 套件的操作說明(https://www.sudo.ws/man/1.8.15/sudoers.man.html ),筆者僅說明常用到的設定。如第11個指令,可知道 root 在 sudo 內設定,可以從任何的來源主機轉換(第一個 ALL),與轉換成任何使用者身分( )內的 ALL,為第二個 ALL,以及可使用所有指令,為第三個 ALL。此時,我們可以此類推,當我們要設定某使用者帳號,如 newuser,需要依靠 sudo,來暫時變成 root 的權限時,僅加上以下設定即可:
newuser ALL=(ALL) ALL # 亦可參閱第11個參數設定上方的說明
第12個指令為,若要讓整個 group 有 root 權限,則僅去除第12個指令的 # 符號就可以執行令群組 wheel,底下的各使用者,皆可以用 sudo 暫時取得 root 權限。而第13個指令為可進階調整成不需輸入自己的密碼,亦可以直接執行,這端看讀者的人性是不是需要設定。
第14個指令為讓 users 群組內的使用者,皆可以使用掛載 ( mount ) 與卸載 ( umount )光碟機,在 Linux 下,舉凡IDE、SATA、SATA等內部傳輸介面的硬碟、光碟皆需經由掛載方式,才能使用。外接裝置SCSI,Fiber,USB,Thunderbolt,Ethernet,InfiniBand(https://en.wikipedia.org/wiki/InfiniBand) 等外部傳輸的外接裝置,亦需經由掛載後才能使用。掛載時,則使用 mount 指令,可選擇掛載可讀或寫及其他參數。退出時,一定要在使用 umount 指令,來卸載後才算安全移除。此 2 指令之後會在詳加說明。
第15個指令為允許 users 群組內的使用者,亦可以使用 shutdown 關機命令,且僅允許在本機( localhost )才能使用,並使用的指令僅為 shutdown -h now ( -h 參數代表 halt 或 power off,若改成參數 -r 則代表 reboot,重開機,-c 則是 cancel,停止執行關機程序,-k 則僅送警告訊息與踢出已登入的使用者。而 now,則代表時間為現在,讀者亦可自行試試改成數字,單位為秒數。其他詳細說明可自行 man shutdown )。
以上修改完後,請如 vim 下操作,儲存後離開。這時候,利用帳號 newuser 來試試 root 才能做的新增使用者吧!(圖3-4)
(圖3-4)
圖3-4第1個指令,可以看出我們要用一般使用者 newuser 身分執行指令 adduser 來建立一個使用者帳號 secuser,結果就顯示如以下:
bash: /usr/sbin/adduser: Permission denied /* bash shell 下的訊息,提到要執行 /usr/sbin/adduser 這需要 root 權限的指令,出現權限不足而錯誤。 */
故,第2個指令就利用 sudo 來臨時轉換,如以下:
$ sudo adduser -d /home/secuser -g users secuser /* adduser 已連結至指令 useradd, -d 為指定家目錄的路徑,-g (group)為指定群組名稱,若要加入很多群組,請改用 -G users, wheel,群組以 , 分隔,群組參數若無指定,則預設群組為與帳號名稱同 。若要用設初始密碼,可用參數 -p (password)後面接密碼,但因為直接輸入明碼是不安全的,故非常不建議,若要指定 shell ,可加上 -s 參數,通常都不需要,屆時讓使用者自己更動。最後加上要建立的使用者帳號名稱。若要刪除使用者帳號,可使用root權限,使用指令 userdel -rf secuser,其中 -r 參數代表 remove,-f 參數代表 force,但刪除前,請確認再確認。 */
為了安全性,在第3個指令便利用指令 passwd 來為帳號 secuser 變更或產生一組密碼,當然無 root 權限來執行亦出現錯誤,故當第4個指令輸入後,系統會要求要給一組新密碼,如之前我們產生 newuser 帳號一樣,密碼請自行斟酌難度,太簡單或是字典字,系統會警告您有安全性問題,但,它還是LP掐著,會讓您繼續執行變更成功的。
接下來,我們就直接利用 su - 將身分換成 root,以便繼續進行管理使用者與使用者工作。然後利用指令 who 來看看有誰登入到機器(圖3-5),也可以使用指令 w,先獲得登入使用者資訊。若要修改使用者的預設家目錄、群組或預設shell,可用root權限來使用以下指令:
$ usermod -g newgroup -d /var/www/html/myweb -s /bin/tcsh newuser
/* 利用參數 -g 把 newuser 改成 預設 newgroup 群組,參數 -d 登入家目錄改為 /var/www/html/myweb 的路徑,參數 -s 預設 shell 改為 tcsh */
若要更改帳號名稱,則使用指令 usermod -l
$ usermod -l mynewuser newuser # 將 newuser 帳號名稱改為 mynewuser
其他更改使用者預設值的方法,可以使用指令 man usermod 來查詢。
(圖3-5)
圖3-5第1個指令為 who -aH,其中參數 -a (all),為顯示所有資訊,參數-H (Headline),為顯示每個欄位的標題。因為 -a 可以列印出系統開機時間,與執行層級(run-level),常用之層級為,層級1為單人登入模式(Single User Mode)之文字介面,層級3為可多人登入模式( Full Multi User Mode )之文字介面,層級5為可多人登入模式之圖形化介面。其他層級的作用,詳細可參考https://en.wikipedia.org/wiki/Runlevel。而調整初始登入層級設定,可用vim編輯/etc/inittab,如圖3-6。僅把圖3-6最後一行 id:5:initdefault: 的 5 改成 3 或 或如圖內的檔案內容說明之數字,儲存後離開,就可再下次重開機時,換成該登入層級。若要臨時換層級,可利用指令
$ telinit [0-6] /* [0-6]表示可 telinit 0 關機,或是可到 telinit 6 重啟動,亦可 telinit s 或 telinit 1 進入單人登入的修復模式,亦可使用指令 init ,跳轉登入層級模式 */,除此之外,您亦可以使用指令
$ runlevel 來顯示現在所在的 run level
第2指令 tty 為列出現在所在的 Terminal 視窗號碼為 pts/4,以防止下一個指令 pkill 將自己的 Terminal 視窗刪除。從 who -aH 顯示的內容之 LINE 欄位與 PID 欄位來看,tty1,代表著Ctrl+Alt+F[1-6] ( LINE為 tty,前章有說明 )的其中以GUI登入的視窗,之登入帳號為 newuser,其他每個等待登入的 tty,若無帳號登入,則顯示NAME欄位顯示 LOGIN。登入GNOME後,再開啟的 Terminal視窗,其LINE名稱為 pts,依開啟的順序為 0,1,2,...。故踢除使用者 newuser 第5個Termianl視窗指令如下:
$ pkill -kill -t pts/5 # 指令 pkill 傳遞 -kill 方法,至 - t (terminal) 5 號視窗
再利用 who -luH , -l (login process)與 -u 參數,為列出每一位使用者的登入LINE、停工時間(idle time)與工作的序號(process id),就可以看到登入 pts/5 的使用者已經不見了。
(圖3-6)
除了暫踢除使用者登入的方法,我們亦可以使用前章所講解過,可以使用指令 kill,去強制停止在系統內正進行的工作,或是殭屍程序( zombie ),亦可以利用指令 top 。如圖3-7
(圖3-7)
圖3-7上方第1行為系統時間與已開機時間(up),幾位登入的 user (含所有 Terminal視窗),與系統平均負載(Load average),分別為每1、5、15分鐘的平均附載。第2行為系統工作狀態,有156個程序,1個在執行,155個在待命,0個被停止,0個殭屍程序。第3行為中央處理器(以下簡稱 CPU)的使用情形,us 為使用者使用的百分比,sy 為系統核心使用的百分比,ni 為提高優先執行所占用的百分比,id 為閒置的的百分比,wa 為I/O(Input/Output)等待時間所占用的百分比,hi 與 si為硬體與軟體中斷(請參閱 https://en.wikipedia.org/wiki/Interrupt )所占用的百分比。st為 cpu steal time 的百分比(https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Virtualization_Deployment_and_Administration_Guide/sect-KVM_guest_timing_management-Steal_time_accounting.html)。
第4行與第5行,分別為實體記憶體 ( 以下簡稱 Memory) 與虛擬記憶體 (SWAP,安裝系統時設定過),的使用率。再來便是 top 的命列列,可在黑色游標處輸入鍵盤指令,如輸入 1,可將所有 CPU 的核心 (cores) 列出,輸入 h ,可以查詢鍵盤指令。輸入 k,為用來刪除,圖3-7下方所列出的所有工作之一的 PID。輸入 q,便可以跳出 top 的監控介面。其他 top 的參數應用,有興趣的讀者,可參考http://man7.org/linux/man-pages/man1/top.1.html,更多top的操作方式,亦可參考 http://linoxide.com/linux-command/linux-top-command-examples-screenshots/。
除此之外,我們亦可應用之前說明過的指令 ps,加上 grep 找出所要刪除的程序之PID,如下例 (圖3-8右):
$ ps -ef | grep 'top' # 用 ps 將擁有 top 字串的行,皆列出來。第二欄位為 PID
$ kill -9 11764 /* 用 kill 強制剔除一個 PID,此例為剔除 top 的PID,送出的訊號參數亦可先使用 -15,不成功再使用 -9 。 若要一次刪除很多相關的程序,可使用如 killall -9 top */
或亦可利用指令 pstree -ph 來列出工作程序名稱的樹狀關係與PID,並將現在帳號正使用的 terminal 內操作的工作,作顯著顯示 。
(圖3-8)
最後,我們要考慮一些使用者的例外錯誤問題。例如,若使用者的家目錄內資料太大,而把機器的總硬碟容量塞爆,造成系統不穩,因而影響其他使用者,便可利用指令 edquota (限定 ext 檔案系統下),來編輯每位使用者可使用的最大容量。首先,必須要修改掛載的裝置設定檔 /etc/fstab,將 /home 掛載選項改為 defaults, usrquota, grpquota (圖3-9),開啟使用者與群組可以設定磁碟配額的能力,並儲存後離開,令檔案系統使用 disk quota 的管理程式。
(圖3-9)
接著如圖3-10第1個指令,cat /etc/mtab,將所有本機掛載的磁碟項目列出,可以看到 /home 掛載 /dev/sda3 目錄的權限是 rw (可讀寫),此時我們利用第2個指令 mount -o remount /dev/sda3 /home ,使 /home 不須經重開機,便可重新掛載相同磁碟分割處。再來利用第3個指令使用 quotacheck -m /home /* 亦可加上參數 -ug,代表同時產生 user 與 group 的 quota 檔 */,來強制在 /home 目錄下產生 aquota.user 的磁碟配額設定檔。如第4指令,可以看見在 /home 內,出現 quota.user 檔案,此時可以利用指令 edquota -u newuser 來對使用者 newuser 建立個別的磁碟配額額度了。(圖3-13)
(圖3-13)
圖3-13之編輯介面為 vi ,故操作方式同 vim。我們在內容上,只需更改 soft 跟 hard 的值,如黃框處,預設值 0 為無限制,inodes 後的 soft 與 hard 表示可存的最大檔案數,在此不設限。soft 與 hard 值的單位為 KB,通常 soft 的配額限制可以超過,但會警告並給予緩衝,若是 hard 的配額限制,則無法讓使用者有緩衝的空間,額度若用完,則禁止存取,故我們可以將 hard 設為磁碟分割總容量的 95%,以保持磁碟的健康狀況。而 soft ,可設為磁碟分割總容量的 90% 。故筆者的分割總容量為 2G,故 soft 設為 1800000 而 hard 便設為 1900000 ,設定完後在儲存後離開即可。接著我們利用指令 quota -u newuser,就會列出使用者帳號 newuser,所使用的磁碟額度值為何。若要暫關閉 quota 功能,可利用指令 quotaoff -a (參數a代表/etc/mtab檔案內全部磁碟 ),若要再開啟,則利用指令 quotaon -a,一樣開啟 /etc/mtab 檔案內,掛載參數有設定 usrquota, grpquota 的磁碟之配額功能。
最後再補充說明,Linux內的使用者的屬性與加密過的密碼、參數分別放於 /etc/passwd 與 /etc/shadow (詳情可見網頁http://www.tldp.org/LDP/lame/LAME/linux-admin-made-easy/shadow-file-formats.html),而群組的屬性與參數,分別放於 /etc/group 與 /etc/gshadow,內容皆為以 : 分隔的欄位式資料。故一般使用者可使用如下 cut 指令:
$ sudo cat /etc/passwd | cut -d : -f 1,3,4,6,7 /* 僅印出第1、3、4、6、7欄,分別表示所有的使用者名稱、 UID 、GID、使用者家目錄、使用者 Shell 種類。除此之外,利用 useradd 產生新使用者的預設參數值,為來自設定檔案 /etc/default/useradd 與 /etc/skel 的設定*/
-----------------------------------------
下一節,筆者要介紹新增硬體的部分,例如隨身碟,外接硬碟,網路卡,顯示卡,不斷電系統(UPS)等硬體設備。當然,有些卡與隨身碟,在 X Window 圖形介面( GNOME or KDE )下,是可直接隨插即用(Plug and Play,PnP,https://en.wikipedia.org/wiki/Plug_and_play )。但是,如果是新顯示卡沒有驅動好,又怎麼會有 X Winodw 可用呢?故筆者建議,還是需要學習直接利用文字介面操作 Linux 系統,以確保 X window manager 突然出現問題,而無法將我們的視窗操作,下達正確指令給系統,造成的執行結果的不確定性錯誤。
If you have any feedback or question, please go to my forum to discuss.