|
#1
| ||||
| ||||
| [轉貼] 第三章 Administrative Tasks 一. Manage users and group accounts 1. Accounts and the password file (1) /etc/passwd # vi /etc/passwd = # vipw barry: x: 500:500:: /home/barry: /bin/bash 帳號 密碼 UID GID 備註 家目錄 shell ˙username:為唯一的,且區分大小寫。 ˙password:x表示經過shadow passwords加密保護,且將encrypted password置 /etc/shadow。 # pwunconv → Revert(恢復) from shadow password configuration to a standard password file. 照字面上翻譯就是將編碼後的密碼不轉換到shadow內, 也就是執行此指令後,加密過的密碼會放在/etc/passwd之中。 # cat /etc/passwd → 密碼經編碼(MD5→單向編碼) # cat /etc/shadow → no such file or directory # pwconv → 回復使用shadow passwords file when you run this command , it creats a /etc/shadow file from your /etc/passwd file. The “pwunconv” command will update /etc/passwd file and then delete the /etc/shadow file. If you need to restrict a user’s access , place an asterisk(*)at the beginning of the field.(如此設定會造成使用者無法收發信件) If the field is empty, only the username is required to login. ˙UID (unique)、GID:一般使用者帳號UID、GID由500開始,但 並非絕對,視版本而異,500以下為供系統帳號所使用。 UID、GID為非負數的整數 (nonnegative interger ),且UID是唯 一的。 Kernel 2.2為16bit範圍,亦即可開帳號數為216 (0-65535)。 Kernel 2.4為32bit範圍,亦即可開帳號數為232。 <note>系統辨別身份是以UID.GID為主。另此GID是預設群組ID。 (2) /etc/shadow:存放編碼後密碼及密碼相關設定訊息。 shadow權限為rw-------。而chage指令,會將結果寫入此檔內。 而openlinux的shadow權限為r--------。 shadow內容如下: barry:$ 1$a40w32A…:11941:0:99999:7: : : 帳號 編碼後密碼 -d -m -M -W -I -E 保留 11941表示 chage –d所指定日期至1970.1.1的天數 。 倒數第二欄為chage –E 所指定日期至1970.1.1的天數。 最後一欄為保留的欄位。 若密碼欄為!!→表示當初新增使用者時,並未設定密碼,如此會造成 使用者無法登入(redhat版本)。 若密碼欄為空白,則使用者不需密碼即可登入(redhat)。當我們執行: # passwd –d username時,就是將shadow的密碼欄改成空白,但 passwd檔案的密碼欄未異動。 由以上我們可以歸納出只要passwd或shadow的密碼欄有一個是空白,該使用者就可不需密碼登入,若是兩者密碼欄都是空白,也可不需密碼登入。 (3) /etc/group groupname: x : 510 : 群組名稱 群組密碼 GID 加入此群組的username # grpunconv及# grpconv同user原理。 (4) /etc/gshadow存放group編碼後的密碼。一般群組不設密碼。 2. User and Group Management Commands ( root方有權使用 ) (1) useradd:新增使用者帳號 使用useradd指令時,等於進行以下行為: 於 /etc/passwd加入帳號資料 → 將編碼後的密碼置 /etc/shadow → 於 /etc/group建立群組 → 建立家目錄在 /home/username → 將 /etc/skel 中的隱藏檔複製一份至家目錄下。 參數:-d:指定家目錄。 -g:指定預設群組,可用群組名稱或GID。 -G:指定所屬多群組(附屬群組),可同時指定多個群組名稱或GID,如group01,group02或501,502。 -s:指定使用者所使用的shell。 -m:製造家目錄。 -e:帳號有效期限(09/24/2002) -c:備註。 -u:指定使用者UID。 -D:系統預設值。 一般使用 useradd指令時,其預設值在 /etc/default/useradd內。 若我們執行 # useradd –D –s /bin/ksh ,代表新增使用者時使用 預設的shell為ksh,亦可直接修改 /etc/default/useradd。 另外一個相關檔案為 /etc/login.defs 可自行參考看看。 例:# useradd –m –d /home/mary –s /bin/sh –u 600 vivian → 新增一使用者vivian,其家目錄為 /home/mary,使用的 shell為sh,uid為600。 # passwd vivian → 建立使用者密碼。 # useradd –m barry # passwd barry → 然後會要求您輸入兩次密碼作確認的動作。 用同樣方式新增另一使用者mary。然後使用groupadd指令 新增一個群組group01: # groupadd group01 再來使用usermod指令對已存在的使用者預設項目作修改: # usermod –g group01 barry → 將barry的預設群組改成group01,可由passwd檔案的內容看出其GID已改成group01的GID。 # usermod –G group01 mary → 將mary加入group01群組中,此時我們可由 /etc/group 檔案中發現mary已附屬在group01群組當中。 我們也可用 # id mary 及 # id barry比較一下不同處。 另外可用 # groups barry來看barry 的預設群組及附屬群組。 # usermod –e 12/30/2003 vivian → 修改vivian的帳號有效期限為2003年12月30日。 日期的另一種寫法:2003-12-30或03-12-30。 若要恢復預設值 ( 無限定帳號期限 ),可執行: usermod –e “” vivian,有的版本亦可執行如下: usermod –e 0 vivian # chage –l vivian → 看vivian帳號密碼相關設定。 (2)userdel:刪除使用者帳號。 -r:連同使用者的家目錄一起刪除。 例:# userdel –r user01 (3)usermod:參數同useradd ( -D除外 ),-l → 改變使用者登入帳號。 例:# usermod –d /home/david barry → /etc/passwd中barry的家目錄有改為david,但 /home底下沒改,還是barry。所以須執行以下: home# mv barry david 這樣barry登入時才有david家目錄可用。若配合-m參數執行如下: # usermod –d /home/barry –m barry → 這樣 /etc/passwd及 /home的家目錄都已改成barry。 # usermod –l michael barry → 將帳號barry改成michael。這裡只是改變登入帳號為 michael,家目錄仍為barry。若要連家目錄一起更改: # usermod –d /home/michael –m michael (4)groupadd:新增群組。 -g:指定群組GID,其後不能接群組名稱。 例:# groupadd –g 510 group01 (5)groupmod: -g:修改群組GID。 -n:修改群組名稱。 例:# groupmod –n group02 group01 →將group01名稱改成group02 (6)groupdel:刪除群組。 例:# groupdel group01 (7)passwd:設定使用者密碼及鎖住、解除密碼、刪除使用者密碼。 -l ( lock ):鎖住使用者密碼。 -u ( unlock ):解除使用者密碼。 -d ( delete ):刪除使用者密碼,該使用者登入時,就可不須密碼而直接登入。 註:Openlinux版本無法使用 –d 參數。 例:# passwd –l user01 =>鎖住user01密碼。 # passwd –u user01 =>解除鎖住的密碼。 # passwd –d user01 =>刪除user01密碼。 (8)gpasswd:administer /etc/group file and /etc/gshadow file 此指令若不加參數,為設定群組密碼。 -a:增加使用者至群組中 ( 附屬群組 )。 -d:將使用者從附屬群組中移除。 -r:將群組密碼移除。 例:# gpasswd –a user01 group01 → 將使用者user01加入group01群組中。 # gpasswd –d user01 group01 → 將使用者user01從group01群組中移除。 # gpasswd –r group01 → 移除群組密碼。 (9)chage:change user password expiry information -m:使用者可變更密碼的最少天數。 -M:設定密碼最大期限,使用者需在期限內編更密碼。 -d:最後變更密碼的時間MM/DD/YY(YY-MM-DD),預設為更改密碼當日(也可設定非當日時間)。 -I:密碼期限到期後所能閒置的天數,一過則密碼將被鎖住。 -W:密碼期限到期前,對使用者提出警告的天數。 -E:帳號期限, MM/DD/YY或YY-MM-DD。 -l:只看帳號密碼設定情形。 例:# chage –m 7 –M 30 -I 5 –W 3 –E 02-12-31 –d 6/12/02 \ user01 # chage –l user01 # cat /etc/shadow → 比較上面兩式,另外可用: # chage user01 → 進入交談模式進行設定,可達相同設定效果。 <綜合>欲讓使用者暫時無法登入的做法: ˙# passwd –l username ˙# chage –E 02/20/2001 username → 將account有效日期設定過去的時間。若要恢復原預設值可: ˙# chage –E “” username或 # chage –E 0 username ,視版本而定。 ˙# usermod –e 02/5/01 username → 同上。 ˙# vi /etc/passwd → 將使用者的密碼欄更改成”*” (redhat)。 也可將shell改成 /sbin/nologin或 /bin/false。 <註> chage –l username中 Maximum + Last Change = Password Expires 天數 日期 日期 Password Expires+Inactive = Password Inactive 日期 天數 日期 二. Create、Monitor、and Kill Process 行程 ( 程序 ) 管理 1. Processes ( 程序or行程 ): Each program running on your system is a process. 每個process,系統會分配一個number給它,此number稱Process ID ( PID ),PID是唯一的、不可重複的整數 ( interger )。 在Linux中,一程式可同時執行多個程序,每個process各有其唯一的number。 系統於開機後執行的第一個程序為init,其PID為1(由Kernel執行init)。 2. Process Monitoring commands (1)ps:不加參數,會顯示使用者所在終端機上的程序。 -a:顯示所有終端機上的程序,需搭配 –x (including other users)。 -u:與ps類似,多出username、cpu記憶體使用及其它資訊。 -x:顯示所有程序。( 含daemon processes 系統程序 ) -w:Wide output format e:show the environment f:Forest mode 樹系結構 例:$ ps aux =$ ps –aux $ ps auxw $ ps –ef ( 不等於 ps ef ) 所以欲看系統上所有程序 ( 含daemon ) 有: $ ps aux ( ps ax 亦可 ) $ ps –ef $ pstree =>顯示父行程、子行程的樹狀結構。 $ pstree –a ( -c、-p…皆可 ) $ top (2)top:動態更新程序管理指令 ( man ps → /sleep ) $ top →輸入指令後,可看到很多訊息。 第一部分顯示系統資訊,包括已開機時間、登入人數、系統平均負載(1分.5分.15分)、行程數統計、CPU、記憶體及SWAP使用狀態等等。 第二部分顯示動態行程資訊,其各欄位意義如下: PRI:The priority of the task. NI :The nice value of the task. RSS:佔用實體記憶體大小 ( kb ) SHARE:共享記憶體大小 ( kb ) → shared memory是指同一記憶體區段被一個以上的行程 所分享。 STAT:R ( running ) S ( sleeping ) T ( stop ) → 等於暫停 ctrl+z W ( swap):不常使用到的行程,放置換區(RSS:0) D ( uninterruptible sleep ):不間斷睡眠,與R類似。 < :表高優先權,當nice值小於0時會顯示。 N:表低優先權,當nice值大於0時會顯示。 Z ( Zombie ) 僵屍,表行程當掉。 以上STAT代號亦可適用於PS aux中,而於PS aux中的TTY為?者,表不占終端機。 若要離開top,按q鍵 。 底下就來談談top畫面中的按鍵說明: h => 顯示top按鍵功能說明,看完說明後,按任意鍵繼續。 k => kill process,按下k後,接著輸入PID,enter後出現 Kill PID number with signal〔15〕:的敘述,直接按enter 就可殺掉該程序,若殺不掉可輸入9來強迫終止。若按下k後欲取消,直接enter即可。 u => 只看此user的行程。看完後要回上個畫面按u,再按 enter就可回原畫面。 s => top畫面更新的秒數(second)。 r => 重設優先權(renice)。 P => 按佔用CPU的百分比做排序。 M => 按佔用記憶體的百分比做排序。 q => 離開。 <說明>優先權:範圍 -20~19,0為預設值,-20為最高優先權。 19為最低優先權。 3. Modify Process Priorities ( -20 ~ 19 ) (1)nice:對程序設定優先權的指令,預設為0。 一般user只能設大於0的數字(低優先權),只有root有權設小於0的數字(高優先權)。 例:$ nice –n 10 top = $ nice -10 top $ nice –n -2 ls –laR / => Permission denied # nice –n -10 top = # nice --10 top (2)renice:user所能設定數字權限同nice。 renice為重新設定已執行程式的nice值。 例:$ renice 5 1917 →對PID為1917者,重設其優先權為5。 # renice -2 –u barry重設使用者barry所有程序優先權為-2。 # renice -15 -p 1917 =>-p為預設,可省略。 註:對一般使用者而言: ˙只能設定大於0的nice值。 ˙nice值一旦調高後 ( 低優先權 ) 就不能再調低。 ˙只能設定及調整自己程序的nice值。 4. Jobs control ( 工作管理 ) 當您輸入一指令,或者藉由pipe輸入多指令時,就已經新增一個job,故一job可包含多程序。而您只能在前景 ( foreground ) 執行一個job,但可在背景 ( background ) 執行多個jobs ( 同一終端機下 )。 例:$ vi file →ctrl+z(暫停suspend) $ top →ctrl+z $ cat /etc/termcap | less →ctrl+z $ jobs →可看到有編號1.2.3等三個工作暫停。 ( “+” 表最後一個job, ”-” 表倒數第二個job ) $ jobs –l →可看到3個工作有4個程序(4PID)。 $ fg %2 →工作編號2 ( top ) 回前景執行。 若只輸入fg ( $ fg ) 則執行最後一個工作,即cat /etc/termcap | less $ bg %1 →回背景執行。 $ kill %3 →結束編號3的工作。 5. Signals:A signal is a communication sent to a process. You can use the kill command to send a signal to a process. $ man 7 signal (1) SIGHUP(1):讓程式重新讀取設定檔內容。 (2)SIGSTOP(19):暫停程序 ( 類似前景執行時按ctrl+z ) (3)SIGTERM(15):終止程序,此乃系統預設值。 (4)SIGKILL(9):強迫終止行程。 (5)SIGINT(2):似前景執行ctrl+c,例如使用者由一終端機登入執行 $ ping 168.95.1.1,然後root由另一終端機登入執行 # killall –INT ping 再回client所登入的終端機上看結果。 在對程序送出信號前,最好能先查其PID。(ps aux) 例:$ kill –l →看有哪些signal可用。 $ kill –STOP 10250 →-STOP可用以下代替 –stop -19 -SIGSTOP -sigstop $ kill -TERM 10255 = $ kill 10255 -15 $ kill –HUP `cat /var/run/xinetd.pid` ( 或cat /var/run/inetd.pid ) $ kill –HUP `pidof xinetd` ( kill –HUP `pidof inetd` ) $ kill –kill 9885 9886 -9 $ killall vi ( 可終止所有vi的程序 ) $ killall –TERM top ( killall非接PID,而是接程式名稱 ) $ kill -9 %2 =>將暫停或背景工作強迫終止。 6. nohup:一般在父行程終止時,其下子行程亦終止,所以在登出後,shell下的所有程序都會終止,但若想在登出後,程序能繼續執行,便要使用nohup ( 忽略父行程終止 )。 例:$ nohup ls –laR / & →立刻logout再login時,發現多一個nohup.out 的檔案,此檔案即為上述程式所執行的內容。
__________________ 如果您覺得"文章小說討論區"所發的主題不錯 請不要吝嗇 在主題 " 點閱" 及 並給予 發文者一些鼓勵 --------------------------------------------- 為了防止世界被破壞 為了保護世界的和平 貫徹下載與燒錄的邪惡 可愛又迷人的盜版角色 MP3....Program... 我們是穿梭在網際網路中的盜版大隊~~ 拷貝 拷貝的明天正等著我們~~ 就是這樣....喵~~@@ |