LINUX用戶和用戶組配置文件詳解

用戶(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的使用並不難,難的是我們不去思考;

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

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章