天天看點

linux建立使用者 限制權限-使用者(User)和使用者組(Group)配置檔案詳解

轉載自:http://blog.csdn.net/adparking/article/details/5803548

參考文獻:

使用者(User)和使用者組(Group)配置檔案詳解

http://www.linuxsir.org/main/?q=node/98

摘要:本文詳解使用者(User)和使用者組(Group)的配置檔案,本文是《Linux 使用者(User)和使用者組(Group)管理概述》 文 檔的關健部份的細化;通過本文,您至少能明白/etc/passwd /etc/group ,以及什麼是UID和GID 等;其中對UID的重要性加以詳細的論述;最後,本文還以通過修改使用者及使用者組配置檔案的辦法來實作管理使用者和使用者組,進而說明在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 的權限不能随便改為其它使用者可讀,這樣做是危險的。如果您發現這個檔案的權限變成了其它使用者組或使用者可讀了,要進行檢查,以防系統安全問題的發生; 如果我們以普通使用者檢視這個檔案時,應該什麼也檢視不到,提示是權限不夠:

[[email protected] ~]$ 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使用者建立目錄的權限歸屬;

[[email protected] ~]$ mkdir testdir [[email protected] ~]$ 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 使用者組

[email protected] ~]# gpasswd linuxsir 正在修改 linuxsir 組的密碼 新密碼: 請重新輸入新密碼:

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

[[email protected] ~]$ newgrp linuxsir 密碼: [[email protected] ~]$ mkdir lingroup [[email protected] ~]$ ls -ld lingroup/ drwxr-xr-x  2 beinan linuxsir 4096 10月 18 15:56 lingroup/ [[email protected] ~]$ newgrp beinan [[email protected] ~]$ mkdir beinangrouptest [[email protected] ~]$ 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 的内容;

[[email protected] ~]# more /etc/passwd [[email protected] ~]# cat /etc/passwd [[email protected] ~]# less /etc/passwd

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

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

id 指令用法;

id  選項  使用者名

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

[[email protected] ~]# id beinan     uid=500(beinan) gid=500(beinan) groups=500(beinan) 注:beinan的UID 是 500,預設使用者組是beinan,預設使用者組的GID 是500,歸屬于beinan使用者組; [[email protected] ~]# 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指令類似;對比一下;不過各有測重;

[[email protected] ~]# w 14:02:42 up  1:03,  3 users,  load average: 0.04, 0.15, 0.18 USER     TTY      FROM              [email protected]   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 [[email protected] ~]# 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的資訊;

[[email protected] ~]# 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 來查詢;

[[email protected] ~]# 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的内容是否同步;

[[email protected] beinan]# pwconv

2)修改/etc/group

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

[[email protected] ~]# more   /etc/group  |grep lanhaitun [[email protected] ~]# more   /etc/group  |grep 508

通過檢視,我們發現沒有被占用;是以我們要添加lanhaitun 的記錄到 /etc/group

lanhaitun:x:508:

其次,是運作 grpconv 來同步/etc/group 和/etc/gshadow内容,您可以通過檢視/etc/gshadow的内容變化确認是不是添加組成功了;

[[email protected] beinan]# grpconv

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

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

[[email protected] ~]# cp -R /etc/skel/ /home/lanhaitun [[email protected] ~]# 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權限;

[[email protected] ~]# ls -ld /home/lanhaitun/ drwxr-xr-x  3 root root 4096 10月 18 14:53 /home/lanhaitun/

是以我們要通過chown 指令來改變/home/lanhaitun目錄歸屬為lanhaitun使用者;

[[email protected] ~]# chown -R lanhaitun:lanhaitun /home/lanhaitun

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

[[email protected] ~]# ls -ld /home/lanhaitun/ drwxr-xr-x  3 lanhaitun lanhaitun 4096 10月 18 14:53 /home/lanhaitun/ [[email protected] ~]# 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 ,也就是同組使用者和其它使用者組所能檢視,為了保密,我們有理由把新增使用者家目錄的權限設定為隻有其自己可讀可寫可執行;于是... ...

[[email protected] ~]# chmod 700 /home/lanhaitun/ [[email protected] ~]# ls -ld /home/lanhaitun/ drwx------  3 lanhaitun lanhaitun 4096 10月 18 14:53 /home/lanhaitun/

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

[[email protected] ~]$ ls -la /home/lanhaitun/ ls: /home/lanhaitun/: 權限不夠

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

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

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

passwd 的用法:

passwd 使用者

[[email protected] ~]# passwd lanhaitun Changing password for user lanhaitun. New UNIX password:  注:輸入您的密碼 Retype new UNIX password: 再輸入一次 passwd: all authentication tokens updated successfully.  注:設定密碼成功

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

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

[[email protected] ~]$ su lanhaitun Password: [[email protected] beinan]$ cd ~ [[email protected] ~]$ pwd /home/lanhaitun [[email protected] ~]$ 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 [[email protected]calhost ~]$ mkdir testdir [[email protected] ~]$ 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 來檢視使用者的資訊等;

[[email protected] lanhaitun]# pwconv [[email protected] 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兩個檔案的内容;

[[email protected] ~]# grpconv

檢視lanhaitun歸屬組的資訊;

[[email protected] ~]# id lanhaitun uid=508(lanhaitun) gid=508(lanhaitun) groups=508(lanhaitun),0(root)

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

這個比較簡單,我們可以通過删除/etc/passwd 和/etc/group 相應的使用者和使用者組記錄就能達到目的,也能過過userdel 和groupdel 來實作對使用者及使用者組的删除; 如果是通過修改使用者和使用者組配置檔案的辦法來删除使用者,就是删除相應的記錄就行了,如果不想保留其家目錄,删除就是了。

[[email protected] ~]# userdel  lanhaitun [[email protected] ~]# userdel  -r lanhaitun

注:可以用userdel 來删除lanhaitun 使用者,我們看到第二個例子中多了一個參數-r ,第一個例子是說隻删除lanhaitun使用者,其家目錄和mail等仍會儲存;加上-r 參數,是删除家目錄及mail等;是以要小心操作;用userdel 删除使用者的同時,也會把其使用者組删除;我們可以通過/etc/passwd 和/etc/group 的内容變化來檢視; 後記: 通過對使用者和使用者組相關檔案的解說,能讓我們明白在Linux作業系統中,系統配置檔案的重要性,另外也從側面說明了Linux系統的靈活性,解決問題辦 法有好多,條條大路通羅馬;我希望通過本文給初學者一點提示是:Linux的使用并不難,難的是我們不去思考; 這是我完成的第二篇使用者管理的文檔,雖然寫的可能沒有條理,但我實在不知道如何安排文檔讓其更有條理性,我隻是根據自己的學習經曆在寫,或許對您有所啟發 和幫助,請多多指正; 在以後關于使用者管理的文檔中,我會寫通過使用者管理工具來實作對使用者的管理,最好是我有這個能力,但願吧; 參考文檔: man 和help ,感謝參與Linux的開發者和文檔撰寫社工; 緻謝: 對于此文,pandonny 兄和linuxfish兄給了極大的鼓勵,感謝之中; 相關文檔: 《Linux 使用者(user)和使用者組(group)管理概述》 

《使用者(user)和使用者組(group)配置檔案詳解》 

《Linux 使用者(User)查詢篇》 

《Linux 使用者管理工具介紹》 

《Linux 系統中的超級權限的控制》

1、用useradd添加使用者

 Useradd student1——建立使用者st1

 Useradd –e 12/31/2004 student2——建立student2,指定2004-12-31到期

 使用者的預設工作目錄是/home/username,可以指定其他目錄為其工作目錄,例:useradd 

student3 –d /student/student3

 使用者的預設UID從500後順序增加,可以指定UID。例:useradd –u 600 student4

 如果不指定使用者所屬的工作組,在建立使用者的時候會生成一個與使用者名同名的工作組,也可以在

建立使用者的時候就指定其工作組。例:useradd –g student student 5

2、用passwd為使用者設定密碼

 例:passwd  student1

 注意:沒有設定密碼的使用者不能使用。

3、usermod修改使用者賬戶

 例:将使用者student1的登入名改為st1,

 usermod –l st1 student1

 例:将使用者加入到student組中,

 Usermod –g student  student1

 例:使用者目錄改為/student/student1

 usermod –d  /student/student1  student

4、用userdel删除使用者賬戶

 例:删除使用者student2

 userdel student2

 例:删除使用者student3,同時删除他的工作目錄

 Userdel –r studenet3

5、檢視使用者資訊 

 id指令檢視一個使用者的UID和GID,例:檢視student4的id

 Id student4

 finger指令 ——可以檢視使用者的主目錄、啟動shell、使用者名、位址、電話等資訊 。

例:finger student4

6、groupadd新增組

 groupadd –g 888 student

 建立一個組student,其GID為888

7、gpasswd為組添加使用者 

 隻有root群組管理者能夠改變組的成員: 

 例:把student1加入stdeunt組

Gpasswd –a student1 student

 例:把student1退出student組

Gpasswd –d student1 student

 例:把student的管理者指派給yz

Gpasswd –A yz student

8、groupmod修改組

 groupmod –n student students       修改student組名為students

9、groupdel删除組

 groupdel students    删除組students

10、用ifconfig配置網卡 

 ifconfig eth0 192.168.0.1 

 ifconfig eth0 down  

 ifconfig eth0 up 

 ifconfig eth0 netmask 255.255.255.0

 ifconfig eth0 192.168.0.1 netmask 255.255.255.0

 ifconfig eth0 -broadcast 192.168.0.255

 ifconfig eth0 

 ifconfig 

11、用 route指令是檢視和設定路由

 route add 0.0.0.0 gw 172.16.19.254—— 增加一個預設預設網關

 route del 0.0.0.0 gw 172.16.19.254——删除一個預設網關 

  route——顯示出目前路由表

以下是需要完成的:

1、手動添加一個使用者ata

2、用Vi修改/ect/password,複制root使用者的資訊,粘貼到檔案的最後一行

3、修改最後一行的内容為普通使用者ata的資訊

4、添加一個使用者,帳号為testata,初密碼為abcd1234

5、要求該使用者的主目錄為home

6、要求該使用者的基本組為root

7、要求給使用者的shell為bin/bash

8、 添加一個系統工作組workgroup1

9、要求把使用者root添加到該組中

10、為一個用空閑的磁盤建立一個分區

11、把該分區進行格式化

12、把該分區挂載到mut/music目錄

13、要求每次機器啟動都自動挂載

14、為一個用空閑的磁盤建立一個分區

15、把該分區進行格式化為ext3

16、把該分區挂載到mut/music目錄

17、要求每次機器啟動都自動挂載

18、添加一個使用者,帳号為ata,初始密碼為ataataata

19、建立一個新的分區,大小為10M,以EXT3檔案系統對新分區進行格式化,并以/mnt/ata為新分區挂載點

20、要求在/home/ata檔案系統對ata使用者進行磁盤配額為

21、要求軟配額大小為1500k,硬配額大小為2000k

22、從鍵盤讀入123和456分别指派給變量a和b,再清除變量a和b,并檢驗。

23、掌握第一個shell函數的編寫和調用,編寫和調用一個函數,如hello world