Linux 帳號與身份管理

←手機掃碼閱讀     火星人 @ 2014-03-24 , reply:0

帳號管理:
  管理員的工作中,相當重要的一環就是『管理帳號』啦!因為整個系統都是你在管理的,並且所有的一般用戶的申請,都必須要透過你的協助才行!所以你就必須要了解一下如何管理好一個網站的帳號管理啦!在管理 Linux 主機的帳號時,我們必須先來了解一下 Linux 到底是如何辨別每一個使用者的!
  · 使用者的 ID 與群組的 ID :
  其實 Linux 並不會直接認識你的『帳號名稱』,他認識的其實是你的『帳號 ID 』才是!如果你曾經以 tarball 安裝過軟體的話,那麼應該不難發現,在解壓縮之後的檔案,嘿~檔案擁有者竟然是『不明的數字』?奇怪吧?這沒什麼好奇怪的,因為 Linux 說實在話,他真的只認識代表你身份的號碼而已!而對應的號碼與帳號,則是記錄在 /etc/passwd 當中!
  · 怎樣登入 Linux 主機呀?
  好了,那麼我們再來談一談,到底我們是怎樣登入 Linux 主機的呢?其實也不難啦!當我們在主機前面或者是以 telnet 或者 ssh 登入主機時,系統會出現一個 login 的畫面讓你輸入帳號,這個時候當你輸入帳號與密碼之後, Linux 會:
  1. 先找尋 /etc/passwd 裡面是否有這個帳號?如果沒有則跳出,如果有的話則將該帳號對應的 UID ( User ID )與 GID ( Group ID )讀出來,另外,該帳號的家目錄與 shell 設定也一併讀出;
  2. 再來則是核對密碼錶啦!這時 Linux 會進入 /etc/shadow 裡面找出對應的帳號與 UID,然後核對一下你剛剛輸入的密碼與裡頭的密碼是否相符?
  3. 如果一切都 OK 的話,就進入 Shell 控管的階段??
  大致上的情況就像這樣,所以呢,當你要登入你的 Linux 主機的時候,那個 /etc/passwd 與 /etc/shadow 就必須要讓系統讀取啦,(這也是很多攻擊者會將特殊帳號寫到 /etc/passwd 裡頭去的緣故!)所以呢,如果你要備份 Linux 的系統的帳號的話,那麼這兩個檔案就一定需要備份才行呦!
  · 認識 UID、GID、SUID與SGID:
  還記得我們在『?n案系???n案?儺浴荒且黃?惱碌氖焙蠐刑岬矯懇桓齙蛋付季哂小河滌腥擻胗滌腥鶴欏壞氖糶月穡磕敲吹蛋溉綰聞斜鶿?撓滌姓哂餚鶴檳兀科涫稻褪搶? UID 與 GID 啦!每一個檔案都會有所謂的擁有者 ID 與擁有群組 ID ,亦即是 UID 與 GID ,然後系統會依據 /etc/passwd 的內容,去將該檔案的擁有者與群組名稱,使用帳號的形式來秀出來!我們可以作個小實驗,你可以以 root 的身份 vi /etc/passwd ,然後將你的一般身份的使用者的 ID 隨便改一個號碼,然後再到你的一般身份的目錄下看看原先該帳號擁有的檔案,你會發現該檔案的擁有人變成了『數字了』呵呵!這樣可以理解了嗎?
  
  [root @test /root]# vi /etc/passwd
  root:x:0:0:root:/root:/bin/bash
  bin:x:1:1:bin:/bin:/sbin/nologin
  daemon:x:2:2:daemon:/sbin:/sbin/nologin
  adm:x:3:4:adm:/var/adm:/sbin/nologin
  test:x:500:500:test user:/home/test:/bin/bash <==將 500 改成 510 
  [root @test /root]# cd /home/test
  [root @test test]# ll 
  -rw-rw-r--  1 500   test    12542 Apr 12 11:22 test
  看上面,擁有這變成了數字了~
  
  · 認識 /etc/passwd 檔案與 /etc/shadow 檔案:
  這兩個檔案可以說是 Linux 裡頭最重要的檔案之一了!如果沒有這兩個檔案的話,呵呵!您可是無法登入 Linux 的呦!
  o passwd 的構造:
  這個檔案的構造是這樣的:每一行都代表一個帳號,有幾行就代表有幾個帳號在你的系統中!不過需要特別留意的是,裡頭很多帳號本來就是系統中必須要的(例如 bin, daemon, adm, nobody 等等),請不要隨意的殺掉他~~;
  
  o [root:x:0:0:root:/root:/bin/bash
  bin:x:1:1:bin:/bin:/sbin/nologin
  daemon:x:2:2:daemon:/sbin:/sbin/nologin
  adm:x:3:4:adm:/var/adm:/sbin/nologin
  o 上面是 Red Hat 預設的幾個帳號,這些帳號是系統在使用的呦!我們先來看一下 root 這個系統管理員這一行好了,你可以明顯的看出來,每一行使用『:』分隔開,共有七個咚咚,分別是:
  1. 帳號名稱:就是帳號名稱啦!對應 UID 用的!例如 root 就是預設的系統管理員的帳號名稱;
  2. 密碼:早期的 Unix 系統的密碼是放在這個檔案中的,不過由於這樣一來很容易造成資料的被竊取,所以後來就將資料給他改放到 /etc/shadow 中了,這一部份等一下再說,而這裡你會看到一個 x ,呵呵!別擔心密碼已經被移動到 shadow 這個加密過後的檔案??
  3. UID:這個就是使用者識別碼(ID)??⊥ǔ Linux 對於 UID 有幾個限制需要說給您了解一下:
  1. 0 :系統管理員,所以當你要作另一個系統管理員帳號時,你可以將該帳號的 UID 改成 0 即可;
  1~500 :保留給系統使用的ID,其實 1~65534 之間的帳號並沒有不同,也就是除了 0 之外,其它的 UID 並沒有不一樣,
       預設 500 以下給系統作為保留帳號只是一個習慣。
       這樣的好處是,以 named 為例,這個程序的預設所有人 named 的帳號 UID 是 25 ,當有其它的帳號同樣是 25 
       時,很可能會造成系統的一些小問題!為了杜絕這樣的問題,建議保留 500 以前的 UID 給系統吧!
  500~6553 :給一般使用者用的!
  1.
  上面這樣說明可以了解了嗎?是的, UID 為 0 的時候,就是 root 呦!所以請特別留意一下你的 /etc/passwd 檔案!
  2. GID:這個與 /etc/group 有關!其實 /etc/group 的觀念與 /etc/passwd 差不多,只是他是用來規範 group 的而已!
  3. 說明:這個欄位並沒有什麼用途,只是用來解釋這個帳號的意義而已!
  4. 家目錄:這是使用者的家目錄,以上面為例, root 的家目錄在 /root ,所以當 root 登入之後,馬上在的所在就是 /root 裡頭啦!呵呵!如果你有個帳號的使用空間特別的大,你想要將該帳號的家目錄移動到其它的硬碟去,沒有錯!可以在這裡進行修改呦!預設的使用者家目錄在 /home/yourIDname
  5. Shell :所謂的 shell 是用來溝通人類下達的指令與硬體之間真正動作的界面!我們通常使用 /bin/bash 這個 shell 來進行指令的下達!關於 shell 的用法我們會在後面再提及的!這裡比較需要注意的是,有一個 shell 可以用來替代成讓帳號無法登入的指令!那就是 /bin/false 這個東西!這也可以用來製作純 pop 郵件帳號者的資料呢!
  o shadow 的構造:
  由於 /etc/passwd 並不安全,所以後來發展出將密碼移動到 /etc/shadow 這個檔案中分隔開來的技術!並且加入了很多的限制參數在 /etc/shadow 裡頭!我們來了解一下這個檔案的構造吧!
  o root:$K.K2.hqu.QfV.dkjjteojiasdlkjeo:11661:0:99999:7:::
  bin:*:11661:0:99999:7:::
  daemon:*:11661:0:99999:7:::
  adm:*:11661:0:99999:7:::
  o 這是 shadow 的形式,也同樣的以『:』作為分隔的符號。數一數,共可以發現有九個欄位,分別給他說明如下:
  1. 帳號名稱:這個跟 passwd 需要對應!也就是跟 passwd 相同的意思啦!
  2. 密碼:這個才是真正的密碼,而且是經過編碼過的密碼啦!你只會看到有一些特殊符號的字母就是了!需要特別留意的是,雖然這些加密過的密碼很難被解出來,但是『很難』不等於『不會』,所以,這個檔案的預設屬性是『-rw-------』亦即只有 root 才可以讀寫就是了!你得隨時注意,不要不小心更動了這個檔案的屬性呢!另外,如果是『 * 』表示這個帳號並不會被用來登入的意思。
   
  注意事項:密碼忘記或者被更動了?有的時候會發生這樣的情況,就是說,你的 root 密碼忘記了!要怎麼辦?重新安裝嗎?另外,有的時候是被入侵了, root 的密碼被更動過,該如何是好?這個時候就必須要使用到 /etc/shadow 這個資料了!我們剛剛知道密碼是存在這個檔案中的,所以只要你能夠以軟盤開機,進入『單人維護系統』,那麼就可以不用輸入密碼來以 root 的身份登入(通常就是在 boot: 時輸入 linux single 就是了!)然後進入 /etc/shadow 這個檔案中,將 root 的密碼這一欄全部清空!然後再登入 Linux 一次,這個時候 root 將不需要密碼(有的時候需要輸入空格符)就可以登入了!這個時候請趕快以 passwd 設定 root 密碼即可!
  3. 上次更動密碼的日期:這個欄位記錄了『更動密碼的那一天』的日期,不過,很奇怪呀!在我的例子中怎麼會是 11661 呢?呵呵,這個是因為計算 Linux 日期的時間是以 1970 年 1 月 1 日作為 1 ,而 1971 年 1 月 1 日則為 366 啦!所以這個日期是累加的呢!得注意一下這個資料呦!那麼最近的 2002 年 1 月 1 日就是 11689 啦,上面的日期則是 2001 年 12 月 5 日的意思!了解了嗎?
  4. 密碼不可被更動的天數:第四個欄位記錄了這個帳號的密碼需要經過幾天才可以被變更!如果是 0 的話,表示密碼隨時可以更動的意思。這的限制是為了怕密碼被某些人一改再改而設計的!如果設定為 20 天的話,那麼當你設定了密碼之後, 20 天之內都無法改變這個密碼呦!
  5. 密碼需要重新變更的天數:由於害怕密碼被某些『有心人士』竊取而危害到整個系統的安全,所以有了這個欄位的設計。你必須要在這個時間之內重新設定你的密碼,否則這個帳號將會暫時失效。而如果像上面的 99999 的話,那就表示,呵呵,密碼不需要重新輸入啦!不過,如果是為了安全性,最好可以設定一段時間之後,嚴格要求使用者變更密碼呢!
  6. 密碼需要變更期限前的警告期限:當帳號的密碼失效期限快要到的時候,系統會依據這個欄位的設定,發出『警告』言論給這個帳號,提醒他『再過 n 天你的密碼就要失效了,請儘快重新設定你的密碼呦!』,如上面的例子,則是密碼到期之前的 7 天之內,系統會警告該用戶。
  7. 帳號失效期限:如果用戶過了警告期限沒有重新輸入密碼,使得密碼失效了,而該用戶在這個欄位限定的時間內又沒有跟 root 反應,讓帳號重新啟用,那麼這個帳號將暫時的失效!
  8. 帳號取消日期:這個日期跟第三個欄位一樣,都是使用 1970 年以來的日期設定。這個欄位表示:這個帳號在此欄位規定的日期之後,將無法再使用。這個欄位會被使用通常應該是在『收費服務』的系統中,你可以規定一個日期讓該帳號不能再使用啦!
  9. 保留:最後一個欄位是保留的,看以後有沒有新功能加入。
  這個 /etc/shadow 是很重要的資料,千萬不能遺失也不能被 root 以外的人看到或修改!尤其是密碼欄,因為很早之前就已經發明了『暴力計算』密碼的程序,如果你的密碼被看過了,則別人可以利用該程序去演算出你的真實密碼,呵呵,到時候可就傷腦筋了!切記切記!
  那麼什麼是 SUID 與 SGID 呢?前面有說過了!跟檔案屬性比較有相關, ??? 去看看吧!
  · 認識 /etc/group 與 /etc/gshadow 檔案:
  認識帳號與密碼是使用 /etc/passwd 與 /etc/shadow ,那麼認識 group 就是 /etc/group 與 /etc/gshadow ???K!我們也來看看這兩個檔案的構造吧!
  o 認識 /etc/group
  這個檔案可以讓你直接將帳號所要支持的群組加進來!例如你有一個帳號名稱為 myaccount ,你想要讓這個帳號可以支持 root 這個群組,則你可以直接在 /etc/group 裡面加入呢!很方便,不需要動用的指令呦!
  root:x:0:root
  bin:x:1:root,bin,daemon
  daemon:x:2:root,bin,daemon
  sys:x:3:root,bin,adm
  adm:x:4:root,adm,daemon
  o 這個內容也說明如下:
  1. 群組名稱:就是群組名稱啦!
  2. 群組密碼:通常不需要設定,因為我們很少使用到群組登入!不過,同樣的,密碼也是被紀錄在 /etc/gshadow 當中??
  3. 群組 ID:就是所謂的 GID 啦!
  4. 支持的帳號名稱:這個群組裡面的所有的帳號,如上面所言,如果你想要讓 mysccount 也屬於 root 這個群組的話,那麼就將上面的第一行最後面加上 ,myaccount (不要有空格)使成為『root:x:0:root,myaccount』就可以啦。
  o /etc/gshadow 的構造:
  root:::root
  bin:::root,bin,daemon
  daemon:::root,bin,daemon
  sys:::root,bin,adm
  adm:::root,adm,daemon
  o 這個內容與 group 幾乎相同啦!就不提了!
  · 增加使用者的一般步驟:新增使用者的時候,如果該使用者所屬的群組不存在,則得(1)先新增群組;然後(2)再新增使用者帳號。當然,如果要刪除群組時,則必須要反過來,先刪除使用者才能刪除群組!這點請大家留意??
  認識完了一些需要注意的東西之後,我們來研究一下如何以『指令』增加群組、使用者與變更密碼吧!
  · groupadd
  語法:
  · [root @test /root ]# groupadd [-g GID] groupname
  參數說明:
  -g GID :自行設定 GID 的大小
  範例:
  [root @test /root]# groupadd -g 55 testing <==設定一個群組,GID為 55
  · 說明:
  這個指令會增加群組呢!而作用到的檔案只有『/etc/group 與 /etc/gshadow』這兩個檔案,說實在的,你也可以直接修改這兩個檔案就好了,根本不需要使用到這個指令的!使用 vi 修改上面兩個檔案還比較簡單呢!另外,如果你要新增的使用者所要的群組並不存在於系統中,那麼您在增加使用者帳號之前,就必須要先新增群組???br />   · groupdel
  語法:
  · [root @test /root ]# groupdel groupname
  ??嫡f明:
  ?例:
  [root @test /root]# groupdel testing
  · 說明:
  這很簡單的,就是將 group ID 給他殺掉去!不過,有一點必須要特別留意,就是『在殺掉群組之前,請先將該群組的 primary 使用者刪除!』才好!
  · useradd
  語法:
  · [root @test /root ]# useradd [-u UID] [-g GID] [-d HOME] [-mM] [-s shell] username
  參數說明:
  -u  :直接給予一個 UID
  -g  :直接給予一個 GID (此 GID 必須已經存在於 /etc/group 當中)
  -d  :直接將他的家目錄指向已經存在的目錄(系統不會再建立)
  -M  :不建立家目錄
  -s  :定義其使用的 shell
  範例:
  [root @test /root]# useradd testing  <==直接以預設的資料建立一個名為 testing 的帳號
  [root @test /root]# useradd -u 720 -g 100 -M -s /bin/bash testing  <==以自己的設定建立帳號
  · 說明:
  這個指令能夠變更的檔案可多了!包括了底下的各個檔案:
  o /etc/passwd
  o /etc/shadow
  o /etc/group
  o /etc/gshadow
  o /etc/skel
  o /etc/default/useradd
  o /etc/login.defs
  建立預設的帳號:
  建立帳號的時候,如果沒有特殊的設定,通常我們只使用『 useradd username 』就可以建立一個名為 username 的帳號了!不過你知道預設的帳號的基本設定嗎?嘿嘿嘿嘿!基本設定就在 /etc/login.defs 與 /etc/default/useradd 這兩個檔案中!在 login.defs 裡頭有點像底下這樣:
  · MAIL_DIR    /var/spool/mail <==郵件預設目錄擺放處
  PASS_MAX_DAYS  99999      <==密碼需要變更的時間
  PASS_MIN_DAYS  0       <==密碼多久需要變更
  PASS_MIN_LEN  5       <==密碼的最小長度(這個可以改大一些吧!)
  PASS_WARN_AGE  7       <==密碼快要失效之前幾天發警告訊息?
  UID_MIN          500  <==預設帳號最小起算的 UID 數目(最小為 500 )
  UID_MAX         60000  <==最大的 UID 限制
  GID_MIN          500  <==GID 限制
  GID_MAX         60000  <==GID 限制
  CREATE_HOME   yes      <==是否建立家目錄,預設是要建立家目錄(若為 mail server 可以取消此項目)
  幾乎可以設定的都在這裡設定了!所以需要了解一下這個檔案!另外,如果你是專門開啟 mail server 的,那麼由於使用者帳號不需要登入主機,所以也就不需要給予家目錄,這個時候最後一項 GREATE_HOME 或者可以設定為 no !此外,當你以預設的資料建立帳號時,該帳號的 UID 將會取目前在 /etc/passwd 當中『最大的(其實是小於 60000)』那一個 UID + 1 即是預設帳號的 UID ???br />   而至於 useradd 內容則為:
  GROUP=100     <==預設的使用者群組為 100 ,查看一下 /etc/group 時,這個群組名稱為 users 呢!
  HOME=/home     <==預設使用者的家目錄建立的目錄
  INACTIVE=-1    <==是否不激活,設定為 -1 自然就是激活啦!
  EXPIRE=      <==是否需要設定『死亡』時間?如果你希望該用戶在期限到之後就不許登入,此項可以設定天數。
  SHELL=/bin/bash  <==預設的 Shell 為何?
  SKEL=/etc/skel   <==使用者家目錄的內容!
  在這個項目中,最需要了解的就是 SKEL 啦!當你建立一個名為 testing 的帳號時,預設的家目錄會是『 /home/testing 』這個目錄,而這個目錄的內容就是由 /etc/skel 所 copy 過去的!所以『當你想要讓使用者的預設家目錄內容更動時,可以直接將要更動的資料寫在 /etc/skel 當中!』
  以自己的條件建立帳號:
  如果要以自己的條件建立帳號的時候,一般我都是喜歡手動的增加啦!不然就是先以上面的那一個例子增加一個帳號之後,在去手動修改 /etc/passwd 等等的檔案!
  · userdel
  語法:
  [root @test /root ]# userdel [-r] username
  參數說明:
  -r :將該帳號的[home directory]與[/var/spool/mail/username]一併刪除!
  範例:
  [root @test /root]# userdel testing   <==只有砍掉 /etc/passwd 與 /etc/shadow 的該帳號內容;
  [root @test /root]# userdel -r testing <==連該帳號的 /home/testing 與 /var/spool/mail/testing 都砍掉!
  · 說明:
  這個指令下達的時候要小心了!通常我們要移除一個帳號的時候,你可以手動的將 /etc/passwd 與 /etc/shadow 裡頭的該帳號取消即可!一般而言,如果該帳號只是『暫時不啟用』的話,那麼將 /etc/shadow 裡頭最後倒數一個欄位設定為 0 就可以讓該帳號無法使用,但是所有跟該帳號相關的資料都會留下來!使用 userdel 的時機通常是『你真的確定不要讓該用戶在主機上面使用任何資料了!』
  · chsh
  語法:
  [root @test /root ]# chsh [-l] [-s shellname]
  參數說明:
  -l  :列出目前這部機器上面的能用的 shell 名稱
  -s  :改變目前的 shell 成為 shellname
  範例:
  [test @test /root]# chsh -l     <==列出本機上所有能用的 shell 名稱
  /bin/sh
  /bin/bash
  /bin/ash
  /bin/bsh
  /bin/csh
  [test @test /root]# chsh -s /bin/csh <==test 這個用戶自行改變自己的預設 shell
  · 說明:
  這是用來改變使用者自己的 shell 的指令!要注意呦,由於這個檔案能夠改變 /etc/passwd 的內容,所以他的預設屬性就有 SUID 的屬性了!通常 VBird 也都不會使用這個指令,因為直接改 /etc/passwd 就可以啦!
  · chfn
  語法
  [root @test /root ]# chfn
  參數說明:
  範例:
  [test@test test]$ chfn
  Changing finger information for test.
  Password:          <==這裡輸入新的密碼
  Name [Testing]: Testing   <==這裡輸入你要顯示的『昵稱』
  Office []: 
  Office Phone []:
  Home Phone []:
  Finger information changed.
  · 說明:
  這個指令說實在的,除非是你的主機有很多的用戶,否則倒真是用不著這個程序!這就有點像是 bbs 裡頭更改你『個人屬性』的那一個資料啦!
  · userconf
  不論怎麼說,以 useradd 與 groupadd 這兩個指令來增加群組與帳號總是不太方便!那麼有沒有比較類圖形界面的方式可以來新增使用者呢?哈哈!當然有,那就是使用 userconf 就可以啦!不過,由於這個指令預設並沒有安裝在 Red Hat 7.2 裡頭,所以請安裝一下吧!(請使用 Red Hat 7.2 第一塊光碟!)
  
  · [root @test /root ]# modprobe cdrom
  [root @test /root ]# modprobe ide-cd
  [root @test /root ]# mount -t iso9660 /dev/cdrom /mnt/cdrom
  [root @test /root ]# cd /mnt/cdrom/RedHat/RPMS
  [root @test /RPMS ]# rpm -ivh linuxconf*
  [root @tset /RPMS ]# cd
  [root @test /root ]# umount /mnt/cdrom
  這樣就將 userconf 安裝進來啦!接下來就簡單??≡諤崾咀址??率淙耄 userconf 則會出現如下的畫面:
在這個畫面中,目前我們所要使用到的功能只有:
  · User accounts
  · Group definitions
  · Change root password
  當然,其實我們關心的只有 User accounts 這一項??≡誆僮魃希?褂謾荷舷錄?灰貧?窗椎南嚀醯??褂謾?ab』鍵來使游標移動到底下的 Quit 及 Help 按鈕!
  1. 進入 User account:在 User accounts 按下 Enter 鍵,會出現:
   
  在這個畫面中,第一欄為登入的帳號,第二欄為這個帳號的名稱(可有可無),第三欄是這個帳號在這架 Linux 主機中的編號,第四欄則是這個帳號所代表的群組。你可以看到上面有個 vbird 的帳號,這個帳號的使用者是 DerMin Tsai(就使鳥哥啦),然後 vbird 這個帳號的編號是 500,而所屬的群組是 root 這一個。當然???腿繽?懊嫠檔模?話閌褂謎 UID 是由 500 起算的!
  2. 新增使用者:在上圖中按兩下『Tab』 鍵將游標移動至 Add 這一項,按 Enter,會出現:
   
  在這個畫面中,你所需要輸入的其實只有 Login name 就可以了,其它的東西系統會自動幫你設定(有 (opt) 的都是系統會自行依照 /etc/login.defs 與 /etc/defaults/useradd 的內容自行加以設定的!)。不過,如果你需要將使用者分門別類的話,最好還是設定一下比較好!
  · Login name:輸入要新增的使用者的帳號(就是 ID 啦);
  · Full name :這是這個帳號的使用者全名,這個地方是可有可無的,不會影響!
  · group :用來指定這一個 ID 的所屬群組,通常鳥哥都會將在我機器上的使用者分成幾各類別,而分別給予不同的群組,好方便管控!
  · Supplementary groups:除了主要的群組之外,Linux 還提供你其它的支持群組!不過通常不用設定就可以了;
  · Home directory(opt) :這是用來設定這個帳號使用者的家目錄。通常如果不設定的話,預設的使用者家目錄都在 /home/userID ,但是當你的硬碟容量不夠大的時候,或者想將某人移動到某一個目錄的話,就可以直接在這邊改一改??
  · Command interpreter(opt) :這是使用者預設的 Shell ,通常在 Linux 下,我們都使用 BAShell ,所以不用改啦;
  · User ID(opt) :注意喔,這個 ID 可不是前面的 login 的 ID ,這個 ID 是前面說的 Uid 編號,你可以自己設定一個大於 500 且不與其它帳號重複的 ID,也可以交由系統自動設定;
  · 設定郵件別名(alias):基本上設定完這裡就可以了,其它的保持默認值即可。不過,如果你已經有開啟了 mail 服務,而雖然你的 ID 是 vbird ,但是也想要使用另一個 ID 為 dmtsai 的時候,其實不用再設定另一個帳號,只要使用 alias 的功能即可。將游標往下移動,可以看到如下的畫面:
   
  在上面這個畫面中,將游標移動到 Email alias 這一項上面。輸入你要的別名(alias)即可。所謂的設定郵件別名 的意思是這樣的,當你想要讓 dmtsai 的郵件也傳遞到 vbird 這個帳號時,使用使用郵件別名,則系統在收到 dmtsai 這個 ID 的信件時,會將信直接傳送到 vbird 而不會使用 dmtsai。(這個項目會直接寫入 /etc/aliases 這個檔案中,我們會在後面的郵件主機裡頭再提到這個項目!)
  最常使用 郵件別名 的時候是:當一群人都想要使用同一個帳號時。例如:你是一個系統管理員,若你要進行系統維修的時候,會在兩天前發 e-mail 向你的使用者通知。如果是一個小站的話,那你可以慢慢的發個幾封信也就是了,但是當你負責的是一個幾百甚至幾千人的企業時,這樣發信是否覺得很麻煩呢?這時就可以使用 mail alias 的功能了,每個使用者的 mail alias 都可以設定為同一個虛擬帳號,例如每個人都有一個叫做 piggg 的帳號,則你只要寄信給 piggg 這個帳號時,系統會自動幫你把信傳送給每一個人喔!好用吧!關於這部份,我們會在 mail server 中再次提到!
  OK!設定完成之後,按下 『Tab』 鍵,選擇 Accept 按 Enter,這時會出現要你輸入密碼的畫面:
  
   
  請輸入這個帳號所想要的密碼。請注意,通常密碼的限制是:
  · 密碼不能與帳號相同;
  · 密碼需要超過 8 個字元;
  這是主要的限制,不過,由於你是『權力無限大的管理員』,所以密碼的形式是『不限的』(雖然沒有照規矩來時,在設定中會出現一些錯誤訊息,不過並不會影響你的設定!)。輸入完畢之後會出現在輸入一次的畫面:
  
   
  再次輸入一次密碼之後,如果出現如下的畫面,那就新增完成了!
  
  3. 新增群組:新增群組的話請選擇 Cancel 跳出到最前面的畫面,選擇 Group definitions 這一項,就會出現 Group 的列表,基本上 Group 的增加與新增使用這是相同的方式,在此就不多說了!留給大家去嘗試嘗試吧!
  · passwd
  語法
  · [root @test /root ]# passwd [username]
  [test @test /root]# passwd
  [root @test /root]# passwd test
  Changing password for user test
  New password:   <==輸入密碼
  BAD PASSWORD: it is based on a dictionary word
  Retype new password:  <==再輸入一次!
  passwd: all authentication tokens updated successfully
  · 說明:
  這個指令可以修改使用者的密碼!要注意的是,這個指令在 /bin/passwd 中,而帳號所存放的地方在 /etc/passwd 中,是不一樣的呦!搞清楚呦!
  · 一般使用者的用法是直接輸入 passwd 即可;
  · root 可以使用 passwd [username] 來替 username 這個帳號取一個新的密碼!
  
  使用者身份切換:
  這裡有個很有趣的問題要來跟大家分享一下,還記得在古老的年代裡面,還沒有 ssh 的時候,我們都是使用 telnet 登入系統的,偏偏系統預設是不開啟 root 以 telnet 登入,那麼好了!我們要怎樣遠程操控我們的 Linux 主機呀!?因為由前面的介紹我們不難發現,系統當中最特殊的帳號就是 UID 為 0 的使用者了,他具有至高無上的權力!而且是系統管理員必須要具備的身份,否則怎樣操控主機呢?您說是吧!好了,那麼 telnet 將 root 的登入許可權關掉了,而如果我們在製作一個使用者,並將其 UID 變為 0 的話又如何?嘿嘿!很抱歉, telnet 就是認 UID 的,所以肯定還是進不了系統,這個時候要怎麼辦呀!?就是變換身份呀!將一般使用者的身份變成了 root 就行了!
  但是怎樣變換身份呀?怎麼說呢?就是說,一般而言,我們都不希望以 root 的身份登入主機,以避免被怪客入侵了!但是一部主機又不可能完全不進行修補或者是設定等動作!這個時候要如何將一般使用者的身份變成 root 呢?主要有兩種方式,分別是:
  · 以 su 直接將身份變成 root 即可,但是這個指令卻需要 root 的密碼,也就是說,如果你要以 su 變成 root 的話,你的一般使用者就必須要有 root 的密碼才行;
  · 那麼如果不想要將 root 的密碼流出去呢?呵呵!可以使用 sudo 來進行工作呦!
  底下我們就來說一說 su 跟 sudo 的用法啦!
  · su
  語法:
  · [root @test /root ]# su
  參數說明:
  範例:
  [test@test test]$ su
  Password:      <==輸入 root 的密碼
  [root@test test]#    <==身份變成 root 了
  · 說明:
  這個指令很有用呦!這是用來將『一般身份轉換成 super user 』的指令!通常為了安全的考量, telnet 與 ssh 盡量不要以 root 的身份來登入!但是有時后我們又要在外頭以 root 的身份來修改系統設定,這個時候 su 就很有用了!
  · sudo
  語法
  [root @test /root ]# sudo [-u username] [command]
  參數說明:
  -u :將身份變成 username 的身份
  範例:
  [test@test test]$ sudo mkdir /root/testing
  Password:      <==輸入 test 的密碼
  [root@test test]$ sudo -u test touch test  <==root 可以執行 test 這個使用者的指令,建立 test 的檔案!
  說明:
  · 如果單純的使用 su 來變換成 root 的身份,最大的好處是可以直接下達我們慣用的指令,但是,還是會有問題的,就是如果主機是由多人共管的時候,由於所有的人都必須要知道 root 的密碼,如此一來,呵呵!很麻煩的啦!因為怕被入侵嘛!如果管理群中的一個人不小心泄出了 root 的密碼,不就完蛋了~~這個時候就有 sudo 的出現了!
  · sudo 的基本語法就是在 sudo 後頭直接加上指令,例如上面的例子中, mkdir /root/testing 就是命令啦!那麼就可以來執行 root 身份可以動作的事情!此外,由於執行 root 身份的工作時,『輸入的密碼是使用者的密碼,而不是 root 的密碼,所以可以減少 root 密碼外流的問題!』如此 root 的密碼將不會流出去了!但是 sudo 在使用的時候請小心,就是要在 /etc/sudoers 裡頭設定該有的事項!在預設情況下,只有 root 才能使用 sudo !那有什麼用!我們是一般使用者,想要使用的是 sudo 來變成 root 的身份呀!呵呵!沒關係!可以使用 visudo 來編輯 /etc/sudoers 這個檔案即可!在 Red Hat 的預設情況中,使用『 visudo 』才能編輯 /etc/sudoers 這個檔案,此外,編輯者的身份必須要 root 才行!如何編輯呢?在預設的情況中,我們會希望將可以執行 root 動作的人的 group 設定為 wheel ,然後:
  [root@est /root]# visudo
  # sudoers file.
  #
  # This file MUST be edited with the 'visudo' command as root.
  #
  # See the sudoers man page for the details on how to write a sudoers file.
  #
  # Host alias specification
  # User alias specification
  # Cmnd alias specification
  # Defaults specification
  # User privilege specification
  root  ALL=(ALL) ALL
  test  ALL=(ALL) ALL         <==這一行可以加入,使 test 這個人可以使用 sudo
  # Uncomment to allow people in group wheel to run all commands
  # %wheel    ALL=(ALL)    ALL  <==將這一行批註符號取消
  # Same thing without a password
  # %wheel    ALL=(ALL)    NOPASSWD: ALL
  # Samples
  # %users ALL=/sbin/mount /cdrom,/sbin/umount /cdrom
  # %users localhost=/sbin/shutdown -h now
  · · 如果如同上面的方式,將黃色字體那一行 /etc/sudoers 裡頭將『 # %wheel    ALL=(ALL)    ALL』這一行的批註符號取消,如此一來,則群組為 wheel 的人就可以進行 root 的身份工作!那麼萬一我想要讓『單獨的個人可以使用 sudo 的功能』呢?呵呵!那就直接以 visudo 加上這一行『test ALL=(ALL) ALL』即可!那麼 test 即可使用 sudo 的功能??『薌虻グ桑〉?喬爰塹貌灰? vi 直接修改 sudoers 呦!會有問題!
  · sudo 除了變成 root 的功能之外!嘿嘿!他還可以變成『任何人』的功能呦!舉個簡單的例子來說好了,我們都知道激活程序的時候最好不要使用 root 來激活,因為如此一來當該程序被接管時,接管者(或者說是入侵者)將擁有 root 的許可權了!所以近來我們都希望不要以 root 來激活一些程序啦!會比較安全!那麼我們要以 root 來激活成為 test (例如常用的 nobody 這個帳號)要如何作?很簡單,就使用上面的第二個例子來看, root 可以改變身份成為 test 來建立檔案!嘿嘿!還不需要輸入密碼!很棒吧!這個動作我曾經在 squid 這個執行續上面做過,這樣一來,即使我的 squid 被利用了,那麼該怪客只能擁有 nobody 的許可權,嘿嘿!該許可權是很小很小的!所以可以達到保護主機的部分功能呦!
  
  手動增加使用者:
  · 一般使用者帳號的增加:
  好了,現在我們知道其實使用 userconf 、 useradd 與 groupadd 其實會用到的檔案最鮮明的就是 /etc/passwd 與 /etc/shadow ??∧敲慈綰問侄?腦黽右桓鍪褂謎唚兀孔畲蟮睦?旁謨 passwd 與 shadow 的同步啦!OK!大致的步驟可以這樣說:
  1. 先建立所需要的群組( vi /etc/group )
  2. 建立帳號的各個屬性( vi /etc/passwd )
  3. 將 passwd 與 shadow 同步化 ( pwconv )
  4. 建立該帳號的密碼 ( passwd acount )
  5. 建立使用者家目錄 ( cp -r /etc/skel /home/account )
  6. 更改家目錄屬性 ( chown -R account.group /home/account )
  這樣就 OK 啦!實地的來新增一個 test 群組與帳號來試試看:
  
  建立新的群組 test ,設其 GID 為 520
  [root @test /root ]# vi /etc/group
  ----略
  test:x:520:test        <==新增群組,且群組的人為 test ,GID 為 520
  建立 test 的各個屬性
  [root @test /root ]# vi /etc/passwd
  ----略
  test:x:520:520:testing account:/home/test:/bin/bash  <==建立各個屬性
  同步化 /etc/passwd 與 /etc/shadow
  [root @test /root ]# pwconv     <==將 passwd 的資料轉入 /etc/shadow 中!
  建立密碼
  [root @test /root ]# passwd test  <==建立使用者 test 密碼
  Changing password for user test
  New password:
  Retype new password:
  passwd: all authentication tokens updated successfully
  建立家目錄並轉化家目錄的擁有者
  [root @test /root ]# cp -r /etc/skel /home/test
  [root @test /root ]# chown -R test:test /home/test
  
  這樣就建立完畢??。『薌虻グ桑《?繕廈嫻睦?櫻?涫的?部梢砸讕荽碩?褂 scripts 來新增使用者,詳細的步驟等以後 VBird 真的開發出來了,再來跟大家報告。(如果沒記錯的話,目前很多網頁都已經有提供相關的大量建立帳號的方式了!)
  · POP3 郵件帳號的增加:
  好啦!如果我是一個郵件主機,我不要使用者使用 ftp, telnet, ssh 的話,只允許對方使用 POP3 而已,該怎麼辦?呵呵!其實也是很簡單的,除了 userconf 可以進行之外,你也可以手動達到此一目的呦!
  基本上的原理是這樣的:
  o Red Hat 預設的一個 popusers 群組(GID 為 45)就是專門給郵件帳號使用的啦!所以只要你的群組設定名稱為 popusers 即可(其實僅是利於管理就是了);
  o 由於不需要讓這個帳號由其它的服務登入主機,所以在 shell 的地方則改成了 /bin/false ??
  o 由於不需要這個帳號的登入,所以家目錄也可以不用建立!!
  所以整個建立的步驟就可以簡化為:
  1. 建立帳號的各個屬性( vi /etc/passwd )
  2. 將 passwd 與 shadow 同步化 ( pwconv )
  3. 建立該帳號的密碼 ( passwd acount )
  這樣就可以啦!我們實地的來建立一個名為 poptest 的帳號試試看:
  
  建立帳號 poptest
  [root @test /root ]# vi /etc/passwd
  ---略
  poptest:x:530:45:testing pop account:/home/poptest:/bin/false  <==家目錄先設定也沒關係!
  注意:群組名稱 45 為 popusers 而 shell 則需要為 /bin/false 才行!
  同步化 passwd 與 shadow
  [root @test /root ]# pwconv
  建立密碼
  [root @test /root ]# passwd poptest
  Changing password for user poptest
  New password:
  Retype new password:
  passwd: all authentication tokens updated successfully
  
  很簡單吧!這樣就建立好 poptest 這一個郵件 POP3 的帳號了!這個帳號將僅可以使用 pop3 與 smtp 來收發信件呢!!
  那麼如何砍到剛剛建立的帳號呢?很簡單的啦!
  1. 就是將 /etc/passwd 與 /etc/shadow 裡面的相關信息都殺掉,
  2. 然後再到 /home 底下去將該 account 的家目錄整個殺掉就是了!
  3. 此外,你也需要到 /var/spool/mail 底下去殺掉該帳號的郵件呦!




[火星人 ] Linux 帳號與身份管理已經有359次圍觀

http://coctec.com/docs/linux/show-post-138038.html