Linux 命令大全(三)——使用者管理
三、使用者管理
使用者和使用者組操作命令
Id、Finger、Pwck 檢查/etc/passwd 配置檔案內的資訊與實際主資料夾是否存在,還可比較/etc/passwd 和/etc/shadow 的信息是否一致,另外如果/etc/passwd 中的資料欄位錯誤也會提示。 Grpck 和 pwck 功能相近,這是檢查使用者組的。 Groups newgrp useradd usermod usermod 不僅能改使用者的 SHELL 型別,所歸屬的使用者組,也能改使用者密碼的有效期,還能改登入名。 usermod 最好不要用它來改使用者的密碼,因為他在/etc/shadow 中顯示的是明口令;修改使用者的口令最好用 passwd ; usermod 如此看來就是能做到使用者帳號大轉移;比如我把使用者 A 改為新使用者 B;usermod [-u uid [-o]] [-g group] [-G group,...] [-d 主目錄 [-m]] [-s shell] [-c 註釋] [-l 新名稱] [-f 失效日] [-e 過期日] [-p 密碼] [-L|-U] 使用者名稱
- -c comment:更新使用者帳號 password 檔中的註解欄,一般是使用 chfn(1)來修改。
- -d home_dir:更新使用者新的登入目錄。如果給定-m 選項,使用者舊目錄會搬到新的目錄去,如舊目錄不存在則建個新的。
- -e expire_date:加上使用者帳號停止日期。日期格式為 MM/DD/YY.
- -f inactive_days:帳號過期幾日後永久停權。當值為 0 時帳號則立刻被停權。而當值為-1 時則關閉此功能。預設值為-1。
- -g initial_group:更新使用者新的起始登入使用者組。使用者組名須已存在。使用者組 ID 必須參照既有的的使用者組。使用者組 ID 預設值為 1。
- -G group,[...]:定義使用者為一堆 groups 的成員。每個使用者組使用","區格開來,不可以夾雜空白字元。使用者組名同-g 選項的限制。如果使用者現在的使用者組不再此列,則將使用者由該使用者組中移除。
- -l login_name:變更使用者 login 時的名稱為 login_name。其它不變。特別是,使用者目錄名應該也會跟著更動成新的登入名。
- -s shell: 指定新登入 shell。如此欄留白,系統將選用系統預設 shell。
- -u uid :使用者 ID 值。必須為唯一的 ID 值,除非用-o 選項。數字不可為負值。預設為最小不得小於/etc/login.defs 中定義的UID_MIN 值。0 到 UID_MIN 值之間是傳統上保留給系統帳號使用。使用者目錄樹下所有的檔案目錄其 userID 會自動改變。放在使用者目錄外的檔案則要自行手動更動。
# 把 linuxfish 使用者名稱改為 fishlinux ,並且把其家目錄轉移到 /opt/linuxfish ; usermod -d /opt/linuxfish -m -l fishlinux -U linuxfish # 檢視使用者 fishlinux 的家目錄下的檔案及屬主; ls -la /opt/linuxfish/ ''' drwxr-xr-x 3 fishlinux linuxfish 4096 11 月 5 16:46 . drwxrwxrwx 29 root root 4096 11 月 5 16:48 .. -rw-r--r-- 1 fishlinux linuxfish 24 11 月 5 16:46 .bash_logout -rw-r--r-- 1 fishlinux linuxfish 191 11 月 5 16:46 .bash_profile -rw-r--r-- 1 fishlinux linuxfish 124 11 月 5 16:46 .bashrc -rw-r--r-- 1 fishlinux linuxfish 5619 11 月 5 16:46 .canna -rw-r--r-- 1 fishlinux linuxfish 438 11 月 5 16:46 .emacs-rw-r--r-- 1 fishlinux linuxfish 120 11 月 5 16:46 .gtkrc drwxr-xr-x 3 fishlinux linuxfish 4096 11 月 5 16:46 .kde -rw-r--r-- 1 fishlinux linuxfish 0 11 月 5 16:46 mydoc.txt -rw-r--r-- 1 fishlinux linuxfish 658 11 月 5 16:46 .zshrc ''' # 檢視有關 fishlinux 的記錄 more /etc/passwd |grep fishlinux # fishlinux:x:512:512::/opt/linuxfish:/bin/bash
通過上面的例子,我們發現檔案的使用者組還沒有變,如果您想改變為 fishlinux 使用者組,如果想用通過 usermod 來修改,就要 先新增 fishlinux 使用者組;然後用 usermod -g 來修改 ,也可以用 chown -R fishlinux:fishlinux /opt/finshlinux 來改;
userdel userdel 很簡單,只有一個引數可選 -r ;如果加引數-r ,表示在刪除使用者的同時,一併把使用者的家目錄及本地郵件儲存的目錄或檔案也一同刪除; 警告: 請不要輕易用-r 引數;他會刪除使用者的同時刪除使用者所有的檔案和目錄,切記;如果使用者目錄下有重要的檔案,在刪除前請備份; 其實也有最簡單的辦法,但這種辦法有點不安全,也就是直接在/etc/passwd 中刪除您想要刪除使用者的記錄;但最好不要這樣 做,/etc/passwd 是極為重要的檔案,可能您一不小心會操作失誤; Groupadd groupmod groupdel 刪除使用者組,語法格式:groupdel 使用者組 passwd passwd 作為普通使用者和超級許可權使用者都可以執行,但作為普通使用者只能更改自己的使用者密碼,但前提是沒有被 root 使用者鎖 定; 如果 root 使用者執行 passwd ,可以設定或修改任何使用者的密碼; passwd 命令後面不接任何引數或使用者名稱,則表示修改當前使用者的密碼 passwd 幾個比較重要的引數- -k, --keep-tokens:保留即將過期的使用者在期滿後能仍能使用;
- -d, --delete:刪除使用者密碼,僅能以 root 許可權操作;
- -l, --lock:鎖住使用者無權更改其密碼,僅能通過 root 許可權操作;
- -u, --unlock:解除鎖定;
- -f, --force:強制操作;僅 root 許可權才能操作;
- -x, --maximum=DAYS:兩次密碼修正的最大天數,後面接數字;僅能root 許可權操作;
- -n, --minimum=DAYS:兩次密碼修改的最小天數,後面接數字,僅能root 許可權操作;
- -w, --warning=DAYS:在距多少天提醒使用者修改密碼;僅能root 許可權操作;
- -i, --inactive=DAYS:在密碼過期後多少天,使用者被禁掉,僅能以 root 操作;
- -S, --status:查詢使用者的密碼狀態,僅能 root使用者操作;
- --stdin read new tokens from stdin (root only)
usermod 命令會參照命令列上指定的部份修改系統帳號檔。下列為 usermod 可選用的引數。 -c comment:更新使用者帳號 password 檔中的註解欄,一般是使用 chfn(1)來修改。 -d home_dir:更新使用者新的登入目錄。如果給定-m 選項,使用者舊目錄會搬到新的目錄去,如舊目錄不存在則建個新的。 -e expire_date:加上使用者帳號停止日期。日期格式為 MM/DD/YY. -f inactive_days:帳號過期幾日後永久停權。當值為 0 時帳號則立刻被停權。而當值為-1 時則關閉此功能。預設值為-1。 -g initial_group:更新使用者新的起始登入使用者組。使用者組名須已存在。使用者組 ID 必須參照既有的的使用者組。使用者組 ID 預設值為 1。 -G group,[...]:定義使用者為一堆 groups 的成員。每個使用者組使用","區格開來,不可以夾雜空白字元。使用者組名同-g 選項的限制。如果使用者現在的使用者組不再此列,則將使用者由該使用者組中移除。 -l login_name:變更使用者 login 時的名稱為 login_name。其它不變。特別是,使用者目錄名應該也會跟著更動成新的登入名。 -s shell: 指定新登入 shell。如此欄留白,系統將選用系統預設 shell。 -u uid :使用者 ID 值。必須為唯一的 ID 值,除非用-o 選項。數字不可為負值。預設為最小不得小於/etc/login.defs 中定義的UID_MIN 值。0 到 UID_MIN 值之間是傳統上保留給系統帳號使用。使用者目錄樹下所有的檔案目錄其 userID 會自動改變。放在使用者目錄外的檔案則要自行手動更動。