LINUX使用者和使用者組配置檔案詳解(轉)

gugu99發表於2007-08-10
LINUX使用者和使用者組配置檔案詳解(轉)[@more@]

  使用者(User)和使用者組(Group)的配置檔案,是系統管理員最應該瞭解和掌握的系統基礎檔案之一,從另一方面來說,瞭解這些檔案也是系統安全管理的重要組成部份;做為一個合格的系統管理員應該對使用者和使用者組配置檔案透徹瞭解才行;

  一、使用者(User)相關;

  談到使用者,就不得不談使用者管理,使用者配置檔案,以及使用者查詢和管理的控制工具;使用者管理主要透過修改使用者配置檔案完成;使用者管理控制工具最終目的也是為了修改使用者配置檔案。

  什麼是使用者查詢和管理控制工具呢?使用者查詢和控制工具是查詢、新增、修改和刪除使用者等系統管理工具,比如查詢使用者的id和finger命令,新增使用者的useradd 或adduser 、userdel 使用者的刪除 、設定密碼的passwd命令 、修改使用者usermod 等等;我們需要知道的是透過使用者查詢和控制工具所進行的動作的最終目的也是修改使用者配置檔案;所以我們進行使用者管理的時候,直接修改使用者配置檔案一樣可以達到使用者管理的目的;

  透過上面的解說,我們能實實在在的感覺到使用者(User)配置檔案的重要性;其實使用者和使用者組在系統管理中是不可分割的,但為了說明問題,我們還是得把使用者(User)的配置檔案單列出來解說,其中包括/etc/passwd 和/etc/shadow 檔案;在這之中,你還能瞭解UID的重要性;

  透過本標題,您可以瞭解或掌握的內容有:瞭解/etc/passwd和/etc/shadow;什麼UID ;

  與使用者相關的系統配置檔案主要有/etc/passwd 和/etc/shadow,其中/etc/shadow是使用者資訊的加密檔案,比如使用者的密碼口令的加密儲存等;/etc/passwd 和/etc/shadow 檔案是互補的;我們可以透過對比兩個檔案來差看他們的區別;

  1、關於/etc/passwd 和 UID;

  /etc/passwd 是系統識別使用者的一個檔案,做個不恰當的比喻,/etc/passwd 是一個花名冊,系統所有的使用者都在這裡有登入記載;當我們以beinan 這個賬號登入時,系統首先會查閱 /etc/passwd 檔案,看是否有beinan 這個賬號,然後確定beinan的UID,透過UID 來確認使用者和身份,如果存在則讀取/etc/shadow 影子檔案中所對應的beinan的密碼;如果密碼核實無誤則登入系統,讀取使用者的配置檔案;

  1)/etc/passwd 的內容理解:

  在/etc/passwd 中,每一行都表示的是一個使用者的資訊;一行有7個段位;每個段位用:號分割,比如下面是我的系統中的/etc/passwd 的兩行;

  beinan:x:500:500:beinan sun:/home/beinan:/bin/bash

linuxsir:x:505:502:linuxsir open,linuxsir office,13898667715:/home/linuxsir:/bin/bash

beinan:x:500:500:beinan sun:/home/beinan:/bin/bash

linuxsir:x:501:502::/home/linuxsir:/bin/bash

  第一欄位:使用者名稱(也被稱為登入名);在上面的例子中,我們看到這兩個使用者的使用者名稱分別是 beinan 和linuxsir;

  第二欄位:口令;在例子中我們看到的是一個x,其實密碼已被對映到/etc/shadow 檔案中;

  第三欄位:UID ;請參看本文的UID的解說;

  第四欄位:GID;請參看本文的GID的解說;

  第五欄位:使用者名稱全稱,這是可選的,可以不設定,在beinan這個使用者中,使用者的全稱是beinan sun ;而linuxsir 這個使用者是沒有設定全稱;

  第六欄位:使用者的家目錄所在位置;beinan 這個使用者是/home/beinan ,而linuxsir 這個使用者是/home/linuxsir ;

  第七欄位:使用者所用SHELL 的型別,beinan和linuxsir 都用的是 bash ;所以設定為/bin/bash ;

  2)關於UID 的理解:

  UID 是使用者的ID 值,在系統中每個使用者的UID的值是唯一的,更確切的說每個使用者都要對應一個唯一的UID ,系統管理員應該確保這一規則。系統使用者的UID的值從0開始,是一個正整數,至於最大值可以在/etc/login.defs 可以查到,一般Linux發行版約定為60000; 在Linux 中,root的UID是0,擁有系統最高許可權;

  UID 在系統唯一特性,做為系統管理員應該確保這一標準,UID 的唯一性關係到系統的安全,應該值得我們關注!比如我在/etc/passwd 中把beinan的UID 改為0後,你設想會發生什麼呢?beinan這個使用者會被確認為root使用者。beinan這個帳號可以進行所有root的操作;

  UID 是確認使用者許可權的標識,使用者登入系統所處的角色是透過UID 來實現的,而非使用者名稱,切記;把幾個使用者共用一個UID 是危險的,比如我們上面所談到的,把普通使用者的UID 改為0,和root共用一個UID ,這事實上就造成了系統管理許可權的混亂。如果我們想用root許可權,可以透過su或sudo來實現;切不可隨意讓一個使用者和root分享同一個UID ;

  UID是唯一性,只是要求管理員所做的,其實我們修改/etc/passwd 檔案,可以修改任何使用者的UID的值為0,

  一般情況下,每個Linux的發行版都會預留一定的UID和GID給系統虛擬使用者佔用,虛擬使用者一般是系統安裝時就有的,是為了完成系統任務所必須的使用者,但虛擬使用者是不能登入系統的,比如ftp、nobody、adm、rpm、bin、shutdown等;

  在Fedora 系統會把前499 個UID和GID 預留出來,我們新增新使用者時的UID 從500開始的,GID也是從500開始,至於其它系統,有的系統可能會把前999UID和GID預留出來;以各個系統中/etc/login.defs中的 UID_MIN 的最小值為準; Fedora 系統 login.defs的UID_MIN是500,而UID_MAX 值為60000,也就是說我們透過adduser預設新增的使用者的UID的值是500到60000之間;而Slackware 透過adduser不指定UID來新增使用者,預設UID 是從1000開始;

  2、關於/etc/shadow ;

  1)/etc/shadow 概說;

  /etc/shadow檔案是/etc/passwd 的影子檔案,這個檔案並不由/etc/passwd 而產生的,這兩個檔案是應該是對應互補的;shadow內容包括使用者及被加密的密碼以及其它/etc/passwd 不能包括的資訊,比如使用者的有效期限等;這個檔案只有root許可權可以讀取和操作,許可權如下:

  -r-------- 1 root root 1.5K 10月 16 09:49 /etc/shadow

  /etc/shadow 的許可權不能隨便改為其它使用者可讀,這樣做是危險的。如果您發現這個檔案的許可權變成了其它使用者組或使用者可讀了,要進行檢查,以防系統安全問題的發生;

  如果我們以普通使用者檢視這個檔案時,應該什麼也檢視不到,提示是許可權不夠:

  [beinan@localhost ~]$ more /etc/shadow

/etc/shadow: 許可權不夠

  2)/etc/shadow 的內容分析;

  /etc/shadow 檔案的內容包括9個段位,每個段位之間用:號分割;我們以如下的例子說明;

  beinan:$1$VE.Mq2Xf$2c9Qi7EQ9JP8GKF8gH7PB1:13072:0:99999:7:::

linuxsir:$1$IPDvUhXP$8R6J/VtPXvLyXxhLWPrnt/:13072:0:99999:7::13108:

  第一欄位:使用者名稱(也被稱為登入名),在/etc/shadow中,使用者名稱和/etc/passwd 是相同的,這樣就把passwd 和shadow中用的使用者記錄聯絡在一起;這個欄位是非空的;

  第二欄位:密碼(已被加密),如果是有些使用者在這段是x,表示這個使用者不能登入到系統;這個欄位是非空的;

  第三欄位:上次修改口令的時間;這個時間是從1970年01月01日算起到最近一次修改口令的時間間隔(天數),您可以透過passwd 來修改使用者的密碼,然後檢視/etc/shadow中此欄位的變化;

  第四欄位:兩次修改口令間隔最少的天數;如果設定為0,則禁用此功能;也就是說使用者必須經過多少天才能修改其口令;此項功能用處不是太大;預設值是透過/etc/login.defs檔案定義中獲取,PASS_MIN_DAYS 中有定義;

  第五欄位:兩次修改口令間隔最多的天數;這個能增強管理員管理使用者口令的時效性,應該說在增強了系統的安全性;如果是系統預設值,是在新增使用者時由/etc/login.defs檔案定義中獲取,在PASS_MAX_DAYS 中定義;

  第六欄位:提前多少天警告使用者口令將過期;當使用者登入系統後,系統登入程式提醒使用者口令將要作廢;如果是系統預設值,是在新增使用者時由/etc/login.defs檔案定義中獲取,在PASS_WARN_AGE 中定義;

  第七欄位:在口令過期之後多少天禁用此使用者;此欄位表示使用者口令作廢多少天后,系統會禁用此使用者,也就是說系統會不能再讓此使用者登入,也不會提示使用者過期,是完全禁用;

  第八欄位:使用者過期日期;此欄位指定了使用者作廢的天數(從1970年的1月1日開始的天數),如果這個欄位的值為空,帳號永久可用;

  第九欄位:保留欄位,目前為空,以備將來Linux發展之用;

  如果更為詳細的,請用 man shadow來檢視幫助,您會得到更為詳盡的資料;

  我們再根據例項分析:

  beinan:$1$VE.Mq2Xf$2c9Qi7EQ9JP8GKF8gH7PB1:13072:0:99999:7:::

linuxsir:$1$IPDvUhXP$8R6J/VtPXvLyXxhLWPrnt/:13072:0:99999:7::13108:

  第一欄位:使用者名稱(也被稱之為登入名),在例子中有峽谷兩條記錄,也表示有兩個使用者beinan和linuxsir

  第二欄位:被加密的密碼,如果有的使用者在此欄位中是x,表示這個使用者不能登入系統,也可以看作是虛擬使用者,不過虛擬使用者和真實使用者都是相對的,系統管理員隨時可以對任何使用者操作;

  第三欄位:表示上次更改口令的天數(距1970年01月01日),上面的例子能說明beinan和linuxsir這兩個使用者,是在同一天更改了使用者密碼,當然是透過passwd 命令來更改的,更改密碼的時間距1970年01月01日的天數為13072;

  第四欄位:禁用兩次口令修改之間最小天數的功能,設定為0

  第五欄位:兩次修改口令間隔最多的天數,在例子中都是99999天;這個值如果在新增使用者時沒有指定的話,是透過/etc/login.defs來獲取預設值,PASS_MAX_DAYS 99999;您可以檢視/etc/login.defs來檢視,具體的值;

  第六欄位:提前多少天警告使用者口令將過期;當使用者登入系統後,系統登入程式提醒使用者口令將要作廢;如果是系統預設值,是在新增使用者時由/etc/login.defs檔案定義中獲取,在PASS_WARN_AGE 中定義;在例子中的值是7 ,表示在使用者口令將過期的前7天警告使用者更改期口令;

  第七欄位:在口令過期之後多少天禁用此使用者;此欄位表示使用者口令作廢多少天后,系統會禁用此使用者,也就是說系統會不能再讓此使用者登入,也不會提示使用者過期,是完全禁用;在例子中,此欄位兩個使用者的都是空的,表示禁用這個功能;

  第八欄位:使用者過期日期;此欄位指定了使用者作廢的天數(從1970年的1月1日開始的天數),如果這個欄位的值為空,帳號永久可用;在例子中,我們看到beinan這個使用者在此欄位是空的,表示此使用者永久可用;而linuxsir這個使用者表示在距1970年01月01日後13108天后過期,算起來也就是2005年11月21號過期;哈哈,如果有興趣的的弟兄,自己來算算,大體還是差不多的;);

  第九欄位:保留欄位,目前為空,以備將來Linux發展之用;

  二、關於使用者組;

  具有某種共同特徵的使用者集合起來就是使用者組(Group)。使用者組(Group)配置檔案主要有 /etc/group和/etc/gshadow,其中/etc/gshadow是/etc/group的加密資訊檔案;在本標題下,您還能瞭解到什麼是GID ;

  1、/etc/group 解說;

  /etc/group 檔案是使用者組的配置檔案,內容包括使用者和使用者組,並且能顯示出使用者是歸屬哪個使用者組或哪幾個使用者組,因為一個使用者可以歸屬一個或多個不同的使用者組;同一使用者組的使用者之間具有相似的特徵。比如我們把某一使用者加入到root使用者組,那麼這個使用者就可以瀏覽root使用者家目錄的檔案,如果root使用者把某個檔案的讀寫執行許可權開放,root使用者組的所有使用者都可以修改此檔案,如果是可執行的檔案(比如指令碼),root使用者組的使用者也是可以執行的;

  使用者組的特性在系統管理中為系統管理員提供了極大的方便,但安全性也是值得關注的,如某個使用者下有對系統管理有最重要的內容,最好讓使用者擁有獨立的使用者組,或者是把使用者下的檔案的許可權設定為完全私有;另外root使用者組一般不要輕易把普通使用者加入進去,

  2、/etc/group 內容具體分析

  /etc/group 的內容包括使用者組(Group)、使用者組口令、GID及該使用者組所包含的使用者(User),每個使用者組一條記錄;格式如下:

  group_name:passwd:GID:user_list

  在/etc/group 中的每條記錄分四個欄位:

  第一欄位:使用者組名稱;

  第二欄位:使用者組密碼;

  第三欄位:GID

  第四欄位:使用者列表,每個使用者之間用,號分割;本欄位可以為空;如果欄位為空表示使用者組為GID的使用者名稱;

  我們舉個例子:

  root:x:0:root,linuxsir 注:使用者組root,x是密碼段,表示沒有設定密碼,GID是0,root使用者組下包括root、linuxsir以及GID為0的其它使用者(可以透過/etc/passwd檢視);;

beinan:x:500:linuxsir 注:使用者組beinan,x是密碼段,表示沒有設定密碼,GID是500,beinan使用者組下包括linuxsir使用者及GID為500的使用者(可以透過/etc/passwd檢視);

linuxsir:x:502:linuxsir 注:使用者組linuxsir,x是密碼段,表示沒有設定密碼,GID是502,linuxsir使用者組下包使用者linuxsir及GID為502的使用者(可以透過/etc/passwd檢視);

helloer:x:503: 注:使用者組helloer,x是密碼段,表示沒有設定密碼,GID是503,helloer使用者組下包括GID為503的使用者,可以透過/etc/passwd檢視;

  而/etc/passwd 對應的相關的記錄為:

  root:x:0:0:root:/root:/bin/bash

beinan:x:500:500:beinan sun:/home/beinan:/bin/bash

linuxsir:x:505:502:linuxsir open,linuxsir office,13898667715:/home/linuxsir:/bin/bash

helloer:x:502:503::/home/helloer:/bin/bash

  由此可以看出helloer使用者組包括 helloer使用者;所以我們檢視一個使用者組所擁有的使用者,可以透過對比/etc/passwd和/etc/group來得到;

  2、關於GID ;

  GID和UID類似,是一個正整數或0,GID從0開始,GID為0的組讓系統付予給root使用者組;系統會預留一些較靠前的GID給系統虛擬使用者(也被稱為偽裝使用者)之用;每個系統預留的GID都有所不同,比如Fedora 預留了500個,我們新增新使用者組時,使用者組是從500開始的;而Slackware 是把前100個GID預留,新新增的使用者組是從100開始;檢視系統新增使用者組預設的GID範圍應該檢視 /etc/login.defs 中的 GID_MIN 和GID_MAX 值;

  我們可以對照/etc/passwd和/etc/group 兩個檔案;我們會發現有預設使用者組之說;我們在 /etc/passwd 中的每條使用者記錄會發現使用者預設的GID ;在/etc/group中,我們也會發現每個使用者組下有多少個使用者;在建立目錄和檔案時,會使用預設的使用者組;我們還是舉個例子;

  比如我把linuxsir 加為root使用者組,在/etc/passwd 和/etc/group 中的記錄相關記錄為:

  linuxsir使用者在 /etc/passwd 中的記錄;我們在這條記錄中看到,linuxsir使用者預設的GID為502;而502的GID 在/etc/group中查到是linuxsir使用者組;

  linuxsir:x:505:502:linuxsir open,linuxsir office,13898667715:/home/linuxsir:/bin/bash

  linuxsir 使用者在 /etc/group 中的相關記錄;在這裡,我們看到linuxsir使用者組的GID 為502,而linuxsir 使用者歸屬為root、beinan使用者組;

  root:x:0:root,linuxsir

beinan:x:500:linuxsir

linuxsir:x:502:linuxsir

  我們用linuxsir 來建立一個目錄,以觀察linuxsir使用者建立目錄的許可權歸屬;

  [linuxsir@localhost ~]$ mkdir testdir

[linuxsir@localhost ~]$ ls -lh

總用量 4.0K

drwxrwxr-x 2 linuxsir linuxsir 4.0K 10月 17 11:42 testdir

  透過我們用linuxsir 來建立目錄時發現,testdir的許可權歸屬仍然是linuxsir使用者和linuxsir使用者組的;而沒有歸屬root和beinan使用者組,明白了吧;

  但值得注意的是,判斷使用者的訪問許可權時,預設的GID 並不是最重要的,只要一個目錄讓同組使用者可以訪問的許可權,那麼同組使用者就可以擁有該目錄的訪問權,在這時使用者的預設GID 並不是最重要的;

  3、/etc/gshadow 解說;

  /etc/gshadow是/etc/group的加密資訊檔案,比如使用者組(Group)管理密碼就是存放在這個檔案。/etc/gshadow和/etc/group是互補的兩個檔案;對於大型伺服器,針對很多使用者和組,定製一些關係結構比較複雜的許可權模型,設定使用者組密碼是極有必要的。比如我們不想讓一些非使用者組成員永久擁有使用者組的許可權和特性,這時我們可以透過密碼驗證的方式來讓某些使用者臨時擁有一些使用者組特性,這時就要用到使用者組密碼;

  /etc/gshadow 格式如下,每個使用者組獨佔一行;

  groupname:password:admin,admin,...:member,member,...

  第一欄位:使用者組

  第二欄位:使用者組密碼,這個段可以是空的或!,如果是空的或有!,表示沒有密碼;

  第三欄位:使用者組管理者,這個欄位也可為空,如果有多個使用者組管理者,用,號分割;

  第四欄位:組成員,如果有多個成員,用,號分割;

  舉例:

  beinan:!::linuxsir

linuxsir:oUS/q7NH75RhQ::linuxsir

  第一欄位:這個例子中,有兩個使用者組beinan用linuxsir

  第二欄位:使用者組的密碼,beinan使用者組無密碼;linuxsir使用者組有已經,已經加密;

  第三欄位:使用者組管理者,兩者都為空;

  第四欄位:beinan使用者組所擁有的成員是linuxsir ,然後還要對照一下/etc/group和/etc/passwd 檢視是否還有其它使用者,一般預設新增的使用者,有時同時也會建立使用者組和使用者名稱同名稱; linuxsir 使用者組有成員linuxisir ;

  如何設定使用者組的密碼? 我們可以透過 gpasswd 來實現;不過一般的情況下,沒有必要設定使用者組的密碼;不過自己實踐一下也有必要;下面是一個為linuxsir使用者組設定密碼的例子;

  gpasswd 的用法: gpasswd 使用者組

  root@localhost ~]# gpasswd linuxsir

正在修改 linuxsir 組的密碼

新密碼:

請重新輸入新密碼:

  使用者組之間的切換,應該用 newgrp ,這個有點象使用者之間切換的su ;我先舉個例子:

  [beinan@localhost ~]$ newgrp linuxsir

密碼:

[beinan@localhost ~]$ mkdir lingroup

[beinan@localhost ~]$ ls -ld lingroup/

drwxr-xr-x 2 beinan linuxsir 4096 10月 18 15:56 lingroup/

[beinan@localhost ~]$ newgrp beinan

[beinan@localhost ~]$ mkdir beinangrouptest

[beinan@localhost ~]$ ls -ld beinangrouptest

drwxrwxr-x 2 beinan beinan 4096 10月 18 15:56 beinangrouptest

  說明:我是以beinan使用者組切換到linuxsir使用者組,並且建了一個目錄,然後再切換回beinan使用者組,又建了一個目錄,請觀察兩個目錄屬使用者組的不同;還是自己體會吧;

  三、透過使用者和使用者組配置檔案來查詢或管理使用者;

  1、使用者和使用者組查詢的方法;

  1)透過檢視使用者(User)和使用者組的配置檔案的辦法來檢視使用者資訊

  我們已經使用者(User)和使用者組(Group)的配置檔案已經有個基本的瞭解,透過檢視使用者(User)和使用者組的配置檔案,我們就能做到對系統使用者的瞭解,當然您也可以透過id 或finger 等工具來進行使用者的查詢等任務。

  對於檔案的檢視,我們可以透過 more 或cat 來檢視,比如 more /etc/passwd 或cat /etc/passwd ;其它工具也一樣,能對文字檢視就行,比如less 也好

  比如我們可以透過more 、cat 、less命令對/etc/passwd 的檢視,雖然命令不同,但達到的目的是一樣的, 都是得到/etc/passwd 的內容;

  [root@localhost ~]# more /etc/passwd

[root@localhost ~]# cat /etc/passwd

[root@localhost ~]# less /etc/passwd

  2)透過id和finger 工具來獲取使用者資訊;

  除了直接檢視使用者(User)和使用者組(Group)配置檔案的辦法除外,我們還有id和finger工具可用,我們一樣透過命令列的操作,來完成對使用者的查詢;id和finger,是兩個各有測重的工具,id工具更測重使用者、使用者所歸屬的使用者組、UID 和GID 的檢視;而finger 測重使用者資訊的查詢,比如使用者名稱(登入名)、電話、家目錄、登入SHELL型別、真實姓名、空閒時間等等;

  id 命令用法;

  id 選項 使用者名稱

  比如:我想查詢beinan和linuxsir 使用者的UID、GID 以及歸屬使用者組的情況:

  [root@localhost ~]# id beinan

uid=500(beinan) gid=500(beinan) groups=500(beinan)

注:beinan的UID 是 500,預設使用者組是beinan,預設使用者組的GID 是500,歸屬於beinan使用者組;

[root@localhost ~]# id linuxsir

uid=505(linuxsir) gid=502(linuxsir) groups=502(linuxsir),0(root),500(beinan)

注:linuxsir的UID 是505,預設使用者組是linuxsir ,預設使用者組的GID 是502,歸屬於linuxsir(GID為502)、root(GID為0),beinan(GID為500);

  關於id的詳細用法,我會在專門使用者查詢的文章來介紹;您可以透過man id 來檢視用法,用起來還是比較簡單的;

  finger 的用法

  finger 選項 使用者名稱1 使用者名稱2 ...

  詳細用法請參看man finger ;關於更為詳細用法,我會在專門使用者查詢的文章來介紹;

  如果finger 不加任何引數和使用者,會顯示出當前線上使用者,和w命令類似;對比一下;不過各有測重;

  [root@localhost ~]# w

 14:02:42 up 1:03, 3 users, load average: 0.04, 0.15, 0.18

USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT

linuxsir tty1 - 13:39 22:51 0.01s 0.01s -bash

beinan tty2 - 13:53 8:48 11.62s 0.00s /bin/sh /usr/X1

beinan pts/0 :0.0 13:57 0.00s 0.14s 1.08s gnome-terminal

[root@localhost ~]# finger

Login Name Tty Idle Login Time Office Office Phone

beinan beinan sun tty2 8 Oct 18 13:53

beinan beinan sun pts/0 Oct 18 13:57 (:0.0)

linuxsir linuxsir open tty1 22 Oct 18 13:39 linuxsir o +1-389-866-771

  如果我們在finger 後面加上使用者名稱,就可以看到使用者更為詳細的資訊,可以一次檢視多個使用者,用空格分開,比如下面的例子中,我們一次查詢兩個使用者beinan和linuxsir的資訊;

  [root@localhost ~]# finger beinan linuxsir

Login: beinan 注:使用者名稱(也是登入名) Name: beinan sun (使用者名稱全稱)

Directory: /home/beinan 注:家目錄 Shell: /bin/bash 注:所用SHELL型別

On since Tue Oct 18 13:53 (CST) on tty2 10 minutes 55 seconds idle 注:空閒時間;

On since Tue Oct 18 13:57 (CST) on pts/0 from :0.0

No mail.

No Plan.

Login: linuxsir Name: linuxsir open

Directory: /home/linuxsir Shell: /bin/bash

Office: linuxsir office, +1-389-866-7715

On since Tue Oct 18 13:39 (CST) on tty1 24 minutes 58 seconds idle

No mail.

No Plan.

  3)使用者組查詢的辦法;

  我們可以透過使用者來查詢所歸屬的組,用groups 來查詢;比如我查詢beinan和linuxsir 所歸屬的組,我們可以用groups 來查詢;

  [root@localhost ~]# groups beinan linuxsir

beinan : beinan

linuxsir : linuxsir root beinan

注:這是透過groups 同時檢視了使用者beinan和linuxsir所歸屬的組;

  2、透過修改使用者(User)和使用者組(Group)配置檔案的辦法來新增;

  由於我們已經在前面說過,可以透過修改配置檔案的辦法來管理使用者,所以此主題應該包括此內容;當然透過使用者及使用者組管理工具(比如 adduser、userdel、usermod 、userinfo、groupadd 、groupdel 、groupmod等)也是可以的,透過管理工具對使用者的管理我們將要在專門一篇文章中介紹;

  透過修改使用者(User)和使用者組(Group)配置檔案的方法管理使用者之使用者的新增流程;

  我們先以新增使用者為例,對使用者的刪除和修改都比較簡單;

  1)修改 /etc/passwd ,新增使用者記錄;

  我們按/etc/passwd的格式的約定來新增新的使用者記錄;當然您要讓一個使用者失效,可以刪除您想要刪除的使用者記錄;值得注意的是,不能讓UID 重複;

  比如我想新增lanhaitun 這個使用者,我發現UID 508沒有使用者用,並且我想把其使用者組也設定為lanhaitun ,使用者組的GID 也設定為508,如果GID 沒有佔用的話;

  我們要開啟 /etc/passwd ,在最下面加一行;

  lanhaitun:x:508:508::/home/lanhaitun:/bin/bash

  然後執行pwconv ,讓/etc/passwd 和/etc/shadow同步,您可以檢視 /etc/shadow的內容是否同步;

  [root@localhost beinan]# pwconv

  2)修改/etc/group

  首先,我們得檢視是否有lanhaitun使用者組,以及GID 508 是否被其它使用者組佔用;

  [root@localhost ~]# more /etc/group |grep lanhaitun

[root@localhost ~]# more /etc/group |grep 508

  透過檢視,我們發現沒有被佔用;所以我們要新增lanhaitun 的記錄到 /etc/group

  lanhaitun:x:508:

  其次,是執行 grpconv 來同步/etc/group 和/etc/gshadow內容,您可以透過檢視/etc/gshadow的內容變化確認是不是新增組成功了;

  [root@localhost beinan]# grpconv

  3)建立使用者的家目錄,並把使用者啟動檔案也複製過去;

  建立使用者的家目錄,我們要以/etc/passwd 中新增的新使用者的記錄為準,我們在/etc/passwd 中新增新使用者lanhaitun ,她的家目錄是處於/home/lanhaitun ;另外我們還需要把/etc/skel 目錄下的.*隱藏檔案複製過去;

  [root@localhost ~]# cp -R /etc/skel/ /home/lanhaitun

[root@localhost ~]# ls -la /home/lanhaitun/

總用量 48

drwxr-xr-x 3 root root 4096 10月 18 14:53 .

drwxr-xr-x 10 root root 4096 10月 18 14:53 ..

-rw-r--r-- 1 root root 24 10月 18 14:53 .bash_logout

-rw-r--r-- 1 root root 191 10月 18 14:53 .bash_profile

-rw-r--r-- 1 root root 124 10月 18 14:53 .bashrc

-rw-r--r-- 1 root root 5619 10月 18 14:53 .canna

-rw-r--r-- 1 root root 438 10月 18 14:53 .emacs

-rw-r--r-- 1 root root 120 10月 18 14:53 .gtkrc

drwxr-xr-x 3 root root 4096 10月 18 14:53 .kde

-rw-r--r-- 1 root root 658 10月 18 14:53 .zshrc

  4)改變新增使用者家目錄的屬主和許可權;

  我們發現新增使用者的家目錄的屬主目前是root ,並且家目錄下的隱藏檔案也是root許可權;

  [root@localhost ~]# ls -ld /home/lanhaitun/

drwxr-xr-x 3 root root 4096 10月 18 14:53 /home/lanhaitun/

  所以我們要透過chown 命令來改變/home/lanhaitun目錄歸屬為lanhaitun使用者;

  [root@localhost ~]# chown -R lanhaitun:lanhaitun /home/lanhaitun

  檢視是否已經更換了屬主為lanhaitun使用者所有;

  [root@localhost ~]# ls -ld /home/lanhaitun/

drwxr-xr-x 3 lanhaitun lanhaitun 4096 10月 18 14:53 /home/lanhaitun/

[root@localhost ~]# ls -la /home/lanhaitun/

總用量 48

drwxr-xr-x 3 lanhaitun lanhaitun 4096 10月 18 14:53 .

drwxr-xr-x 10 root root 4096 10月 18 14:53 ..

-rw-r--r-- 1 lanhaitun lanhaitun 24 10月 18 14:53 .bash_logout

-rw-r--r-- 1 lanhaitun lanhaitun 191 10月 18 14:53 .bash_profile

-rw-r--r-- 1 lanhaitun lanhaitun 124 10月 18 14:53 .bashrc

-rw-r--r-- 1 lanhaitun lanhaitun 5619 10月 18 14:53 .canna

-rw-r--r-- 1 lanhaitun lanhaitun 438 10月 18 14:53 .emacs

-rw-r--r-- 1 lanhaitun lanhaitun 120 10月 18 14:53 .gtkrc

drwxr-xr-x 3 lanhaitun lanhaitun 4096 10月 18 14:53 .kde

-rw-r--r-- 1 lanhaitun lanhaitun 658 10月 18 14:53 .zshrc

  看來已經實現了;

  但這樣還是不夠的,因為/home/lanhaitun/的目錄許可權可能會過於公開;

  drwxr-xr-x 3 lanhaitun lanhaitun 4096 10月 18 14:53 /home/lanhaitun/

  我們看到 /home/lanhaitun/ 目錄的許可權為 drwxr-xr-x ,也就是同組使用者和其它使用者組所能檢視,為了保密,我們有理由把新增使用者家目錄的許可權設定為只有其自己可讀可寫可執行;於是... ...

  [root@localhost ~]# chmod 700 /home/lanhaitun/

[root@localhost ~]# ls -ld /home/lanhaitun/

drwx------ 3 lanhaitun lanhaitun 4096 10月 18 14:53 /home/lanhaitun/

  我們用其它使用者,當然得把具有超級許可權的root使用者除外;比如我以beinan使用者來檢視lanhaitun的家目錄會得到如下資訊;

  [beinan@localhost ~]$ ls -la /home/lanhaitun/

ls: /home/lanhaitun/: 許可權不夠

  如此看來,lanhaitun使用者的家目錄是安全的 ;)

  5)設定新增使用者的密碼;

  以上各步驟都就序了,我們得為新增使用者設定密碼了;要透過passwd 命令來生成;這個沒有辦法透過修改檔案解決;

  passwd 的用法:

  passwd 使用者

[root@localhost ~]# passwd lanhaitun

Changing password for user lanhaitun.

New UNIX password: 注:輸入您的密碼

Retype new UNIX password: 再輸入一次

passwd: all authentication tokens updated successfully. 注:設定密碼成功

  6)測試添增使用者是否成功;

  您可以用新增使用者登入測試,也可以透過su 來切換使用者測試;

  [beinan@localhost ~]$ su lanhaitun

Password:

[lanhaitun@localhost beinan]$ cd ~

[lanhaitun@localhost ~]$ pwd

/home/lanhaitun

[lanhaitun@localhost ~]$ ls -la

總用量 52

drwx------ 3 lanhaitun lanhaitun 4096 10月 18 15:15 .

drwxr-xr-x 10 root root 4096 10月 18 14:53 ..

-rw-r--r-- 1 lanhaitun lanhaitun 24 10月 18 14:53 .bash_logout

-rw-r--r-- 1 lanhaitun lanhaitun 191 10月 18 14:53 .bash_profile

-rw-r--r-- 1 lanhaitun lanhaitun 124 10月 18 14:53 .bashrc

-rw-r--r-- 1 lanhaitun lanhaitun 5619 10月 18 14:53 .canna

-rw-r--r-- 1 lanhaitun lanhaitun 438 10月 18 14:53 .emacs

-rw-r--r-- 1 lanhaitun lanhaitun 120 10月 18 14:53 .gtkrc

drwxr-xr-x 3 lanhaitun lanhaitun 4096 10月 18 14:53 .kde

-rw------- 1 lanhaitun lanhaitun 66 10月 18 15:15 .xauthOhEoTk

-rw-r--r-- 1 lanhaitun lanhaitun 658 10月 18 14:53 .zshrc

[lanhaitun@localhost ~]$ mkdir testdir

[lanhaitun@localhost ~]$ ls -lh

總用量 4.0K

drwxrwxr-x 2 lanhaitun lanhaitun 4.0K 10月 18 15:16 testdir

  透過上面一系列動作,我們會發現所建立的lanhaitun使用者已經成功;

  2、透過修改使用者(User)和使用者組(Group)配置檔案的辦法來修改使用者或使用者組;

  我們可以修改/etc/passwd 和/etc/group 來達到修改使用者和使用者所歸屬的組,這個過程和新增新使用者時差不多;比如我想修改lanhaitun的使用者名稱全稱、公司以及電話等資訊;我們可以修改/etc/passwd 實現;

  1)修改使用者資訊;

  lanhaitun:x:508:508::/home/lanhaitun:/bin/bash 注:這是初始記錄;

  我們可以修改為

  lanhaitun:x:508:508:lanhaitun wu,Office Dalian,13000000000:/home/lanhaitun:/bin/bash

  當然我們還可以修改使用者的bash 型別,家目錄等,當然如果修改家目錄,還得進行建家目錄、屬主和許可權的操作,這和前面新增使用者的辦法在程式上有些是相同的;

  修改完成後,我們要進行pwconv 同步,透過finger 來檢視使用者的資訊等;

  [root@localhost lanhaitun]# pwconv

[root@localhost lanhaitun]# finger lanhaitun

Login: lanhaitun Name: lanhaitun wu

Directory: /home/lanhaitun Shell: /bin/bash

Office: Office Dalian, +1-300-000-0000

Never logged in.

No mail.

No Plan.

  2)修改使用者所歸屬的組,可以透過/etc/group 修改實現;

  當然修改使用者和使用者組,不僅能透過修改配置檔案來實現,還能過過 usermod 及chfn來實現;我將在以後的文件中寫一寫,也比較簡單;您可以透過man來檢視用法;在這裡我們先講一講如何透過修改配置檔案來達到目的;

  如果我們想把lanhaitun 這個使用者歸屬到root使用者組,所以我們還能修改/etc/group 的辦法來達到目的;找到/etc/group 中的root開頭的一行,按其規劃加入lanhaitun;

  root:x:0:root,lanhaitun

  如果不明白,看前面/etc/group的解釋,謝謝;

  然後執行 grpconv 命令來同步/etc/group 和/etc/gshadow兩個檔案的內容;

  [root@localhost ~]# grpconv

  檢視lanhaitun歸屬組的資訊;

  [root@localhost ~]# id lanhaitun

uid=508(lanhaitun) gid=508(lanhaitun) groups=508(lanhaitun),0(root)

  3)刪除使用者及使用者組的辦法;

  這個比較簡單,我們可以透過刪除/etc/passwd 和/etc/group 相應的使用者和使用者組記錄就能達到目的,也能過過userdel 和groupdel 來實現對使用者及使用者組的刪除;

  如果是透過修改使用者和使用者組配置檔案的辦法來刪除使用者,就是刪除相應的記錄就行了,如果不想保留其家目錄,刪除就是了。

  [root@localhost ~]# userdel lanhaitun

[root@localhost ~]# userdel -r lanhaitun

  注:可以用userdel 來刪除lanhaitun 使用者,我們看到第二個例子中多了一個引數-r ,第一個例子是說只刪除lanhaitun使用者,其家目錄和mail等仍會儲存;加上-r 引數,是刪除家目錄及mail等;所以要小心操作;用userdel 刪除使用者的同時,也會把其使用者組刪除;我們可以透過/etc/passwd 和/etc/group 的內容變化來檢視;

  後記:

  透過對使用者和使用者組相關檔案的解說,能讓我們明白在Linux作業系統中,系統配置檔案的重要性,另外也從側面說明了Linux系統的靈活性,解決問題辦法有好多,條條大路通羅馬;我希望透過本文給初學者一點提示是:Linux的使用並不難,難的是我們不去思考;

  這是我完成的第二篇使用者管理的文件,雖然寫的可能沒有條理,但我實在不知道如何安排文件讓其更有條理性,我只是根據自己的學習經歷在寫,或許對您有所啟發和幫助,請多多指正;

  在以後關於使用者管理的文件中,我會寫透過使用者管理工具來實現對使用者的管理,最好是我有這個能力,但願吧;

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-939788/,如需轉載,請註明出處,否則將追究法律責任。

相關文章