返回   ShareGet 社群討論 > ≡ 電腦網路 ≡ > □ -- Unix & Linux

發表新主題 回覆
 
主題工具 顯示模式
  #1  
舊 2005-12-04, 12:54 PM
kazaya 的頭像
原來傷害最深的
 
註冊日期: 2004-05-31
來自: 是那些不肯同你說真話的人
文章: 8,847
給予: 45 | 感謝 222 | 共 123 篇
積分: 25189 | 給分能力: 98
[轉貼] 第三章 Administrative Tasks

第三章 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...  我們是穿梭在網際網路中的盜版大隊~~
拷貝 拷貝的明天正等著我們~~
就是這樣....喵~~@@
回覆時引用此文章
發表新主題 回覆

書簽

主題工具
顯示模式

發文規則
不可以發表新主題
不可以發表回覆
不可以上傳附件
不可以編輯自己的文章

啟用 BB 代碼
論壇啟用 表情符號
論壇啟用 [IMG] 代碼
論壇禁用 HTML 代碼
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 禁用
論壇跳轉


所有時間均為GMT -5。現在的時間是 09:54 PM


Powered by vBulletin® Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.