6.5. 更改帳號

pw 是一個強力且可彈性的更改帳號的 方法,但是建議用 adduser 來新增帳號, 用 rmuser 來刪除帳號。

chpass 讓系統管理員和一般使用者皆可 調整密碼,shells,和個人資料。另外 passwd 是比較普遍用來更改密碼的方法。

6.5.1. adduser

adduser 是一個簡單的程式用來新增帳號。 它為使用者建立 passwdgroup 的記錄,也建立他們的家目錄,從 /usr/share/skel 複製一些預設的設定檔,也可自由選擇地寄給使用者歡迎訊息。

要建立初始的設定檔,請用 adduser -s -config_create. [1]接下來,我們設定 adduser 預設值,建立第一個使用者帳號, 因為用 root 來做一般的用途是有害且危險的。

Example 6-1. 更改 adduser 的設定

    # adduser -v
    Use option ``-silent'' if you don't want to see all warnings and questions.
    Check /etc/shells
    Check /etc/master.passwd
    Check /etc/group
    Enter your default shell: csh date no sh tcsh [sh]: tcsh
    Your default shell is: tcsh -> /usr/local/bin/tcsh
    Enter your default HOME partition: [/home]:
    Copy dotfiles from: /usr/share/skel no [/usr/share/skel]: 
    Send message from file: /etc/adduser.message no 
    [/etc/adduser.message]: no
    Do not send message
    Use passwords (y/n) [y]: y
    
    Write your changes to /etc/adduser.conf? (y/n) [n]: y
    
    Ok, let's go.
    Don't worry about mistakes. I will give you the chance later to correct any input.
    Enter username [a-z0-9_-]: jru
    Enter full name []: J. Random User
    Enter shell csh date no sh tcsh [tcsh]: 
    Enter home directory (full path) [/home/jru]: 
    Uid [1001]: 
    Enter login class: default []: 
    Login group jru [jru]: 
    Login group is ``jru''. Invite jru into other groups: guest no 
    [no]: wheel
    Enter password []: 
    Enter password again []: 
    
    Name:	  jru
    Password: ****
    Fullname: J. Random User
    Uid:	  1007
    Gid:	  1007 (jru)
    Class:	  
    Groups:	  jru wheel
    HOME:     /home/jru
    Shell:	  /usr/local/bin/tcsh
    OK? (y/n) [y]: y
    Added user ``jru''
    Copy files from /usr/share/skel to /home/jru
    Add another user? (y/n) [y]: n
    Goodbye!
    #

簡單來說,我們變更預設 shell 為 tcsh, 關掉送出歡迎信給新增的使用者。接著我們儲存了設定值,並且為 jru 新增了一個帳號,確定 jru 屬於 wheel 群組(之後我們將發現這很重要)。

Note: 你鍵入的密碼並沒有顯示出來,也沒有星星顯示出來。 請確定你兩次都沒有打錯密碼:)

Note: 從今天起請用 adduser 不加上任何參數, 也不用執行一次變更預設值了。如果程式要求你變更預設值,請離開程式, 並試試看 -s 的參數。

6.5.2. rmuser

rmuser 從系統中刪除帳號,包括使用者 資料庫中的任何記錄。

rmuser 執行下列步驟:

  1. 刪除使用者的 crontab(1) 記錄 (如果有的話)。

  2. 刪除所有屬於此使用者的 at(1) 工作。

  3. 中止所有此使用者擁有的行程。

  4. 從系統密碼檔中刪除使用者資料。

  5. 刪除此使用者的家目錄 (如果是此使用者所擁有的話)。

  6. 刪除 /var/mail 之下屬於此使用者的信件。

  7. 刪除暫存區中所有此使用者擁有的檔案,例如 /tmp

  8. 最後,刪除 /etc/group 之中所有此使用者 所屬的群組的帳號。

    Note: 如果某群組變成空的且群族名稱和帳號名稱相同,則此群組也將 被移除;這補足了那些由 adduser(8) 為個別使用者建立的 單獨群組。

rmuser 不能用來刪除超級使用者帳號, 因為這表示了一個嚴重的破壞行為。

預設使用互動模式,這將確認你知道你正在做什麼。

Example 6-2. rmuser 帳號刪除互動過程

    # rmuser jru
    Matching password entry:
    jru:*:1000:1000::0:0:J. Random User:/home/jru:/usr/local/bin/tcsh
    Is this the entry you wish to remove? y
    Remove user's home directory (/home/jru)? y
    Updating password file, updating databases, done.
    Updating group file: trusted (removing group jru -- personal group is empty) done.
    Removing user's incoming mail file /var/mail/jru: done.
    Removing files belonging to jru from /tmp: done.
    Removing files belonging to jru from /var/tmp: done.
    Removing files belonging to jru from /var/tmp/vi.recover: done.
    #

6.5.3. pw

pw 是一個命令列工具,用來 建立,刪除,修改,以及顯示使用者和群組,並當成系統用戶檔 及群組檔的編輯器。

它是被設計來不論對直接執行命令列或者放在 shell script 裡面都很有用。

pw(8) 有所有的資訊。

6.5.4. chpass

chpass 更改使用者資料例如密碼, shells,和個人資訊等。

只有系統管理員,例如超級使用者,可以用 chpass 更改其他 使用者的資料或密碼。

不加任何參數,除了可有可無的帳號名稱, chpass 顯示一個內含使用者資訊的編輯器, 並在離開編輯器時,更改使用者資料庫中的資訊。

Example 6-3. 超級使用者互動式 chpass

    #Changing user database information for jru.
    Login: jru
    Password: *
    Uid [#]: 1000
    Gid [# or name]: 1000
    Change [month day year]:
    Expire [month day year]:
    Class:
    Home directory: /home/jru
    Shell: /usr/local/bin/tcsh
    Full Name: J. Random User
    Office Location:
    Office Phone:
    Home Phone:
    Other information:

一般的使用者只能更改他們自己的一小部分資訊。

Example 6-4. 一般使用者互動式 chpass

    #Changing user database information for jru.
    Shell: /usr/local/bin/tcsh
    Full Name: J. Random User
    Office Location:
    Office Phone:
    Home Phone:
    Other information:

Note: chfnchsh 就像 chpass,以及 ypchpassypchfn, 和 ypchsh。自動支援 NIS,所以命令前不需要加上 yp

6.5.5. passwd

passwd 是一個常用的工具,讓一般使用者 更改自己的密碼,或者讓超級使用者更改其他使用者的密碼。

Note: 修改密碼以前,使用者必須輸入他們原先的密碼,以避免未經授權的 人在使用者離開控制台時更改使用者的密碼。

Example 6-5. passwd

    % passwd
    Changing local password for jru.
    Old password:
    New password:
    Retype new password:
    passwd: updating the database...
    passwd: done
    
    # passwd jru
    Changing local password for jru.
    New password:
    Retype new password:
    passwd: updating the database...
    passwd: done

Note: yppasswd 連結到 passwd。 自動支援 NIS,所以在命令前不需要加上yp

Notes

[1]

參數 -s 使得 adduser 預設變得安靜。 我們之後可以用 -v 如果想改變預設值時。