用戶和用戶組

二、用戶(user)和用戶組(group)概念;
1、用戶(user)的概念;
通過前面對Linux 多用戶的理解,我們明白Linux 是真正意義上的多用戶操作系統,所以我們能在Linux系統中建若干用戶(user)。比如我們的同事想用我的計算機,但我不想讓他用我的用戶名登錄,因爲我的用戶名下有不想讓別人看到的資料和信息(也就是隱私內容)這時我就可以給他建一個新的用戶名,讓他用我所開的用戶名去折騰,這從計算機安全角度來說是符合操作規則的; 當然用戶(user)的概念理解還不僅僅於此,在Linux系統中還有一些用戶是用來完成特定任務的,比如nobody和ftp 等,我們訪問LinuxSir.Org 的網頁程序,就是nobody用戶;我們匿名訪問ftp 時,會用到用戶ftp或nobody ;如果您想了解Linux系統的一些帳號,請查看 /etc/passwd ;
2、用戶組(group)的概念;
一對一、多對一、一對多或多對多;
一對一:某個用戶可以是某個組的唯一成員; 多對一:多個用戶可以是某個唯一的組的成員,不歸屬其它用戶組;比如beinan和linuxsir兩個用戶只歸屬於beinan用戶組;
一對多:某個用戶可以是多個用戶組的成員;比如beinan可以是root組成員,也可以是linuxsir用戶組成員,還可以是adm用戶組成員; 多對多:多個用戶對應多個用戶組,並且幾個用戶可以是歸屬相同的組;其實多對多的關係是前面三條的擴展;理解了上面的三條,這條也能理解;
二 用戶(user)和用戶組(group)相關的配置文件、命令或目錄;
1、與用戶(user)和用戶組(group)相關的配置文件;

1)與用戶(user)相關的配置文件;

/etc/passwd 注:用戶(user)的配置文件; /etc/shadow 注:用戶(user)影子口令文件;

2)與用戶組(group)相關的配置文件;

/etc/group 注:用戶組(group)配置文件;
/etc/gshadow 注:用戶組(group)的影子文件;

2、管理用戶(user)和用戶組(group)的相關工具或命令;

1)管理用戶(user)的工具或命令;
useradd 注:添加用戶 adduser 注:添加用戶
passwd 注:爲用戶設置密碼
usermod 注:修改用戶命令,可以通過usermod 來修改登錄名、用戶的家目錄等等; pwcov 注:同步用戶從/etc/passwd 到/etc/shadow pwck 注:pwck是校驗用戶配置文件/etc/passwd 和/etc/shadow 文件內容是否合法或完整;
pwunconv 注:是pwcov 的立逆向操作,是從/etc/shadow和 /etc/passwd 創建/etc/passwd ,然後會刪除 /etc/shadow 文件;
finger 注:查看用戶信息工具
id 注:查看用戶的UID、GID及所歸屬的用戶組
chfn 注:更改用戶信息工具
su 注:用戶切換工具
sudo 注:sudo 是通過另一個用戶來執行命令(execute a command as another user),su 是用來切換用戶,然後通過切換到的用戶來完成相應的任務,但sudo 能後面直接執行命令,比如sudo 不需要root 密碼就可以執行root 賦與的執行只有root才能執行相應的命令;但得通過visudo 來編輯/etc/sudoers來實現;
visudo 注:visodo 是編輯 /etc/sudoers 的命令;也可以不用這個命令,直接用vi 來編輯 /etc/sudoers 的效果是一樣的;
sudoedit 注:和sudo 功能差不多;
2)管理用戶組(group)的工具或命令;

groupadd 注:添加用戶組;
groupdel 注:刪除用戶組;
groupmod 注:修改用戶組信息
groups 注:顯示用戶所屬的用戶組 grpck
grpconv 注:通過/etc/group和/etc/gshadow 的文件內容來同步或創建/etc/gshadow ,如果/etc/gshadow 不存在則創建;
grpunconv 注:通過/etc/group 和/etc/gshadow 文件內容來同步或創建/etc/group ,然後刪除gshadow文件;

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 ;
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開始;

二、關於用戶組;
具有某種共同特徵的用戶集合起來就是用戶組(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來得到;

cat /etc/passwd
id

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