next up previous contents
Next: 群組管理與身份切換 Up: 帳號與身份管理 Previous: Linux 的帳號   Contents

使用者管理指令


		useradd		增加使用者。

passwd 設定或變更密碼。
usermod 用戶帳號相關資料微調。
userdel 刪除使用者。
id 查詢使用者的 UID、GID 及所擁有的群組。

  1. useradd:增加使用者。
    [root@dywOffice dywang]# useradd [-ungGmMd] user
    參數:
    -u:  指定帳號的 UID。 
    -n:  群組為 users。 
    -g:  後接之群組 initial group,變動 /etc/passwd。 
    -G:  後接之群組為支援此帳號之群組,變動 /etc/group。 
    -M:  不要建立使用者家目錄。 
    -m:  建立使用者家目錄。 
    -d:  指定某個目錄為家目錄,而不使用預設目錄。 
    
    #範例:
    ### 帳號之群組 ###
    [root@dywOffice dywang]# useradd -n testing
    [root@dywOffice dywang]# ll /home/testing
    total 4
    drwx------  2 testing users 4096 Aug  7 15:28 tmp/
    [root@dywOffice ~]# useradd -G ftp test1
    [root@dywOffice ~]# useradd -n test2
    [root@dywOffice ~]# useradd -g test1 test3
    [root@dywOffice ~]# grep test1 /etc/passwd /etc/group
    /etc/passwd:test1:x:511:511::/home/test1:/bin/bash
    /etc/group:ftp:x:76:ftp,calculus1A,calculus1B,linux2AB,test1
    /etc/group:test1:x:511:
    [root@dywOffice ~]# grep test2 /etc/passwd /etc/group
    /etc/passwd:test2:x:512:100::/home/test2:/bin/bash
    [root@dywOffice ~]# grep test3 /etc/passwd /etc/group
    /etc/passwd:test3:x:513:511::/home/test3:/bin/bash
    [root@dywOffice ~]# ls -ld /home/test?
    drwx--x--x  21 test1 ftp   4096 Jul 31 07:24 /home/test1/
    drwx--x--x   3 test2 users 4096 Dec  6 13:50 /home/test2/
    drwx--x--x   3 test3 test1 4096 Dec  6 14:11 /home/test3/
    
    ### 帳號之家目錄 ###
    [root@dywOffice ~]# useradd -M test4
    [root@dywOffice ~]# useradd -m test5
    [root@dywOffice ~]# useradd -d /home/testx test6
    [root@dywOffice ~]# ls -ld /home/test[456x]
    drwxr-xr-x  4 test5 test5 4096 Dec 19 11:02 /home/test5/
    drwxr-xr-x  4 test6 test6 4096 Dec 19 11:04 /home/testx/
    

  2. useradd 指令至少可能會更動到的檔案有:
    1. /etc/passwd
    2. /etc/shadow
    3. /etc/group
    4. /etc/gshadow
    5. /home/username [表示家目錄 /home 下產生的帳號 username 目錄]
  3. useradd 指令在建立帳號時會參考的檔案:
    1. /etc/default/useradd:預設的帳號的基本設定。
      GROUP=100               %*<==預設的群組*)
      HOME=/home              %*<==預設的家目錄所在目錄*)
      INACTIVE=-1             %*<==在 /etc/shadow 內的第 7 欄*)
      EXPIRE=                 %*<==在 /etc/shadow 內的第 8 欄*)
      SHELL=/bin/bash         %*<==預設的 shell*)
      SKEL=/etc/skel          %*<==使用者家目錄的內容資料參考目錄*)
      
    2. /etc/login.defs:預設的帳號的基本設定。
      MAIL_DIR        /var/spool/mail %*<==使用者預設郵件信箱放置目錄*)
      
      PASS_MAX_DAYS   99999           %*<==/etc/shadow 內的第 5 欄*)
      PASS_MIN_DAYS   0               %*<==/etc/shadow 內的第 4 欄*)
      PASS_MIN_LEN    5               %*<==密碼最短的字元長度*)
      PASS_WARN_AGE   7               %*<==/etc/shadow 內的第 6 欄*)
      
      UID_MIN         500     %*<==使用者最小的 UID,意即小於 500 的 UID 為系統保留*)
      UID_MAX       60000     %*<==使用者能夠用的最大 UID*)
      GID_MIN         500     %*<==使用者自訂群組的最小 GID,小於 500 為系統保留*)
      GID_MAX       60000     %*<==使用者自訂群組的最大 GID*)
      
      CREATE_HOME     yes     %*<==在不加 -M 及 -m 時,是否主動建立使用者家目錄?*)
      
    3. /etc/skel/*:使用者家目錄的參考設定 copy 至家目錄。

  4. passwd:設定或變更密碼。
    [root@linux ~]# passwd [-lunxwS] username
    參數:
    -l  :將 username 這個帳號的密碼鎖住 (lock),在 /etc/shadow 內的密碼欄
    -u  :將 -l 的 lock 解開。
    -n  :後面接天數(數字),最短天數;亦即是 /etc/shadow 內的第四欄;
    -x  :後面接天數(數字),最長天數;亦即是 /etc/shadow 內的第五欄;
    -w  :後面接天數(數字),警告天數;亦即是 /etc/shadow 內的第六欄;
    -i  :後面接天數(數字),密碼過期的恕限時間;亦即是 /etc/shadow 內的第七欄;
    -S  :顯示目前這個 username 的相關資訊。
    --stdin  :經由標準輸入取得密碼,配合管線處理,可大量更改用戶密碼。
    
    #範例:
    #範例一:鎖住用戶 csie1 的密碼。
    [root@localhost csie]# passwd -l csie1
    Locking password for user csie1.
    passwd: Success
    [root@localhost csie]# grep csie1 /etc/shadow
    csie1:!!$1$P0vkC.HK$MsHV7PNiDBXHcCS4hJ.yI/:13861::99999::::
    
    #範例二:解除鎖定用戶 csie1 的密碼。
    [root@localhost csie]# passwd -u csie1
    Unlocking password for user csie1.
    passwd: Success.
    [root@localhost csie]# grep csie1 /etc/shadow
    csie1:$1$P0vkC.HK$MsHV7PNiDBXHcCS4hJ.yI/:13861::99999::::
    
    #範例三:更改用戶 csie1 的密碼之最短、最長、警告及過期的恕限時間。
    [root@localhost csie]# passwd -n 0 -x 60 -w 5 -i 2 csie1
    Adjusting aging data for user csie1.
    passwd: Success
    [root@localhost csie]# grep csie1 /etc/shadow
    csie1:$1$P0vkC.HK$MsHV7PNiDBXHcCS4hJ.yI/:13861:0:60:5:2::
    [root@localhost csie]# passwd -S csie1
    Password set, MD5 crypt.
    
    #範例四:密碼設定,必須經由鍵盤輸入兩次。
    [root@dywOffice dywang]# passwd testing
    Changing password for user testing.
    New UNIX password:
    BAD PASSWORD: it is too short
    Retype new UNIX password:
    passwd: all authentication tokens updated successfully.
    
    #範例五:經由標準輸入取得密碼,配合管線處理,可大量更改用戶密碼。
    [root@dywHome2 ~]# echo "lopex" | passwd --stdin dywang
    
    1. root 可進行密碼設定與變更,不需要知道舊密碼。
    2. 一般而言,密碼最好要符合下列要求:
      1. 密碼不能與帳號相同;
      2. 密碼盡量不要選用字典裡面會出現的字串;
      3. 密碼需要超過 8 個字元;

  5. usermod:用戶帳號相關資料微調。
    [root@linux ~]# usermod [-cdegGlsuLU] username
    參數:
    -c  :後面接帳號的說明,即 /etc/passwd 第五欄的說明欄,可以加入一些帳號的說明。
    -d  :後面接帳號的家目錄,即修改 /etc/passwd 的第六欄;
    -e  :後面接日期,格式是 YYYY-MM-DD 也就是在 /etc/shadow 內的第八個欄位資料。
    -g  :後面接 group name,修改 /etc/passwd 的第四個欄位,亦即是 GID 的欄位。
    -G  :後面接 group name,修改這個使用者能夠支援的群組,修改的是 /etc/group 第四欄。
    -l  :後面接帳號名稱。亦即是修改帳號名稱, /etc/passwd 的第一欄。
    -s  :後面接 Shell 的實際檔案,例如 /bin/bash 或 /bin/csh 等等。
    -u  :後面接 UID 數字。即 /etc/passwd 第三欄的資料;
    -L  :暫時將使用者的密碼凍結,讓他無法登入。其實僅改 /etc/shadow 的密碼欄。
    -U  :將 /etc/shadow 密碼欄的 ! 拿掉。
    
    [root@localhost csie]# usermod -c csie1test -d /home/testx -e 2007-12-31 csie1
    [root@localhost csie]# grep csie1 /etc/passwd /etc/shadow
    /etc/passwd:csie1:x:500:100:csie1test:/home/testx:/bin/bash
    /etc/shadow:csie1:$1$P0vkC.HK$MsHV7PNiDBXHcCS4hJ.yI/:13861:0:60:5:2:13878:
    [root@localhost csie]# usermod -g test4 -G users -l csie1x csie1
    [root@localhost csie]# grep csie1 /etc/passwd /etc/group
    /etc/passwd:csie1x:x:500:504:csie1test:/home/testx:/bin/bash
    /etc/group:users:x:100:csie,csie1x
    [root@localhost csie]# usermod -s /bin/csh -u 519 -l csie1 csie1x
    [root@localhost csie]# grep csie1 /etc/passwd /etc/group
    /etc/passwd:csie1:x:519:504:csie1test:/home/testx:/bin/csh
    /etc/group:users:x:100:csie,csie1
    

  6. userdel:刪除使用者。
    [root@linux ~]# userdel [-r] username
    參數:
    -r  :連同使用者的家目錄一起刪除。
    
    #範例:
    [root@dywOffice dywang]# userdel -r testing
    
    # 若帳號只是『暫時不啟用』,可將 /etc/shadow 最後倒數第二個欄位(第八欄位)設定為 0。
    
  7. userdel 相關的檔案有:
    1. /etc/passwd
    2. /etc/shadow
    3. /home/username

  8. id:查詢使用者的 UID、GID 及所擁有的群組。
    [dywang@dywOffice ~]$ id
    uid=501(dywang) gid=100(users) groups=100(users)
    

練習題

  1. 如何增加帳號 csie,且設定初始群組為 users?
    Sol. useradd -n csie
  2. 如何增加帳號 csie,且指定 UID 為 510?
    Sol. useradd -u 510 csie
  3. 如何增加帳號 csie,且設定初始群組為 foo?
    Sol. useradd -g foo csie
  4. 如何增加帳號 csie,且設定有效群組為 foo?
    Sol. useradd -G foo csie
  5. 如何增加帳號 csie,且不要建立使用者家目錄?
    Sol. useradd -M csie
  6. 如何增加帳號 csie,且建立使用者家目錄?
    Sol. useradd -m csie
  7. 如何增加帳號 csie,且指定目錄 /var/home/csie 為家目錄,而不使用預設目錄?
    Sol. useradd -d /var/home/csie csie
  8. useradd -n csie 增加帳號,除了家目錄外,會更動那兩個檔案?
    Sol. /etc/passwd 及 /etc/shadow
  9. useradd -G csie 增加帳號,除了家目錄外,會更動那四個檔案?
    Sol. /etc/passwd、/etc/shadow、/etc/group 及 /etc/gshadow
  10. 以 useradd 增加帳號,預設家目錄為 /home,其設定在那裡?
    Sol. /etc/default/useradd
  11. 請說明 /etc/skel 這個目錄的用途?
    Sol. 使用 useradd 建立使用者家目錄時的參考目錄
  12. 如何每次使用 useradd 增加帳號時,家目錄 /home 下自動加入次目錄 public_html
    Sol. 在 /etc/skel 下建立次目錄 public_html
  13. 以 useradd 增加帳號,預設帳號密碼長度、寬恕期等設設定在那裡?
    Sol. /etc/login.defs
  14. 如何鎖住用戶 user1 的密碼?
    Sol. passwd -l csie
  15. 如何解除鎖定用戶 user1 的密碼?
    Sol. passwd -u csie
  16. 如何更改用戶 user1 的密碼之最短天數為 30,也就是不可被更動的天數?
    Sol. passwd -n 30 csie
  17. 如何更改用戶 user1 的密碼之最短天數為 60,也就是需要重新變更的天數?
    Sol. passwd -x 60 csie
  18. 如何更改用戶 user1 的密碼之警告天數為 5,也就是需要變更期限前的警告期限?
    Sol. passwd -w 5 csie
  19. 如何更改用戶 user1 密碼過期的恕限時間為 7 天?
    Sol. passwd -i 7 csie
  20. 如何更改用戶 user1 的密碼隨時可以更動?
    Sol. passwd -n 0 csie
  21. 如何更改用戶 user1 的密碼不需要重新輸入?
    Sol. passwd -x 99999 csie
  22. 如何重新設定用戶 csie 的密碼?
    Sol. passwd csie
  23. 如何經由標準輸入配合管線處理,更改帳號 csie 的密碼為 "abcde",而不需要從鍵盤輸入密碼,以大量更改用戶密碼?
    Sol. echo "abcde" | passwd -stdin csie
  24. 高安全性之 linux 伺服器,是否會接受字典裡面會出現的字串為密碼?
    Sol. 不會
  25. 請舉一個最差的密碼例子。
    Sol. 與帳號相同。
  26. 如何調整用戶帳號 csie 的說明欄為 CSIE?
    Sol. usermod -c CSIE csie
  27. 如何調整用戶帳號 csie 的家目錄為 /var/home/csie?
    Sol. usermod -d /var/home/csie csie
  28. 如何調整用戶帳號 csie 的密碼使用期限為 2008-12-31?
    Sol. usermod -e 2008-12-31 csie
  29. 如何調整用戶帳號 csie 的初始群組為 cyut?
    Sol. usermod -g cyut csie
  30. 如何調整用戶帳號 csie 的有效群組為 cyut?
    Sol. usermod -G cyut csie
  31. 如何調整用戶帳號 csie 的帳號名稱為 foo?
    Sol. usermod -l foo csie
  32. 如何調整用戶帳號 csie 使用的 shell 為 /bin/sh?
    Sol. usermod -s /bin/sh csie
  33. 如何調整用戶帳號 csie 的 UID 為 512?
    Sol. usermod -u 512 csie
  34. 如何暫時將使用者 csie 的密碼凍結,讓他無法登入?
    Sol. usermod -L csie
  35. 如何解除使用者 csie 的密碼凍結,讓他可以登入?
    Sol. usermod -U csie
  36. 如何刪除使用者 csie 的帳號?
    Sol. userdel csie
  37. 如何刪除使用者 csie 的帳號,連同使用者的家目錄一起刪除?
    Sol. userdel -r csie
  38. 輸入指令 id,可以列出那些資訊?
    Sol. 使用者的帳號名稱、UID、GID 及所擁有的群組。

next up previous contents
Next: 群組管理與身份切換 Up: 帳號與身份管理 Previous: Linux 的帳號   Contents
2017-07-03