使用者管理
Home Up

 

 

超級使用者 root - The Super User
root是UNIX作業系統安裝過程中即已建立之特殊使用者(root、adm、bin、
daemon、uucp…)中最為重要的一個(root之uid為0),系統任何維護或變更,
均需透過此一使用者完成之。

root 擁有至高無上的權力,可以bypass所有系統安全檢查,不受任何權限的
約束﹔root可以讀取、修改或刪除系統上任一個檔案、更改檔案屬性(權限、
擁有者、群組…),改變系統設定及執行一些特殊指令。

root是一個危險性相當高的帳號,管理者應以戒慎小心的心情使用它,使用
不慎很可能造成無可挽回的大災難! root帳號使用的方式一般有兩種:
(1).以root的身分直接login。
(2).以一般user身分執行指令/bin/su,並輸入root密碼後成為root。

root帳號使用的管理 - "事後追查" 及"事前限制"
事後追查 – 系統auditing
事後追查責任的做法,藉助UNIX作業系統auditing的功能,一般而言技術
上及程序上沒有什麼問題。知道root密碼者可能不只一人,有時追查所得
資料,並沒有太大意義,然而事後追查雖並不能讓受損系統恢復正常,但畢
竟追緝元兇總是預防人為故意或無意疏失一個有效的方法。
透過系統auditing,我們可以知道誰,什麼時候,做過什麼事情;也可了解
系統的運作歷史。

事前限制 – 保密防諜
事前限制指的是root密碼的保密及root帳號使用限制,希望做到的是不讓
不必要之人員知悉root密碼,同時盡量不讓root可以直接進入系統(以上
所提之第二種方式),以增加auditing的精確性。一般由於管理上的需要,
知道root密碼的人可能不只一人,限制root進入系統的方式,一方面可以
增加root使用之安全性,另一方面也可以使auditing的資料之意義更精確,
多少具有對root帳號之使用警示之作用

系統auditing - last、lastcomm & /var/adm/messages
last 指令 – 查詢使用者(包括root)進入系統記錄。這個指令顯示的使用
者記錄包括使用者進入系統的時間、退出系統的時間、進入系統所使用的
機器IP Address,及停留再系統的時間。
Example
cc201:~# last|more
root ttyp0 140.120.2.110 Wed Mar 19 14:05 still logged in
edu ttyp0 140.120.2.110 Wed Mar 19 14:04 - 14:05 (00:00)
woody ttyp0 140.120.2.110 Wed Mar 19 14:04 - 14:04 (00:00)
root ttyp0 140.120.2.110 Wed Mar 19 14:00 - 14:03 (00:03)
root tty1 Wed Mar 19 13:56 - 13:57 (00:00)
runlevel ~ Wed Mar 19 13:56
reboot ~ Wed Mar 19 13:56
shutdown ~ Wed Mar 19 13:54
runlevel ~ Wed Mar 19 13:54

lastcomm 指令 – 查詢使用者(包括root)使用指令之記錄,這個指令顯
使用者在何時、使用過什麼指令。這個auditing指令存在於決大部分的
UNIX版本上。(But Not Linux!!)
Example(generated on Sun Solaris system)
woody@honda: ~ 4 >lastcomm |head
lastcomm woody pts/10 29.80 secs Wed Mar 19 13:53
more woody pts/10 0.09 secs Wed Mar 19 13:53
lastcomm woody pts/10 1.19 secs Wed Mar 19 13:53
biff woody pts/10 0.11 secs Wed Mar 19 13:53
stty woody pts/10 0.09 secs Wed Mar 19 13:53
mail woody pts/10 0.30 secs Wed Mar 19 13:53
cat woody pts/10 0.09 secs Wed Mar 19 13:53
quota woody pts/10 0.28 secs Wed Mar 19 13:53
pt_chmod S root __ 0.08 secs Wed Mar 19 13:53
in.telne root __ 0.39 secs Wed Mar 19 12:38
….

/usr/adm/messages (On Linux) 檔案 – 記錄系統一些重要事件,包括
Email傳送及接收狀況、使用者資料變動情形及/bin/su指令狀況

Example(On Linux)
nmc:/usr/adm# cat vi messages
….
Dec 7 11:36:59 nmc sendmail[3365]: LAA03365: from=woody, size=58, class=0, pri=
Dec 7 11:37:15 nmc sendmail[3365]: LAA03365: to=woody@nchu.edu.tw, ctladdr=wood
Dec 7 11:37:51 nmc sendmail[3371]: LAA03371: from=<woody@audi.nchu.edu.tw>, siz
Dec 7 11:37:53 nmc sendmail[3372]: LAA03371: to=<woody@nmc.nchu.edu.tw>, delay=
Dec 7 11:43:20 nmc in.telnetd[3396]: connect from 140.120.2.110
Dec 7 11:44:18 nmc su[3403]: - ttyp4 woody-root
Dec 7 11:44:25 nmc su[3404]: + ttyp4 woody-root

上例中可以看出:
Dec 7 11:36:59 local user woody 曾經寄信給 woody@audi.nchu.edu.tw,
Dec 7 11:37:51 woody@audi.nchu.edu.tw 曾經寄信給 local user woody,
Dec 7 11:43:20 user "woody" 經由140.120.2.110 telnet 進入系統,
Dec 7 11:44:18 user "woody"曾經嘗試成為root失敗,A
Dec 7 11:44:25 user "woody"成功的su成為super user。

***root可以使用 su username指令,成為任何一個user。(無須輸入密碼)

限制直接使用root進入系統
在linux作業系統下,可以藉著編輯/etc/securetty這個檔案,限制root可由哪
些方式進入系統。
Example 1:
cc201:/etc# cat /etc/securetty
console
tty1
tty2
tty3
tty4
tty5
tty6
ttyp0
ttyp1
ttyp2
ttyp3
上例允許root從終端機(console、tty1~tty6)及網路(ttyp0~ttyp3)直接進入系
統。(以root 身分login)

Example 2:
cc201:/etc# cat /etc/securetty
console
tty1
tty2
tty3
tty4
tty5
tty6
上例只允許root直接從終端機進入系統。

Example 3:
cc201:/etc# rm /etc/securetty
移除或讓/etc/securetty成為空檔,則完全不允許root直接login。


使用者管理

/etc/passwd
/etc/passwd是記錄所有系統user資料的檔案,所記錄的資料包括username、password(經過系統加密後之密文,shadow 版本的passwd此項為符號"x")、user id、group id、comment ( 關於user之基本資料,此為一說明項目)、user home directory、user's default shell。
每一個user在/etc/passwd中均有一行描述其本身之資料,其資料共有7個欄位,其間並以符號" : "區隔之。以下以user root為例,說明每一欄位的意義:

root:sWJw6DpG5oE8I:0:0:root:/root:/bin/bash

username: root,這是user login 系統必須輸入作為身分辨認的字串,username在/etc/passwd中必須唯一。

password: sWJw6DpG5oE8I,這是user密碼經過加密後處理過後之結果,由於加密過程加入所謂"slat"的參數,同樣的密碼所得加密之結果並不相同,這個欄位會跟user輸入之密碼經系統加密後之結果比對,作為是否允許使用者進入系統之依據。UNIX系統中密碼加密的過程是不可逆的,因此無法以倒推之方式求的使用者的密碼—即使是super user也作不到。(shadow版本的passwd欄位為符號"x",真正password存在檔案/etc/shadow中)

uid: 0,其實真正用來辨別user的是uid而非username,建立user時uid必須(最好)唯一存在。root之uid固定為0。

gid: 0,這個欄位是user default所屬的群組名稱。

comment: root,這個欄位是/etc/passwd 7個欄位中唯一沒有作用的欄位,你可以將關於user相關資料,以任何格式(除字元": "外)填寫於此。這欄位最主要為輔助管理者了解user。

home: /root,這欄位記載的是user的home directory。User login系統後,
系統會自動將其工作目錄改變至此,通常此一目錄之owner應為
此一User。

Default shell: /bin/bash,這是user login 系統後default shell。

/etc/shadow
這是為了加強使用者管理安全機制,而存在的一個檔案,檔案的屬性為600(rw- --- ---)。此檔案管理與使用者密碼有關的事項,每一位使用者在這個檔案中,均應擁有一行,9 個欄位的密碼相關資料。這9個欄位包括使用者名稱、使用者加密過之密碼、使用者最後一次更改密碼的時間、限制使用者無法更改密碼的時間、限制使用者必須更改密碼的時間、密碼過期前使用者開始警告使用者的時間、使用者密碼到期後帳號被停用時間、帳號密碼到期的時間及一個未使用的欄位。這些欄位的設定,通常在使用者帳號建立之時候(由adduser程式)進行之,並於使用者使用帳號時,由系統自動更新。以下是這9個欄位所代表意義的簡單說明:

  1. Login name:
    這是使用者名稱,與/etc/passwd相呼應。
  2. passwd:
    使用者密碼(加密過之結果)
  3. 使用者最後一次更改密碼的時間
    這個欄位是個數字,單位是日,計算是以1970年1月1日起算。例如
    22代表1970/1/23。代表的意義是該使用者最後依次更改密碼的時間是
    1970/1/23。
  4. 限制使用者無法更改密碼的時間
    計算同。22代表的意義是該使用者在1970/1/23前,無法更改自己
    的密碼。
  5. 限制使用者必須更改密碼的時間
    計算同。22代表的意義是該使用者在1970/1/23前,必須更改密碼,
    否則帳號將自動停用。
  6. 密碼過期前使用者開始警告使用者的時間
    單位是日。例如7代表密碼過期前7天開始警告使用者。系統預設值是
    7天。
  7. 使用者密碼到期後帳號被停用時間
    單位是日。例如7代表密碼過期後7天取消帳號。
  8. 帳號密碼到期的時間
    計算同 3。
  9. 保留欄位

****/etc/passwd 與 /etc/shadow建議盡量不要以手動方式更動,以免因不小
心而破壞系統中所有使用者的資料。

Add an user
方式一 : with command "adduser"(on linux)
Example:
cc201:~# /sbin/adduser

Adding a new user. The username should not exceed 8 characters
in length, or you may run into problems later.

Enter login name for new account (^C to quit): user1

Editing information for new user [user1]

Full Name: test user
GID [100]:
Group 'users', GID 100
First unused uid is 503

UID [503]:

Home Directory [/home/user1]:

Shell [/bin/bash]: /bin/tcsh

….

Password [user1]:
Information for new user [user1]:
Home directory: [/home/user1] Shell: [/bin/tcsh]
uid: [503] gid: [100]

Is this correct? [y/N]: y

Adding login [user1] and making directory [/home/user1]

Adding the files from the /etc/skel directory:
./.less -> /home/user1/./.less
./.lessrc -> /home/user1/./.lessrc

方式二 : 以手動方式建立(除非必要,盡量少用)
adduser這個指令做了以下事情
(1).改變/etc/passwd內容,並依據所給資料,建立屬於新user "user1"的欄
位。
(2). 改變/etc/shadow內容,並依據所給資料,建立屬於新user "user1"的欄
位。
(2).建立user1的目錄(/home/user1),並將該目錄owner改為user1。
(3).把必要的初始shell script copy 該user之目錄之下。
(4).給定user1初始password。
這些動作都可以用手動方式完成,這是建立user的第二種方法﹔其步驟如
下所述。
Step1.
將下列文字加入/etc/passwd中
user1:x:503:100:test user:/home/user1:/bin/tcsh
(請注意uid必須唯一,gid則必須依照你的系統規劃給定)

Step2. 將下列文字加入/etc/shadow中
user1::10563:0:99999:7:::
(你必須充分了解/etc/shadow中每一數字所代表的意義,以確保帳號可用)
Step 3.
mkdir /home/user1
chown user1 /home/user1
chgrp users /home/user1

Step4.
cp /etc/skel/.less /home/user1 ; cp /etc/skel/.lessrc /home/user1
chown user1 /home/user1/.less /home/user1/.lessrc
chgrp users /home/user1/.less /home/user1/.lessrc

Step5.
cc201:/etc/skel# passwd user1
Changing password for user1
Enter new password:
Re-type new password:
Password changed.

Delete an User
方式一:使用指令deluser or userdel

方式二:以手動方式刪除
Step1.
編輯/etc/passwd及/dec/shadow,將user帳號自檔案中刪除。
Step2
刪除user home directory。

停用一個帳號

方式一 : With UNIX Command
passwd –l user_name

方式二 : 手動停用
停用一個帳號非常簡單,只需將/etc/shadow該user的帳號的password欄
位用字元"*"取代之即可。例如你要停用帳號woody,只需把/etc/passwd
中woody這一行改成向下面這個樣子即可:
woody:*:501:100:woody:/home/woody:/bin/tcsh

恢復帳號
方式一 (if User is disabled by 『passwd –l』)
passwd –u user_name

方式二
重新給停用帳號一個密碼(with command "passwd woody",或把該帳號
password之欄位(in /etc/shadow)設成null(not a space, just nothing at all)即可。
第二種方式user無須密碼即可進入系統。

建置及維護者:
國立中興大學 電算中心    吳賢明   woody@nchu.edu.tw
本網頁最近更新時間:2000/06/10 上午 08:59:20