Linux是一個多用戶的操作系統,她有完美的用戶管理工具,這些工具包括用戶的查詢、添加、修改,以及用戶之間相互切換的工具等;通過這些工具,我們能安全、輕松的完成用戶管理;
在這裡我們要引入用戶控制工具的概念,比如對用戶添加的useradd或adduser ,對用戶刪除的 userdel ,與修改用戶相關信息的 usermod、chfn、chsh ,還有密碼設置工具passwd 等等;這些工具只所以被稱為用戶控制工具,理由是她們是控制和管理用戶的工具。
一、與用戶管理相關的配置文件;
1、/etc/passwd 和/etc/groups
我們對用戶和用戶組進行添加、修改、刪除最終目的是修改系統用戶 /etc/passwd和其加密資訊文件 /etc/shadows 以及用戶組的 /etc/groups和其加密資訊文件/etc/gshadow,所以對用戶和用戶組的添加並不僅僅是只能通過用戶添加、修改、刪除等用戶控制工具來完成,我們還能直接修改與用戶和用戶組相應的配置文件來達到目的。在 《用戶(user)和用戶組(group)配置文件詳解》一文中,我有談過通過修改用戶及用戶組配置文件的辦法來添加、刪除、修改用戶,進而達到對系統用戶的管理;
2、超級權限控制sudo 的配置文件 /etc/sudoers ;
3、添加用戶規則文件 /etc/login.defs 和 /etc/default/useradd
二、添加用戶工具和方法;
添加用戶工具有useradd和adduser ,這兩個工具所達到的目的都是一樣的,在Fedora 發行版中,useradd 和adduser 用法是一樣的;但在slackware發行版本中,adduser和useradd 還是有所不同,表現為adduser 是以人機交互的提問的方式來添加用戶;
除了useradd和adduser工具以外,我們還能通過修改用戶配置文件/etc/passwd和/etc/groups的辦法來實現;
當然我們也不要忽略一些發行版獨有用戶管理工具,比如Fedora 中有 system-config-users 工具;這個工具比較簡單,點幾下鼠標就能完成;
1、useradd 工具;
useradd 不加參數選項時,後面直接跟所添加的用戶名時,系統時讀取添加用戶配置文件/etc/login.defs和/etc/default/useradd文件,然後讀取/etc/login.defs和/etc/default/useradd中所定義的規則添加用戶;並向/etc/passwd和/etc/groups文件添加用戶和用戶組記錄;當然/etc/passwd和/etc/groups的加密資訊文件也同步生成記錄;同時發生的還有系統會自動在/etc/add/default中所約定的目錄中建用戶的家目錄,並復制/etc/skel中的文件(包括隱藏文件)到新用戶的家目錄中;
useradd 的語法:
usage: useradd [-u uid [-o]] [-g group] [-G group,...] [-d home] [-s shell] [-c comment] [-m [-k template]] [-f inactive] [-e eXPire ] [-p passwd] name useradd -D [-g group] [-b base] [-s shell] [-f inactive] [-e expire ]
當我們執行useradd 用戶名 來添加用戶時,我們會發現一個比較有意思的現象,新添中的用戶的家目錄總是被自動添加到 /home目錄下,我們先舉個例子;
實例一:不加任何參數,直接添加用戶;
[root@localhost beinan]# useradd beinanlinux[root@localhost beinan]# ls -ld /home/beinanlinux/drwxr-xr-x 3 beinanlinux beinanlinux 4096 11月 2 15:20 /home/beinanlinux/
在這個例子中,我們添加了beinanlinux用戶,我們在查看/home/目錄時,會發現系統自建了一個beinanlinux的目錄;
我們再來查看 /etc/passwd 文件有關beinanlinux的記錄,也會有新發現;我們通過more 來讀取 /etc/passwd 文件,並且通過grep 來抽取 beinanlinux字段,得出如下一行;
[root@localhost beinan]# more /etc/passwd grep beinanlinuxbeinanlinux:x:509:509::/home/beinanlinux:/bin/bash
從得出的beinanlinux的記錄來看,以adduser 工具添加beinanlinux用戶時,設置用戶的UID和GID分別為509 ,並且把beinanlinux的家目錄設置在 /home/beinanlinux ,所有的SHELL是 bash ; 我們再來看看 /etc/shadow、/etc/groups和/etc/gshadow 文件,是不是也有與beinanlinux有關的行;我們還要查看/etc/default/useradd 和/etc/login.defs文件的規則,看一下beinanlinux用戶的增加是不是和這兩個配置文件有關;我們還要查看 /home/beinanlinux目錄下的文件,是不是和/etc/skel目錄中的一樣;
由此我們引出我們下面所要談的內容:
useradd -D [-g group] [-b base] [-s shell] [-f inactive] [-e expire ]
1)/etc/default/useradd 配置文件的定義;
useradd -D [-g group] [-b base] [-s shell] [-f inactive] [-e expire ]
useradd 加-D參數後,就是用來改變配置文件 /etc/default/useradd的;
useradd -D [-g group] [-b base] [-s shell] [-f inactive] [-e expire ]
當-D選項出現時,useradd秀出現在的預設值,或是藉由命令列的方式更新預設值。可用選項為∶ -b default_home 注:定義用戶所屬目錄的前一個目錄。用戶名稱會附加在default_home後面用來建立新用戶的目錄。當然使用-d後則此選項無效。 -e default_expire_date 注:用戶帳號停止日期。 -f default_inactive 注:帳號過期幾日後停權。 -g default_group 注:新帳號起始用戶組名或ID。用戶組名須為現有存在的名稱。用戶組ID也須為現有存在的用戶組。 -s default_shell 注:用戶登入後使用的shell名稱。往後新加入的帳號都將使用此shell. 如不指定任何參數,useradd顯示目前預設的值。
實例二:
useradd -D 如不指定任何參數,useradd顯示目前預設的值;
[root@localhost beinan]# useradd -DGROUP=100HOME=/homeINACTIVE=-1EXPIRE=SHELL=/bin/bashSKEL=/etc/skelCREATE_MAIL_SPOOL=no
我們看一下/etc/default/useradd 文件就明白了,應該和上面的輸出是一樣的;所以如果我們想改變useradd配置文件/etc/default/adduser 的內容,也可以用編輯器直接操作,如果你會用vi編輯器或者其它編輯器的話,這個應該不成問題吧;
實例三:
我想把添加用戶時的默認SHELL /bin/bash 改為 /bin/tcsh ,則應該用下面的命令;
[root@localhost beinan]# useradd -D -s /bin/tcsh 注:把添加用戶時的SHELL 改為tcsh ;[root@localhost beinan]# more /etc/default/useradd 注:查看是否成功;# useradd defaults fileGROUP=100HOME=/homeINACTIVE=-1EXPIRE=SHELL=/bin/tcsh 注:成功;SKEL=/etc/skelCREATE_MAIL_SPOOL=no
這個-D參數的解說就這樣了,也是比較簡單,如果不會用命令,直接改參數配置文件總會吧;Linux解決問題是極為靈活的,就看我們怎麼解決了,對不對?
2)useradd 添加用戶;
useradd [-u uid [-o]] [-g group] [-G group,...] [-d home] [-s shell] [-c comment] [-m [-k template]] [-f inactive] [-e expire ] [-p passwd] name
新帳號建立,當不加-D參數,useradd指令使用命令列來指定新帳號的設定值and使用系統上的預設值.新用戶帳號將產生一些系統檔案,用戶目錄建立,拷備起始檔案等,這些均可以利用命令列選項指定。此版本為RedHat Linux提供,可幫每個新加入的用戶建立個別的group,毋須添加-n選項。
useradd 可使用的選項為 -c comment 注:新帳號 passWord 檔的說明欄 。 -d home_dir 注:新帳號每次登入時所使用的home_dir。預設值為default_home內login名稱,並當成登入時目錄名稱。 -e expire_date 注:帳號終止日期。日期的指定格式為MM/DD/YY。 -f inactive_days 注:帳號過期幾日後永久停權。當值為0時帳號則立刻被停權。而當值為-1時則關閉此功能,預設值為-1 -g initial_group 注:group名稱或以數字來做為用戶登入起始用戶組(group)。用戶組名須為現有存在的名稱。用戶組數字也須為現有存在的用戶組。預設的用戶組數字為1。 -G group,[...] 注:定義此用戶為此一堆groups的成員。每個用戶組使用","區格開來,不可以夾雜空白字元。用戶組名同-g選項的限制。定義值為用戶的起始用戶組。。 -m 注: 用戶目錄如不存在則自動建立。如使用-k選項skeleton_dir內的檔案將復制至用戶目錄下。然而在/etc/skel目錄下的檔案也會復制過去取代。任何在skeleton_dir or /etc/skel的目錄也相同會在用戶目錄下一一建立。The-k同-m不建立目錄以及不復制任何檔案為預設值。 -M 不建立用戶目錄,即使/etc/login.defs系統檔設定要建立用戶目錄。 -n 預設值用戶用戶組與用戶名稱會相同。此選項將取消此預設值。 -r 此參數是用來建立系統帳號。系統帳號的UID會比定義在系統檔上/etc/login.defs.的UID_MIN來的小。注意useradd此用法所建立的帳號不會建立用戶目錄,也不會在乎紀錄在/etc/login.defs.的定義值。如果你想要有用戶目錄須額外指定-m參數來建立系統帳號。 -s shell 注:用戶登入後使用的shell名稱。預設為不填寫,這樣系統會幫你指定預設的登入shell。 -u uid uid用戶的ID值。必須為唯一的ID值,除非用-o選項。數字不可為負值。預設為以/etc/login.defs中的UID_MIN的值為准,0到UID_MIN的值之間,為系統保留的UID ;
useradd 這麼多的參數看上去頭有點暈,我們如何用呢??其實很簡單;一個參數一個參數的試一試不就明白了??這是最好的學習方法。實踐是檢驗真理的唯一標准;
如果useradd 後面直接跟用戶名,不加任何參數,表示添加用戶時按事先/etc/default/adduser 和/etc/login.defs 添加新用戶的配置文件的規則來添加用戶;其實我們為了方便,也可以把這兩個文件修改以適合我們添加用戶需要;
useradd 為什麼還需要那麼多的參數呢?
原因很簡單,主要是為了管理員方便管理用戶。useradd 是靈活的,可以跳過/dev/default/adduser 和/etc/login.defs 兩個配置文件中的規則來自定義添加用戶;比如在用戶的家目錄,在/etc/default/adduser 中可能定義在/home目錄下建立,如果我們的機器/home獨立占一個分區,並且有點緊張,但我們又不想改變/etc/default/adduser 關於家目錄的定義,這裡我們就可以通過 adduser -d 參數把新增用戶家目錄定義到空間比較空閉的分區;
通過下面的幾個例子,可能有助於我們理解useradd ,其實很簡單~,學習也是這樣,先從簡單的入手,一步一步的走過來,沒有什麼難的~~
實例四:以/etc/logins.defs和/etc/default/adduser 默認的規則添加用戶;
[root@localhost ~]# useradd longcpu
注解:如果useradd 後面直接用戶名,表示系統讀取 /etc/login.defs和/etc/default/adduser 配置文件,根本這兩個配置文件所定義的規則來添加用戶,比如用戶的家目錄哪裡,用什麼SHELL,UID和GID的分配... ... 查看/etc/passwd的新增記錄,然後根據 /etc/login.defs和/etc/default/adduser 查看新增用戶是否符合這兩個配置文件所約定的規則;
實例五:練習參數的使用;
[root@localhost ~]# useradd -c ChinaCpu longcpu 注:添加一個新用戶amdcpu ,使用參數-c;[root@localhost ~]# more /etc/passwd grep longcpu 注:查看/etc/passwd 文件,並抽取longcpu的記錄;longcpu:x:510:510:ChinaCpu:/home/longcpu:/bin/bash
注:看上去是已經有amdcpu用戶了;x是密碼段;UID和GID 都是510,ChinaCpu表示是什麼意思? 家目錄位於/home/amdcpu,SHELL是bash ;
[root@localhost ~]# finger longcpu 注:我們查詢一下amdcpu 用戶的信息;Login: longcpu Name: ChinaCpu 注:-c ChinaCpu 表示用戶真實的名字或全名;Directory: /home/longcpu Shell: /bin/bashNever logged in.No mail.No Plan.
注解:這個例子,我們做了添加用戶、查看/etc/passwd 的變化; 並且通過finger 來查詢longcpu用戶的信息,目的是理解參數-c的用處;
參數-c 後面的就是就是UID:GID後面說明文字,這段文字中包括用戶真實姓名,辦公地址,辦公電話等,可以通過chfn 來更改,我們可以通過chfn 來修改用戶信息,然後查看 /etc/passwd 的變化,再來用finger 來查詢用戶信息。幾個工具組合練習一下,也容易忘記;
實例六:自定義用戶的家目錄、SHELL類型、所歸屬的用戶組等;
添加用戶longcpu,並設置其用戶真實名字為ChinaCpu,其家目錄在/opt/longcpu,讓其歸屬為用戶組 linuxsir、root、beinan成員,其SHELL類型為tcsh ;
[root@localhost ~]# useradd -c ChinaCpu -d /opt/longcpu -G linuxsir,root,beinan -s /bin/tcsh longcpu
注:添加用戶longcpu ,真實名是ChinaCpu ,家目錄設置在 /opt/longcpu ,是linuxsir,root,beinan 用戶組成員, SHELL是tcsh ;
[root@localhost ~]# ls -ld /opt/longcpu/ 注:是不是自動創建了longcpu的家目錄?drwxr-xr-x 3 longcpu longcpu 4096 11月 4 22:30 /opt/longcpu/[root@localhost ~]# more /etc/passwd grep longcpu 注:查看 /etc/passwd 中是否有longcpu用戶記錄;longcpu:x:510:510:ChinaCpu:/opt/longcpu:/bin/tcsh[root@localhost beinan]# finger longcpu 注:查詢longcpu用戶的信息 ;Login: longcpu Name: ChinaCpuDirectory: /opt/longcpu Shell: /bin/tcshNever logged in.No mail.No Plan.[root@localhost beinan]# id longcpu 注:查詢UID和GID 以及所歸屬的用戶組;uid=510(longcpu) gid=510(longcpu) groups=510(longcpu),0(root),500(beinan),502(linuxsir)
關於在添加新用戶時用戶組,添加用戶時,如果不使用-n 參數,系統會自動建一個與用戶名同名的用戶組;
實例七:練習用戶有效期限;
在本例中,我們主要來看看-e參數,這個參數還是比較重要的,是設定用戶的帳號什麼時候過期;
在本例中,我們添加了一個帳號,並且設置其帳號在 2005年11月04日之前是有效的,一旦過了這個日期,便停止其登錄;
[root@localhost ~]# useradd -e 11/04/2005 cooler 注:添加用戶cooler,並設置其有效期為2005年11月04日;[root@localhost ~]# passwd cooler 注:設置用戶cooler密碼;Changing password for user cooler.New UNIX password: 注:設定cooler的密碼;Retype new UNIX password: 注:核實設定密碼;passwd: all authentication tokens updated sUCcessfully. 注:設置成功;
如何驗證-e 是不是真的有效?我寫這篇文檔的時間是 2005年11月05號,所以添加這個cooler用戶肯定是過期的,就是他有密碼也不能登錄;
有的弟兄會問,他把有效期的記錄放在哪裡了呢?其實我們在以前的文檔中已經說過了,是寫在/etc/shadow文件中了;
2、adduser 工具;
edora 系統中,adduser和useradd 用法是一樣的,但在 Slackware 系統中 adduser 是通過人機交互的方法來添加用戶,其實和useradd 加各項參數來自定義添加用戶所達到的目的是一樣的,只不過在Slackware 中,useradd 是以人機交互的提問式的進行;這樣我們沒有必要知道那麼多的參數,一樣可以達到自定義添加用戶;
[root@localhost ~]# adduser 注:運行adduser命令;Login name for new user []: bluemoon 注:添加新用戶 bluemoonUser ID ('UID') [ defaults to next available ]: 1200 注:用戶的UID ,UID 是唯一的;如果有提示說被占用,就選比較大的UID ,比如1300Initial group [ users ]: users 注:初始化用戶組(或主用戶組)為users,這個用戶組也是可以自己定義的,但用戶組必須存在,如果不存在,您可以用groupadd來添加Additional groups (comma separated) []: root,beinan 注:附加用戶組,這個也是自己定義的,多個用戶組之間用,號分割;Home directory [ /home/bluemoon ] 注:定義用戶的家目錄位置,也是可以自己定義的,比如/opt/bluemoon ;Shell [ /bin/bash ] 注:所用SHELL ,此處用的是bash ;Expiry date (YYYY-MM-DD) []: 注:用戶的有效日期,如果不設置就直接回車,表示從不過期;如果設置就以2005-11-05這樣的格式來輸入;New account will be created as follows: 注:創建的用戶情況如下;---------------------------------------Login name.......: bluemoonUID..............: 1200Initial group....: usersAdditional groups: rootHome directory...: /home/bluemoonShell............: /bin/bashExpiry date......: [ Never ]This is it... if you want to bail out, hit Control-C. Otherwise, pressENTER to go ahead and make the account.
注:在這裡按回車就開始創建,如果認為這樣不合理,就按CTRL+C 來中斷;
Creating new account... 這樣就創建好了;系統會自動提示我們修改用戶的信息,比如用戶的全名、房間號、電話等...... 以及用戶的密碼;
Changing the user information for bluemoonEnter the new value, or press ENTER for the default Full Name []: bluemoon Linux Room Number []: 503 Work Phone []: 0411-8888888 Home Phone []: 0411-9999999 Other []:Changing password for bluemoonEnter the new password (minimum of 5, maximum of 127 characters)Please use a combination of upper and lower case letters and numbers.New password: 注:設置用戶bluemoon的密碼;Re-enter new password: 注:驗證一次;Password changed. 注:設置密碼成功
3、通過修改/etc/passwd 管理(添加、刪除、修改)用戶的方法;
4、添加用戶組命令groupadd ;
語法格式:
groupadd [-g gid [-o]] [-r] [-f] group
groupadd 可指定用戶組名稱來建立新的用戶組帳號,需要時可從系統中取得新用戶組值。groupadd有下列選項可用。
-g 後接GID值,除非使用-o參數不然該值必須是唯一,不可相同,數值不可為負,預設值以/etc/login.defs為准; -r 此參數是用來建立系統帳號的GID會比定義在系統檔文件上/etc/login.defs 的GID_MIN來的小。注意useradd此用法所建立的帳號不會建立使用者目錄,也不會紀錄在/etc/login.defs.的定義值。如果你想要有使用者目錄須額外指定-m參數來建立系統帳號,它會自動幫你選定一個小於的GID_MIN的值,不需要再加上-g參數。
-f This is force flag.新增一個已經存在的用戶組帳號,系統會出現錯誤訊息然後結束groupadd。如果是這樣的情況,不會新增這個用戶組(如果是這個情況下,系統不會再新增一次) 也可同時加上-g選項,當你加上一個GID,此時GID就不用是唯一值,可不加-o參數,建好用戶組後會顯結果(adding a group as neither -g or -o options were specified)。
其實增加用戶組的,用起來還是簡單一點為好;比如下面的例子,添加GID為666的用戶組Google;
[root@localhost ~]# groupadd -g 666 google
三、passwd 設置或修改用戶密碼;
1、passwd 簡單說明;
我們已經學會如何添加用戶了,所以我們還要學習設置或修改用戶的密碼;passwd命令的用法也很多,我們只選如下的幾個參數加以說明;想了解更多,請參考man passwd或passwd --help ;
passwd [OPTION...]
passwd 作為普通用戶和超級權限用戶都可以運行,但作為普通用戶只能更改自己的用戶密碼,但前提是沒有被root用戶鎖定;如果root用戶運行passwd ,可以設置或修改任何用戶的密碼;
passwd 命令後面不接任何參數或用戶名,則表示修改當前用戶的密碼;請看下面的例子;
[root@localhost ~]# passwd 注:沒有加任何用戶,我是用root用戶來執行的passwd 表示修改root用戶的密碼;下面也有提示;Changing password for user root.New UNIX password: 注:請輸入新密碼;Retype new UNIX password: 注:驗證新密碼;passwd: all authentication tokens updated successfully. 注:修改root密碼成功;
如果是普通用戶執行passwd 只能修改自己的密碼;
如果新建用戶後,要為新用戶創建密碼,則用 passwd 用戶名 ,注意要以root用戶的權限來創建;
[root@localhost ~]# passwd beinan 注:更改或創建beinan用戶的密碼;Changing password for user beinan.New UNIX password: 注:請輸入新密碼;Retype new UNIX password: 注:再輸入一次;passwd: all authentication tokens updated successfully. 注:成功;
普通用戶如果想更改自己的密碼,直接運行passwd即可;比如當前操作的用戶是beinan;
[beinan@localhost ~]$ passwdChanging password for user beinan. 注:更改beinan用戶的密碼;(current) UNIX password: 注:請輸入當前密碼;New UNIX password: 注:請輸入新密碼;Retype new UNIX password: 注:確認新密碼;passwd: all authentication tokens updated successfully. 注:更改成功;
2、passwd 幾個比較重要的參數;
[root@localhost beinan]# passwd --helpUsage: passwd [OPTION...] <accountName> -k, --keep-tokens keep non-expired authentication tokens 注:保留即將過期的用戶在期滿後能仍能使用; -d, --delete delete the password for the named account (root only) 注:刪除用戶密碼,僅能以root權限操作; -l, --lock lock the named account (root only) 注:鎖住用戶無權更改其密碼,僅能通過root權限操作; -u, --unlock unlock the named account (root only) 注:解除鎖定; -f, --force force operation 注:強制操作;僅root權限才能操作; -x, --maximum=DAYS maximum password lifetime (root only) 注:兩次密碼修正的最大天數,後面接數字;僅能root權限操作; -n, --minimum=DAYS minimum password lifetime (root only) 注:兩次密碼修改的最小天數,後面接數字,僅能root權限操作; -w, --warning=DAYS number of days warning users receives before 注:在距多少天提醒用戶修改密碼;僅能root權限操作; password expiration (root only) -i, --inactive=DAYS number of days after password expiration when an 注:在密碼過期後多少天,用戶被禁掉,僅能以root操作; account becomes disabled (root only) -S, --status report password status on the named account (root 注:查詢用戶的密碼狀態,僅能root用戶操作; only) --stdin read new tokens from stdin (root only)
比如我們讓某個用戶不能修改密碼,可以用-l 參數來鎖定:
[root@localhost ~]# passwd -l beinan 注:鎖定用戶beinan不能更改密碼;Locking password for user beinan.passwd: Success 注:鎖定成功;[beinan@localhost ~]# su beinan 注:通過su切換到beinan用戶;[beinan@localhost ~]$ passwd 注:beinan來更改密碼;Changing password for user beinan.Changing password for beinan(current) UNIX password: 注:輸入beinan的當前密碼;passwd: Authentication token manipulation error 注:失敗,不能更改密碼;
再來一例:
[root@localhost ~]# passwd -d beinan 注:清除beinan用戶密碼;Removing password for user beinan.passwd: Success 注:清除成功;[root@localhost ~]# passwd -S beinan 注:查詢beinan用戶密碼狀態;Empty password. 注:空密碼,也就是沒有密碼;
注意: 當我們清除一個用戶的密碼時,登錄時就無需密碼;這一點要加以注意;
3、chage 修改用戶密碼有效期限的命令;
hage 用語法格式:
chage [-l] [-m 最小天數] [-M 最大天數] [-W 警告] [-I 失效日] [-E 過期日] [-d 最後日] 用戶
前面已經說的好多了,這個只是一筆帶過吧,知道有這個命令就行,自己實踐實踐再說,大體和psswd有些參數的用法差不多;
四、刪除用戶和用戶組的工具, userdel和 groupdel 介紹;
1、userdel 用法;
userdel 的語法格式:
userdel [-r] 名稱
userdel很簡單,只有一個參數可選 -r ;如果加參數-r ,表示在刪除用戶的同時,一並把用戶的家目錄及本地郵件存儲的目錄或文件也一同刪除;比如我們現在有兩個用戶bnnb和lanhaitun,其家目錄都位於/home目錄中,現在我們來刪除這兩個用戶;
[root@localhost ~]# userdel bnnb 注:刪除用戶bnnb,但不刪除其家目錄及文件;[root@localhost ~]# ls -ld /home/bnnb 注:查看其家目錄是否存在;drwxr-xr-x 14 501 501 4096 8月 29 16:33 /home/bnnb 注:存在;[root@localhost ~]# ls -ld /home/lanhaitun 注:查看lanhaitun家目錄是否存在;drwx------ 4 lanhaitun lanhaitun 4096 11月 5 14:50 /home/lanhaitun 注:存在;[root@localhost ~]# userdel -r lanhaitun 注:刪除用戶lanhaitun,其家目錄及文件一並刪除;[root@localhost ~]# ls -ld /home/lanhaitun 注:查看是否在刪除lanhaitun 用戶的同時,也一並把其家目錄和文件一同刪除;ls: /home/lanhaitun: 沒有那個文件或目錄 注:已經刪除;
警告: 請不要輕易用-r參數;他會刪除用戶的同時刪除用戶所有的文件和目錄,切記;如果用戶目錄下有重要的文件,在刪除前請備份;
其實也有最簡單的辦法,但這種辦法有點不安全,也就是直接在/etc/passwd中刪除您想要刪除用戶的記錄;但最好不要這樣做,/etc/passwd 是極為重要的文件,可能您一不小心會操作失誤;
2、groupdel的用法;
groupdel 是用來刪除用戶組的;
語法格式:groupdel 用戶組
比如:
[root@localhost ~]# groupdel lanhaitun
五、修改用戶的工具介紹;
我們前面已經多次說過用戶配置文件的重要性了,其實我們無論怎麼改,都是改與用戶相關的配置文件;如果我們與用戶相關的配置文件的規則,可以直接修改配置文件,在這裡就不再多說了,請參看相關文檔吧,謝謝;
1、chfn 修改用戶信息工具;
chfn 這個工具主要是用來改用戶的全名,辦公室地址,電話之類的;用法如下:
chfn [ -f full-name ] [ -o Office ] [ -p office-phone ] [ -h home-phone ] [ -u ] [ -v ] [ username ]
最簡單的方法是
chfn 用戶名
[root@localhost ~]# chfn beinanlinux 注:更改用戶beinanlinux的信息;Changing finger information for beinanlinux.Name []: BeiNan.Linux 注:用戶全名BeiNan.Linux ,隨便寫一個就行;Office []: ChinaDLOffice Phone []: 66666666Home Phone []: 99999999Finger information changed. 注:更改完成;
我們怎麼能知道更改好了呢??可以通過finger 或直接查看/etc/passwd文件;
[root@localhost ~]# finger beinanlinuxLogin: beinanlinux Name: BeiNan.LinuxDirectory: /home/beinanlinux Shell: /bin/bashOffice: ChinaDL Home Phone: 99999999Last login Sat Nov 5 11:27 (CST) on tty2No mail.No Plan.
chfn 究竟改了/etc/passwd 文件中beinanlinux用戶的哪部份呢??
[root@localhost ~]# more /etc/passwd grep beinanlinuxbeinanlinux:x:509:509:BeiNan.Linux,ChinaDL,66666666,99999999:/home/beinanlinux:/bin/bash
通過more /etc/passwd ,然後來抽取 beinanlinux記錄,看一下紅字標出的,就是我們通過chfn 修改過的地方,所以我們可以直接通過修改/etc/passwd文件來達到目的;
2、chsh 改變用戶的SHELL類型;
[root@localhost ~]# chsh --helpUsage: chsh [ -s shell ] [ --list-shells ] [ --help ] [ --version ] [ username ]
如果chsh 不加任何參數及用戶名的情況下,默認為更改當前操作用戶的SHELL類型;
舉例說明:
[root@localhost ~]# chsh --list-shells 注:列出當前系統中所有的SHELL;/bin/sh/bin/bash/sbin/nologin 注:這個是不允許用戶登錄系統所用,是極為有用的;您可以通過查看/etc/passwd 中看哪些用戶是nologin;/bin/ksh/bin/tcsh/bin/csh/bin/zsh[root@localhost ~]# finger beinanlinux grep Shell 注:查看用戶beinanlinux 所用的SHELL類型;Directory: /home/beinanlinux Shell: /bin/bash 注:beinanlinux用的是bash ;[root@localhost ~]# chsh -s /bin/ksh beinanlinux 注:更改beinanlinux所用的shell 為ksh ;Changing shell for beinanlinux.Shell changed. 注:更改完成;[root@localhost ~]# finger beinanlinux grep Shell 注:再次查詢beinanlinux所用的SHELL;Directory: /home/beinanlinux Shell: /bin/ksh 注:看來已經改過來了;
chsh 還是有用的,特加是不允許用戶登錄時,我們可以把用戶的SHELL改到 /sbin/nologin;系統中一些虛擬用戶大多是不能登錄系統的,這對於系統安全來說是極為重要;通過下面的命令查看一下系統中哪些用戶是沒有登錄權限的?
[root@localhost ~]# more /etc/passwd grep nologin
3、usermod 用戶修改工具(極其強大)
usermod 不僅能改用戶的SHELL類型,所歸屬的用戶組,也能改用戶密碼的有效期,還能改登錄名。usermod 如此看來就是能做到用戶帳號大轉移;比如我把用戶A改為新用戶B;
usermod [-u uid [-o]] [-g group] [-G group,...] [-d 主目錄 [-m]] [-s shell] [-c 注釋] [-l 新名稱] [-f 失效日] [-e 過期日] [-p 密碼] [-L-U] 用戶名
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會自動改變。放在用戶目錄外的檔案則要自行手動更動。
警告:usermod不允許你改變正在線上的用戶帳號名稱。當usermod用來改變userID,必須確認這名user沒在電腦上執行任何程序。你需手動更改用戶的crontab檔。也需手動更改用戶的at工作檔。采用NISserver須在server上更動相關的NIS設定。
舉個簡單的例子,我們在前面說了關於useradd的工具,而usermod 工具和useradd的參數差不多;兩者不同之處在於useradd是添加,usermod 是修改;
[root@localhost ~]# usermod -d /opt/linuxfish -m -l fishlinux -U linuxfish
注:把linuxfish 用戶名改為fishlinux ,並且把其家目錄轉移到 /opt/linuxfish ;[root@localhost ~]# ls -la /opt/linuxfish/ 注:查看用戶fishlinux的家目錄下的文件及屬主;
總用量 48drwxr-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 .gtkrcdrwxr-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[root@localhost ~]# more /etc/passwd grep fishlinux 注:查看有關fishlinux的記錄;fishlinux:x:512:512::/opt/linuxfish:/bin/bash
通過上面的例子,我們發現文件的用戶組還沒有變,如果您想改變為fishlinux用戶組,如果想用通過 usermod來修改,就要先添加fishlinux用戶組;然後用usermod -g 來修改 ,也可以用chown -R fishlinux:fishlinux /opt/finshlinux 來改;
警告: usermod 最好不要用它來改用戶的密碼,因為他在/etc/shadow中顯示的是明口令;修改用戶的口令最好用passwd ;
[root@localhost ~]# usermod -p 123456 fishlinux 注:修改fishlinux的口令是123456 ;[root@localhost ~]# more /etc/shadow grep fishlinux 注:查詢/etc/shadow文件中fishlinux的口令;我們看到明顯是沒有加密;fishlinux:123456:13092:0:99999:7:::
4、userinfo 圖形介面的修改工具;
userinfo 系統普通用戶都能調用,但都是修改當前操作用戶的;還是點鼠標完成吧,多點幾下就OK了。