本文轉自以下連接:node
http://fedora.linuxsir.org/main/?q=node/98linux
原文檔寫的很詳細,一是爲了方便閱讀,二是爲了增強理解,仍是邊看邊本身動手練習了一下。從新整理後的內容以下。感謝原做者的辛苦勞動。安全
個人測試環境:redhat 6.3bash
用戶(User)和用戶組(Group)的配置文件,是系統管理員最應該瞭解和掌握的系統基礎文件之一,從另外一方面來講,瞭解這些文件也是系統安全管理的重要組成部份。作爲一個合格的系統管理員應該對用戶和用戶組配置文件透徹瞭解才行。服務器
談到用戶,就不得不談用戶管理,用戶配置文件,以及用戶查詢和管理的控制工具。用戶管理主要經過修改用戶配置文件完成;用戶管理控制工具最終目的也是爲了修改用戶配置文件。oracle
什麼是用戶查詢和管理控制工具呢?less
用戶查詢和控制工具是查詢、添加、修改和刪除用戶等系統管理工具。好比查詢用戶的id和finger命令,添加用戶的useradd 或adduser 、userdel 用戶的刪除、設置密碼的passwd命令 、修改用戶usermod 等等。工具
咱們須要知道的是經過用戶查詢和控制工具所進行的動做的最終目的也是修改用戶配置文件。因此咱們進行用戶管理的時候,直接修改用戶配置文件同樣能夠達到用戶管理的目的。經過上面的解說,咱們能實實在在的感受到用戶(User)配置文件的重要性。測試
/etc/passwd 是系統識別用戶的一個文件,作個不恰當的比喻,/etc/passwd 是一個花名冊,系統全部的用戶都在這裏有登陸記載。ui
[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 ~]#
在/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 ;
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:
/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 ~]$
/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的加密信息文件。
/etc/group 文件是用戶組的配置文件,內容包括用戶和用戶組,而且能顯示出用戶是歸屬哪一個用戶組或哪幾個用戶組,由於一個用戶能夠歸屬一個或多個不一樣的用戶組;同一用戶組的用戶之間具備類似的特徵。
好比咱們把某一用戶加入到root用戶組,那麼這個用戶就能夠瀏覽root用戶家目錄的文件,若是root用戶把某個文件的讀寫執行權限開放,root用戶組的全部用戶均可以修改此文件,若是是可執行的文件(好比腳本),root用戶組的用戶也是能夠執行的。
用戶組的特性在系統管理中爲系統管理員提供了極大的方便,但安全性也是值得關注的,如某個用戶下有對系統管理有最重要的內容,最好讓用戶擁有獨立的用戶組,或者是把用戶下的文件的權限設置爲徹底私有;另外root用戶組通常不要輕易把普通用戶加入進去。
/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來獲得;
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 並非最重要的。
/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/
咱們對用戶(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
除了直接查看用戶(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.
咱們能夠經過用戶來查詢所歸屬的組,用groups 來查詢;好比我查詢beinan和linuxsir 所歸屬的組,咱們能夠用groups 來查詢;
[root@localhost ~]# groupsbeinan linuxsir
beinan : beinan
linuxsir : linuxsir rootbeinan
注:這是經過groups 同時查看了用戶beinan和linuxsir所歸屬的組;
在前面說過,能夠經過修改配置文件的辦法來管理用戶,因此此主題應該包括此內容;固然經過用戶及用戶組管理工具(好比 adduser、userdel、usermod、userinfo、groupadd 、groupdel 、groupmod等)也是能夠的。
經過修改用戶(User)和用戶組(Group)配置文件的方法管理用戶之用戶的添加流程:
咱們先以添加用戶爲例,對用戶的刪除和修改都比較簡單。
咱們按/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]#
首先,咱們得查看是否有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]#
建立用戶的家目錄,咱們要以/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
咱們發現新增用戶的家目錄的屬主目前是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
以上各步驟都就序了,咱們得爲新增用戶設置密碼了;要經過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]#
您能夠用新增用戶登陸測試,也能夠經過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用戶已經成功。
咱們能夠修改/etc/passwd 和/etc/group 來達到修改用戶和用戶所歸屬的組,這個過程和添加新用戶時差很少;好比我想修改anqing的用戶名全稱、公司以及電話等信息;咱們能夠修改/etc/passwd 實現。
--原始記錄:
[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]#
固然修改用戶和用戶組,不只能經過修改配置文件來實現,還能過過 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)
這個比較簡單,咱們能夠經過刪除/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]#
--------------------------------------------------------------------------------------------
Skype: tianlesoftware
QQ: tianlesoftware@gmail.com
Email: tianlesoftware@gmail.com
Blog: http://blog.csdn.net/tianlesoftware
Weibo: http://weibo.com/tianlesoftware
Twitter: http://twitter.com/tianlesoftware
Facebook: http://www.facebook.com/tianlesoftware
Linkedin: http://cn.linkedin.com/in/tianlesoftware