http://fedora.linuxsir.org/main/?q=node/98
地址:http://blog.csdn.net/tianlesoftware/article/details/9858235
原文檔寫的很詳細,一是為了方便閱讀,二是為了加強理解,還是邊看邊自己動手練習了一下。重新整理後的內容如下。感謝原作者的辛苦勞動。
我的測試環境:redhat 6.3
用戶(User)和用戶組(Group)的配置文件,是系統管理員最應該了解和掌握的系統基礎文件之一,從另一方面來說,了解這些文件也是系統安全管理的重要組成部份。做為一個合格的系統管理員應該對用戶和用戶組配置文件透徹了解才行。
一.用戶(User)相關
談到用戶,就不得不談用戶管理,用戶配置文件,以及用戶查詢和管理的控制工具。用戶管理主要通過修改用戶配置文件完成;用戶管理控制工具最終目的也是為了修改用戶配置文件。
什麼是用戶查詢和管理控制工具呢?
用戶查詢和控制工具是查詢、添加、修改和刪除用戶等系統管理工具。比如查詢用戶的id和finger命令,添加用戶的useradd 或adduser 、userdel 用戶的刪除、設置密碼的passwd命令 、修改用戶usermod 等等。
我們需要知道的是通過用戶查詢和控制工具所進行的動作的最終目的也是修改用戶配置文件。所以我們進行用戶管理的時候,直接修改用戶配置文件一樣可以達到用戶管理的目的。通過上面的解說,我們能實實在在的感覺到用戶(User)配置文件的重要性。
1.1 關於/etc/passwd和 UID
/etc/passwd 是系統識別用戶的一個文件,做個不恰當的比喻,/etc/passwd 是一個花名冊,系統所有的用戶都在這裡有登錄記載。
[root@dave ~]# useradd dave
[root@dave ~]# passwd dave
Changing password for user dave.
New password:
BAD PASSWORD: it is too short
BAD PASSWORD: is too simple
Retype new password:
passwd: all authentication tokens updated successfully.
[root@dave ~]#
當我們以dave 這個賬號登錄時,系統首先會查閱 /etc/passwd 文件,看是否有dave 這個賬號,然後確定dave的UID,通過UID 來確認用戶和身份,如果存在則讀取/etc/shadow 影子文件中所對應的dave的密碼;如果密碼核實無誤則登錄系統,讀取用戶的配置文件。
[root@dave ~]# cat/etc/passwd|grep dave
dave:x:54322:54323::/home/dave:/bin/bash
[root@dave ~]# cat/etc/shadow|grep dave
dave:$6$vOI742LC$Rb4oNevqA1c5gXB0isGqvSK3l9Q/QcJ.Dc40xJ01gMad2qonM/dwXzkrRSIZV7gF.FHNlu/nBPkMybnnoV9DV/:15800:0:99999:7:::
[root@dave ~]#
1.1.1 /etc/passwd 的內容理解
在/etc/passwd 中,每一行都表示的是一個用戶的信息;一行有7個段位;每個段位用:號分割。 如下:
[root@dave ~]# tail -5/etc/passwd
oprofile:x:16:16:Specialuser account to be used by OProfile:/home/oprofile:/sbin/nologin
vboxadd:x:496:1::/var/run/vboxadd:/bin/false
oracle:x:54321:54321::/home/oracle:/bin/bash
nx:x:495:490::/usr/NX/home/nx:/usr/NX/bin/nxserver
dave:x:54322:54323::/home/dave:/bin/bash
[root@dave ~]#
第一字段:用戶名(也被稱為登錄名);
第二字段:口令;在例子中我們看到的是一個x,其實密碼已被映射到/etc/shadow 文件中;
第三字段:UID ;請參看本文的UID的解說;
第四字段:GID;請參看本文的GID的解說;
第五字段:用戶名全稱,這是可選的,可以不設置,在oprofile這個用戶中,用戶的全稱是Special user account to be used by OProfile;而其他用戶沒有設置全稱;
第六字段:用戶的家目錄所在位置;oracle 這個用戶是/home/oracle
第七字段:用戶所用SHELL 的類型,oracle用戶用的是 bash ;所以設置為/bin/bash ;
1.1.2 關於UID 的理解
UID 是用戶的ID 值,在系統中每個用戶的UID的值是唯一的。更確切的說每個用戶都要對應一個唯一的UID ,系統管理員應該確保這一規則。系統用戶的UID的值從0開始,是一個正整數,至於最大值可以在/etc/login.defs 可以查到,一般Linux發行版約定為60000。
[root@dave~]# cat /etc/login.defs |grep -v ^#
MAIL_DIR /var/spool/mail
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7
UID_MIN 500
UID_MAX 60000
GID_MIN 500
GID_MAX 60000
CREATE_HOME yes
UMASK 077
USERGROUPS_ENAB yes
ENCRYPT_METHOD SHA512
[root@dave ~]#
在Linux 中,root的UID是0,擁有系統最高權限。 UID 在系統中具有唯一特性,做為系統管理員應該確保這一標准,UID 的唯一性關系到系統的安全,應該值得我們關注!
比如我在/etc/passwd 中把dave的UID 改為0後,你設想會發生什麼呢?dave這個用戶會被確認為root用戶。dave這個帳號可以進行所有root的操作。
[root@dave ~]# cat/etc/passwd|egrep 'root|dave'
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
dave:x:54322:54323::/home/dave:/bin/bash
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等;
linux系統會把前499 個UID和GID 預留出來,我們添加新用戶時的UID 從500開始的,GID也是從500開始。
有的系統可能會有出入,具體預留多少,可以查看/etc/login.defs文件中的 UID_MIN 的最小值; 我們這裡UID_MIN是500,而UID_MAX 值為60000,也就是說我們通過adduser默認添加的用戶的UID的值是500到60000之間;
通過adduser不指定UID來添加用戶,每次添加都會從用戶手工添加用戶的UID和GID的最大值往上增加1。
[root@dave home]# useradddave
[root@dave home]# cat/etc/passwd|grep dave
dave:x:501:502::/home/dave:/bin/bash
[root@dave home]# cat/etc/group|grep dave
dave:x:502:
1.2 關於/etc/shadow
1.2.1 /etc/shadow 概說
/etc/shadow文件是/etc/passwd 的影子文件,這個文件並不由/etc/passwd 而產生的,這兩個文件是應該是對應互補的;shadow內容包括用戶及被加密的密碼以及其它/etc/passwd 不能包括的信息,比如用戶的有效期限等;這個文件只有root權限可以讀取和操作,權限如下:
[root@dave home]# ll/etc/shadow
----------.1 root root1137 Apr 6 06:40 /etc/shadow
/etc/shadow 的權限不能隨便改為其它用戶可讀,這樣做是危險的。如果您發現這個文件的權限變成了其它用戶組或用戶可讀了,要進行檢查,以防系統安全問題的發生;
如果我們以普通用戶查看這個文件時,應該什麼也查看不到,提示是權限不夠:
[root@dave home]# su - dave
[dave@dave ~]$ cat/etc/shadow
cat: /etc/shadow: Permissiondenied
[dave@dave ~]$
1.2.2 /etc/shadow 的內容分析
/etc/shadow 文件的內容包括9個段位,每個段位之間用:號分割;如下:
從/etc/shadow文件中取了如下內容:
sync:*:15064:0:99999:7:::
shutdown:*:15064:0:99999:7:::
oprofile:!!:15566::::::
vboxadd:!!:15566::::::
oracle:$6$M1THq……ONvuu5RCfuLb9c63u0:15566:0:99999:7:::
dave:$6$ASwiI……dNSPfmWfNiij9/7Hbw.86.:15800:0:99999:7:::
第一字段:用戶名(也被稱為登錄名),在/etc/shadow中,用戶名和/etc/passwd 是相同的,這樣就把passwd 和shadow中用的用戶記錄聯系在一起;這個字段是非空的;
第二字段:密碼(已被加密),這裡有4種值,*,! 和!!,還有就是加密後的密碼。這個字段是非空的;
"NP" or "!" or null - No password, the accounthas no password.
"LK" or "*" - the account is Locked, user will be unable tolog-in
"!!" - the password has expired
第三字段:上次修改口令的時間;這個時間是從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來查看幫助,您會得到更為詳盡的資料;
看具體的分析:
[root@dave home]# cat/etc/shadow|grep root
root:$6$rhOLRand$64hQaBfM12GZeliBxpuVCJ5OCKealgHXUruEVnR2KUTOhKoBGa6D/NoEi30D1dWxgUXEWEGNKAOs0mIbil5OG/:15566:0:99999:7:::
第一字段:用戶名,root
第二字段:被加密的密碼
第三字段:表示上次更改口令的天數(距1970年01月01日),在例子中root用戶更改密碼的時間距1970年01月01日的天數為15566;
我們估算一下今天到1970年1月1號的時間差:
[root@dave home]#time1=$(($(date +%s -d '2013-04-09') - $(date +%s -d '1970-01-01 00:00:00')));
[root@dave home]# echo$time1
1365465600
[root@dave home]# expr1365465600 / 3600 / 24
15804
[root@dave home]#
相差15804天。基本和我們裡面的值差不多。
我們用passwd命令重置一下root用戶的密碼:
[root@dave home]# cat/etc/shadow|grep root
root:$6$C40per4D$4Nc/UXf3tj9/gJ1hZUz.z/bIKM04qOtOs/15HhCfHJdqGk1fh.mNFGMaYfSGRAGNRGT09TmgM3kRvPipTx/Wl.:15801:0:99999:7:::
這裡顯示的15801天,和我們上面估算的就很接近了。
第四字段:禁用兩次口令修改之間最小天數的功能,設置為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的加密信息文件。
2.1 /etc/group 解說
/etc/group 文件是用戶組的配置文件,內容包括用戶和用戶組,並且能顯示出用戶是歸屬哪個用戶組或哪幾個用戶組,因為一個用戶可以歸屬一個或多個不同的用戶組;同一用戶組的用戶之間具有相似的特征。
比如我們把某一用戶加入到root用戶組,那麼這個用戶就可以浏覽root用戶家目錄的文件,如果root用戶把某個文件的讀寫執行權限開放,root用戶組的所有用戶都可以修改此文件,如果是可執行的文件(比如腳本),root用戶組的用戶也是可以執行的。
用戶組的特性在系統管理中為系統管理員提供了極大的方便,但安全性也是值得關注的,如某個用戶下有對系統管理有最重要的內容,最好讓用戶擁有獨立的用戶組,或者是把用戶下的文件的權限設置為完全私有;另外root用戶組一般不要輕易把普通用戶加入進去。
2.2 /etc/group 內容具體分析
/etc/group 的內容包括用戶組(Group)、用戶組口令、GID及該用戶組所包含的用戶(User),每個用戶組一條記錄;格式如下:
group_name:passwd:GID:user_list
[root@dave home]# cat/etc/group |grep root
root:x:0:root
bin:x:1:root,bin,daemon
daemon:x:2:root,bin,daemon
sys:x:3:root,bin,adm
adm:x:4:root,adm,daemon
disk:x:6:root
wheel:x:10:root
[root@dave home]#
在/etc/group 中的每條記錄分四個字段:
第一字段:用戶組名稱;
第二字段:用戶組密碼;
第三字段:GID
第四字段:用戶列表,每個用戶之間用,號分割;本字段可以為空;如果字段為空表示用戶組為GID的用戶名;
示例說明:
(1)root:x:0:root,linuxsir
注:用戶組root,x是密碼段,表示沒有設置密碼,GID是0,root用戶組下包括root、linuxsir以及GID為0的其它用戶(可以通過/etc/passwd查看)
(2)beinan:x:500:linuxsir
注:用戶組beinan,x是密碼段,表示沒有設置密碼,GID是500,beinan用戶組下包括linuxsir用戶及GID為500的用戶(可以通過/etc/passwd查看)
(3)linuxsir:x:502:linuxsir
注:用戶組linuxsir,x是密碼段,表示沒有設置密碼,GID是502,linuxsir用戶組下包用戶linuxsir及GID為502的用戶(可以通過/etc/passwd查看)
(4)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:beinansun:/home/beinan:/bin/bash
linuxsir:x:505:502:linuxsir open,linuxsiroffice,13898667715:/home/linuxsir:/bin/bash
helloer:x:502:503::/home/helloer:/bin/bash
由此可以看出helloer用戶組包括 helloer用戶;所以我們查看一個用戶組所擁有的用戶,可以通過對比/etc/passwd和/etc/group來得到;
2.3 關於GID
GID和UID類似,是一個正整數或0,GID從0開始,GID為0的組讓系統付予給root用戶組;系統會預留一些較靠前的GID給系統虛擬用戶(也被稱為偽裝用戶)之用;
每個系統預留的GID都有所不同, Linux預留了500個,我們添加新用戶組時,用戶組是從500開始的;
查看系統添加用戶組默認的GID范圍應該查看 /etc/login.defs 中的 GID_MIN 和GID_MAX 值;我們可以對照/etc/passwd和/etc/group 兩個文件;我們會發現有默認用戶組之說;我們在 /etc/passwd 中的每條用戶記錄會發現用戶默認的GID ;
在/etc/group中,我們也會發現每個用戶組下有多少個用戶;在創建目錄和文件時,會使用默認的用戶組;
示例:我們將dave用戶添加到root用戶組:
[root@dave home]# usermod -a-G root dave
/etc/passwd文件中的記錄:
[root@dave home]# cat/etc/passwd|grep dave
dave:x:501:502::/home/dave:/bin/bash
dave用戶的默認GID 為502.
[root@dave home]# cat /etc/group|grepdave
root:x:0:root,dave
dave:x:502:
而502的GID 在/etc/group中查到是dave用戶組;
因此我們看到dave用戶組的GID 為502,而dave 用戶歸屬為root、dave用戶組;
我們用dave來創建一個目錄,以觀察dave用戶創建目錄的權限歸屬;
[root@dave home]# su - dave
[dave@dave ~]$ mkdir test
[dave@dave ~]$ ll
total 4
drwxrwxr-x. 2 dave dave 4096Apr 6 12:18 test
[dave@dave ~]$
通過我們用dave來創建目錄時發現,test的權限歸屬仍然是dave用戶和dave用戶組的;而沒有歸屬root用戶組;但值得注意的是,判斷用戶的訪問權限時,默認的GID 並不是最重要的,只要一個目錄讓同組用戶可以訪問的權限,那麼同組用戶就可以擁有該目錄的訪問權,在這時用戶的默認GID 並不是最重要的。
2.4 /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 ~]# gpasswdlinuxsir
正在修改 linuxsir 組的密碼
新密碼:
請重新輸入新密碼:
用戶組之間的切換,應該用 newgrp ,這個有點象用戶之間切換的su ;示例:
[beinan@localhost ~]$ newgrplinuxsir
密碼:
[beinan@localhost ~]$ mkdirlingroup
[beinan@localhost ~]$ ls -ldlingroup/
drwxr-xr-x 2 beinan linuxsir 4096 10月 18 15:56 lingroup/
三. 通過用戶和用戶組配置文件來查詢或管理用戶
3.1 用戶和用戶組查詢的方法
3.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
3.1.2 通過id和finger 工具來獲取用戶信息
除了直接查看用戶(User)和用戶組(Group)配置文件的辦法除外,我們還有 id和finger工具可用,我們一樣通過命令行的操作,來完成對用戶的查詢;
id和finger,是兩個各有測重的工具:
(1)id工具更測重用戶、用戶所歸屬的用戶組、UID 和GID 的查看;
(2)finger測重用戶資訊的查詢,比如用戶名(登錄名)、電話、家目錄、登錄SHELL類型、真實姓名、空閒時間等等。
id 命令用法:id 選項 用戶名
比如:我想查詢beinan和linuxsir 用戶的UID、GID 以及歸屬用戶組的情況:
[root@localhost ~]# idbeinan
uid=500(beinan)gid=500(beinan) groups=500(beinan)
注:beinan的UID 是 500,默認用戶組是beinan,默認用戶組的GID 是500,歸屬於beinan用戶組;
[root@localhost ~]# idlinuxsir
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);
finger的用法:finger 選項 用戶名1 用戶名2 ...
在Linux 6.3 版本裡需要單獨的安裝這個工具包。
[root@dave home]# yuminstall finger.x86_64
如果finger 不加任何參數和用戶,會顯示出當前在線用戶,和w命令類似;對比一下;不過各有測重。
[root@dave home]# finger
Login Name Tty Idle Login Time Office Office Phone
root root tty1 18:01 Apr 518:35 (:0)
root root pts/0 8:58 Apr 603:35 (192.168.1.1)
root root pts/1 Apr 6 03:36 (192.168.1.1)
[root@dave home]#
[root@dave home]# w
12:35:50 up 18:02, 3 users, load average: 0.39, 0.20, 0.07
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 :0 Fri18 18:01m 10.12s 10.12s /usr/bin/Xorg :0 -nr-verbose -auth /var/r
root pts/0 192.168.1.1 03:35 8:59m 0.06s 0.06s -bash
root pts/1 192.168.1.1 03:36 0.00s 0.38s 0.09s w
如果我們在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/linuxsirShell: /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.1.3 用戶組查詢的辦法
我們可以通過用戶來查詢所歸屬的組,用groups 來查詢;比如我查詢beinan和linuxsir 所歸屬的組,我們可以用groups 來查詢;
[root@localhost ~]# groupsbeinan linuxsir
beinan : beinan
linuxsir : linuxsir rootbeinan
注:這是通過groups 同時查看了用戶beinan和linuxsir所歸屬的組;
3.2 通過修改用戶(User)和用戶組(Group)配置文件的辦法來添加
在前面說過,可以通過修改配置文件的辦法來管理用戶,所以此主題應該包括此內容;當然通過用戶及用戶組管理工具(比如 adduser、userdel、usermod、userinfo、groupadd 、groupdel 、groupmod等)也是可以的。
通過修改用戶(User)和用戶組(Group)配置文件的方法管理用戶之用戶的添加流程:
我們先以添加用戶為例,對用戶的刪除和修改都比較簡單。
3.2.1 修改 /etc/passwd ,添加用戶記錄
我們按/etc/passwd的格式的約定來添加新的用戶記錄;當然您要讓一個用戶失效,可以刪除您想要刪除的用戶記錄;值得注意的是,不能讓UID 重復。
比如我想添加anqing 這個用戶,發現UID 508沒有用戶用,並且我想把其用戶組也設置為anqing ,用戶組的GID 也設置為508,如果GID 沒有占用的話;我們要打開 /etc/passwd ,在最下面加一行:
anqing:x:508:508::/home/anqing:/bin/bash
然後執行pwconv ,讓/etc/passwd 和/etc/shadow同步,您可以查看 /etc/shadow的內容是否同步;
[root@dave home]# pwconv
[root@dave home]# cat/etc/shadow|grep anqing
anqing:x:15801:0:99999:7:::
[root@dave home]#
3.2.2 修改/etc/group
首先,我們得查看是否有anqing用戶組,以及GID 508 是否被其它用戶組占用;
[root@dave home]# cat/etc/group|grep anqing
[root@dave home]# cat/etc/group|grep 508
通過查看,我們發現沒有被占用;所以我們要添加anqing的記錄到 /etc/group中:
anqing:x:508:
其次,是運行 grpconv 來同步/etc/group 和/etc/gshadow內容,然後通過查看/etc/gshadow的內容變化確認是不是添加組成功了。
[root@dave home]# grpconv
[root@dave home]# cat/etc/gshadow |grep anqing
anqing:x::
[root@dave home]#
3.2.3 創建用戶的家目錄,並把用戶啟動文件也復制過去
創建用戶的家目錄,我們要以/etc/passwd 中添加的新用戶的記錄為准,我們在/etc/passwd 中添加新用戶anqing ,她的家目錄是處於/home/anqing ;另外我們還需要把/etc/skel 目錄下的.*隱藏文件復制過去:
[root@dave home]# cd/etc/skel/
[root@dave skel]# ls -la
total 40
drwxr-xr-x. 4 root root 4096 Aug 15 2012 .
drwxr-xr-x. 115 root root12288 Apr 6 12:42 ..
-rw-r--r--. 1 root root 18 Mar 29 2011 .bash_logout
-rw-r--r--. 1 root root 176 Mar 29 2011 .bash_profile
-rw-r--r--. 1 root root 124 Mar 29 2011 .bashrc
drwxr-xr-x. 2 root root 4096 Nov 20 2010 .gnome2
-rw-r--r--. 1 root root 121 May 2 2012 .kshrc
drwxr-xr-x. 4 root root 4096 Aug 15 2012 .mozilla
[root@dave home]# cp -R/etc/skel/ /home/anqing
[root@dave skel]# cd/home/anqing
[root@dave anqing]# ls -la
total 32
drwxr-xr-x. 4 root root 4096Apr 6 12:43 .
drwxr-xr-x. 5 root root 4096Apr 6 12:43 ..
-rw-r--r--. 1 root root 18 Apr 6 12:43 .bash_logout
-rw-r--r--. 1 root root 176 Apr 6 12:43 .bash_profile
-rw-r--r--. 1 root root 124 Apr 6 12:43 .bashrc
drwxr-xr-x. 2 root root 4096Apr 6 12:43 .gnome2
-rw-r--r--. 1 root root 121 Apr 6 12:43 .kshrc
drwxr-xr-x. 4 root root 4096Apr 6 12:43 .mozilla
3.2.4 改變新增用戶家目錄的屬主和權限
我們發現新增用戶的家目錄的屬主目前是root ,並且家目錄下的隱藏文件也是root權限:
[root@dave anqing]# ls -ld/home/anqing/
drwxr-xr-x. 4 root root 4096Apr 6 12:43 /home/anqing/
所以我們要通過chown 命令來改變/home/anqing目錄歸屬為anqing用戶;
[root@dave anqing]# chown -Ranqing:anqing /home/anqing
查看是否已經更換了屬主為lanhaitun用戶所有:
[root@dave anqing]# ls -ld/home/anqing
drwxr-xr-x. 4 anqing anqing4096 Apr 6 12:43 /home/anqing
[root@dave anqing]# ls -la/home/anqing
total 32
drwxr-xr-x. 4 anqing anqing4096 Apr 6 12:43 .
drwxr-xr-x. 5 root root 4096 Apr 6 12:43 ..
-rw-r--r--. 1 anqinganqing 18 Apr 6 12:43 .bash_logout
-rw-r--r--. 1 anqinganqing 176 Apr 6 12:43 .bash_profile
-rw-r--r--. 1 anqinganqing 124 Apr 6 12:43 .bashrc
drwxr-xr-x. 2 anqing anqing4096 Apr 6 12:43 .gnome2
-rw-r--r--. 1 anqinganqing 121 Apr 6 12:43 .kshrc
drwxr-xr-x. 4 anqing anqing4096 Apr 6 12:43 .mozilla
[root@dave anqing]#
看來已經實現了;但這樣還是不夠的,因為/home/anqing/的目錄權限可能會過於公開:
drwxr-xr-x. 4 anqing anqing4096 Apr 6 12:43 /home/anqing
我們看到 /home/anqing目錄的權限為 drwxr-xr-x ,也就是同組用戶和其它用戶組所能查看,為了保密,我們有理由把新增用戶家目錄的權限設置為只有其自己可讀可寫可執行;於是... ...
[root@dave anqing]# chmod700 /home/anqing/
[root@dave anqing]# ls -ld/home/anqing
drwx------. 4 anqing anqing4096 Apr 6 12:43 /home/anqing
我們用其它用戶,當然得把具有超級權限的root用戶除外;比如我以dave用戶來查看anqing的家目錄會得到如下信息;
[root@dave anqing]# su -dave
[dave@dave ~]$ ls -la/home/anqing
ls: cannot open directory /home/anqing:Permission denied
3.2.5 設置新增用戶的密碼
以上各步驟都就序了,我們得為新增用戶設置密碼了;要通過passwd命令來生成;這個沒有辦法通過修改文件解決;
passwd 的用法:passwd 用戶名
[root@dave anqing]# passwdanqing
Changing password for useranqing.
New password:
BAD PASSWORD: it is based ona dictionary word
BAD PASSWORD: is too simple
Retype new password:
passwd: all authenticationtokens updated successfully.
[root@dave anqing]#
3.2.6 測試添增用戶是否成功
您可以用新增用戶登錄測試,也可以通過su 來切換用戶測試:
[root@dave anqing]# su -dave
[dave@dave ~]$ su - anqing
Password:
[anqing@dave ~]$ cd ~
[anqing@dave ~]$ pwd
/home/anqing
[anqing@dave ~]$ ls -la
total 32
drwx------. 4 anqing anqing4096 Apr 6 12:43 .
drwxr-xr-x. 5 root root 4096 Apr 6 12:43 ..
-rw-r--r--. 1 anqinganqing 18 Apr 6 12:43 .bash_logout
-rw-r--r--. 1 anqinganqing 176 Apr 6 12:43 .bash_profile
-rw-r--r--. 1 anqinganqing 124 Apr 6 12:43 .bashrc
drwxr-xr-x. 2 anqing anqing4096 Apr 6 12:43 .gnome2
-rw-r--r--. 1 anqinganqing 121 Apr 6 12:43 .kshrc
drwxr-xr-x. 4 anqing anqing4096 Apr 6 12:43 .mozilla
[anqing@dave ~]$ mkdirtestdir
[anqing@dave ~]$ ls -lh
total 4.0K
drwxrwxr-x. 2 anqing anqing4.0K Apr 6 12:49 testdir
[anqing@dave ~]$
通過上面一系列動作,驗證anqing用戶已經成功。
3.3 通過修改用戶(User)和用戶組(Group)配置文件的辦法來修改用戶或用戶組
我們可以修改/etc/passwd 和/etc/group 來達到修改用戶和用戶所歸屬的組,這個過程和添加新用戶時差不多;比如我想修改anqing的用戶名全稱、公司以及電話等信息;我們可以修改/etc/passwd 實現。
3.3.1 修改用戶信息
--原始記錄:
[root@dave anqing]# cat/etc/passwd|grep anqing
anqing:x:508:508::/home/anqing:/bin/bash
我們可以修改為
anqing:x:508:508:david dai,Officeanqing,13800000000:/home/anqing:/bin/bash
當然我們還可以修改用戶的bash 類型,家目錄等,當然如果修改家目錄,還得進行建家目錄、屬主和權限的操作,這和前面添加用戶的辦法在程序上有些是相同的;修改完成後,我們要進行pwconv 同步,通過finger 來查看用戶的信息等。
[root@dave anqing]# pwconv
[root@dave anqing]# fingeranqing
Login: anqing Name: david dai
Directory: /home/anqing Shell: /bin/bash
Office: Office anqing,+1-380-000-0000
Never logged in.
No mail.
No Plan.
[root@dave anqing]#
3.3.2 修改用戶所歸屬的組,可以通過/etc/group 修改實現
當然修改用戶和用戶組,不僅能通過修改配置文件來實現,還能過過 usermod 及chfn來實現;這裡我們先講一講如何通過修改配置文件來達到目的;如果我們想把anqing 這個用戶歸屬到root用戶組,所以我們還能修改/etc/group 的辦法來達到目的;找到/etc/group 中的root開頭的一行,按其規劃加入anqing;
root:x:0:root,anqing
然後執行 grpconv 命令來同步/etc/group 和/etc/gshadow兩個文件的內容。
[root@dave anqing]# grpconv
[root@dave anqing]# idanqing
uid=508(anqing)gid=508(anqing) groups=508(anqing),0(root)
3.3.3 刪除用戶及用戶組的辦法
這個比較簡單,我們可以通過刪除/etc/passwd 和/etc/group 相應的用戶和用戶組記錄就能達到目的,也能過過userdel 和groupdel 來實現對用戶及用戶組的刪除;如果是通過修改用戶和用戶組配置文件的辦法來刪除用戶,就是刪除相應的記錄就行了,如果不想保留其家目錄,刪除就是了。
只刪除anqing用戶,其家目錄和mail等仍會保存:
[root@localhost ~]# userdel anqing
加上-r 參數,是刪除家目錄及mail等:
[root@localhost ~]# userdel -r anqing
用userdel 刪除用戶的同時,也會把其用戶組刪除;我們可以通過/etc/passwd 和/etc/group 的內容變化來查看。
[root@dave anqing]# cat/etc/passwd |grep anqing
[root@dave anqing]# cat/etc/group|grep anqing
[root@dave anqing]# cat/etc/group|grep root
root:x:0:root,dave
bin:x:1:root,bin,daemon
daemon:x:2:root,bin,daemon
sys:x:3:root,bin,adm
adm:x:4:root,adm,daemon
disk:x:6:root
wheel:x:10:root
[root@dave anqing]#