Linux用戶與用戶組管理

下面介紹中的示例,來自於Win10 Linux子系統。
更多linux命令可參考http://man.linuxde.net/

一、多用戶多任務

Linux 是一個多用戶、多任務的操作系統。比如通過遠程訪問,多個用戶可以同時登陸一個系統並執行各自的多個任務。

用戶在系統中是分角色的,並通過UID和GID進行區分。UID就是用戶ID,GID就是羣組的ID號。在Linux 系統中,由於角色不同,權限和所完成的任務也不同。

用戶大體分爲虛擬用戶和實體用戶:

  • root 用戶:系統管理員,可以登錄系統,擁有最高權限。
  • 虛擬用戶:這類用戶也被稱之爲僞用戶或假用戶,與真實用戶區分開來,這類用戶不具有登錄系統的能力,但卻是系統運行不可缺少的用戶,比如bin、daemon、adm、ftp、mail等;這類用戶都是系統自身擁有的,而非後來添加的,當然我們也可以添加虛擬用戶。 (比如nobody和ftp 等,我們訪問LinuxSir.Org 的網頁程序,就是nobody用戶;我們匿名訪問ftp 時,會用到用戶ftp或nobody )
  • 普通實體用戶:這類用戶能登錄系統,但只能操作自己家目錄的內容,權限有限,是系統管理員自行添加的。

多用戶機制使得系統管理更爲方便,同時也使得系統更爲安全。不同用戶通過權限控制可以用於完成不同的工作。

二、用戶(user)和用戶組(group)概念

用戶組(group)就是具有相同特徵的用戶(user)的集合體。 比如我們需要對幾個用戶採用相同的控制操作,那麼我們可以將這幾個用戶加入同一個用戶組,通過控制和修改該用戶組來達到同時控制幾個用戶的目的。

用戶和用戶組的對應關係是:一對一、多對一、一對多或多對多;

  • 一對一:某個用戶可以是某個組的唯一成員;
  • 多對一:多個用戶可以是某個唯一的組的成員,不歸屬其它用戶組;比如beinan和linuxsir兩個用戶只歸屬於beinan用戶組;
  • 一對多:某個用戶可以是多個用戶組的成員;比如beinan可以是root組成員,也可以是linuxsir用戶組成員,還可以是adm用戶組成員;
  • 多對多:多個用戶對應多個用戶組,並且幾個用戶可以是歸屬相同的組;其實多對多的關係是前面三條的擴展;理解了上面的三條,這條也能理解;

三、用戶和用戶組相關的配置文件

1、/etc/passwd文件

通常在Linux系統中,用戶的關鍵信息被存放在系統的/etc/passwd文件中,系統的每一個合法用戶賬號對應於該文件中的一行記錄,這行記錄定義了每個用戶賬號的屬性,其格式爲:

用戶名:口令:用戶標識號:組標識號:註釋性描述:主目錄:登錄Shell

其內容示例如下:

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
...
  • 用戶名,即代表用戶賬號的字符串。
  • 口令,通常口令字段中只存放一個特別的字符,例如“x”或“*”。而真正的加密後的用戶口令則存放到/etc/shadow文件。
  • 用戶標識號,系統內部用來標識用戶。如果幾個用戶名對應的用戶標識號是相同的,系統內部將把他們視爲同一個用戶,不過他們能有不同的口令、不同的主目錄及不同的登錄Shell等。0是終極用戶root的標識號,1~99由系統保留,作爲管理賬號,普通用戶的標識號從100開始。
  • 組標識號,記用戶所屬的用戶組,對應着/etc/group文件中的一條記錄。
  • 註釋性描述,通常是一段任意的註釋性描述文字,用做finger命令的輸出。
  • 主目錄,用戶的起始工作目錄,他是用戶在登錄到系統之後所處的目錄。在大多數系統中,各用戶的主目錄都被組織在同一個特定的目錄下,而用戶主目錄的名稱就是該用戶的登錄名。各用戶對自己的主目錄有讀、寫、執行(搜索)權限,其他用戶對此目錄的訪問權限則根據具體情況設置。
  • 登陸shell。用戶登錄後,要啓動一個進程,負責將用戶的操作傳給內核,這個進程是用戶登錄到系統後運行的命令解釋器或某個特定的程式,即Shell。Shell是用戶和Linux系統之間的接口。 系統管理員能根據系統情況和用戶習慣爲用戶指定某個Shell。如果不指定Shell,那麼系統使用sh爲默認的登錄Shell,即這個字段的值爲/bin/sh。(Win10 linux子系統下爲/bin/bash)
2、/etc/shadow文件

該文件只有root用戶可以訪問,同樣保存了加密的帳號信息。其格式爲:

用戶名:加密口令:最後一次修改時間:最小時間間隔:最大時間間隔:警告時間:不活動時間:失效時間:標誌

其內容示例如下:

root:*:17255:0:99999:7:::
daemon:*:17255:0:99999:7:::
bin:*:17255:0:99999:7:::
sys:*:17255:0:99999:7:::
sync:*:17255:0:99999:7:::
games:*:17255:0:99999:7:::
...
  • 用戶名,同/etc/passwd文件中一致。
  • 口令,同/etc/passwd文件中一致。
  • 最後一次修改時間,表示的是從某個時刻起,到用戶最後一次修改口令時的天數。一些系統中默認時間起點爲1970年1月1日。
  • 最小時間間隔,指的是兩次修改口令之間所需的最小天數。
  • 最大時間間隔,指的是口令保持有效的最大天數。
  • 警告時間,字段表示的是從系統開始警告用戶到用戶密碼正式失效之間的天數。
  • 不活動時間,表示的是用戶沒有登錄活動但賬號仍能保持有效的最大天數。
  • 失效時間,字段給出的是個絕對的天數,如果使用了這個字段,那麼就給出相應賬號的生存期。期滿後,該賬號就不再是個合法的賬號,也就不能再用來登錄了。
3、/etc/group文件

用戶組信息保存在/etc/group配置文件中,任何用戶均可讀取。用戶組的加密密碼保存在/etc/gshadow配置文件中。其格式爲:

組名:口令:組標識號:組內用戶列表

其內容示例如下:

root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:syslog
...
4、/etc/gshadow文件

用於存儲真實加密口令的組信息。

其格式爲:

組名:口令:組的管理員(組長):組內用戶列表

四、用戶和用戶組相關的控制指令

1、管理用戶的工具或命令
  • useradd 或 adduesr: 添加用戶
  • passwd: 爲用戶設置密碼
  • usermod: 修改用戶屬性,如登錄名、用戶的home目錄等
  • pwcov: 同步用戶從/etc/passwd 到/etc/shadow
  • pwck: 校驗用戶配置文件/etc/passwd 和/etc/shadow 文件內容是否合法或完整;
  • pwunconv:與pwconv功能相反,用來關閉用戶的投影密碼。它會把密碼從shadow文件內,重回存到passwd文件裏,然後刪除 /etc/shadow 文件。
  • finger:查看用戶信息工具
  • id:查看用戶的UID、GID及所歸屬的用戶組
  • chfn:更改用戶信息工具
  • su:用戶切換工具
  • sudo:用來以其他身份來執行命令,預設的身份爲root。在/etc/sudoers中設置了可執行sudo指令的用戶。若其未經授權的用戶企圖使用sudo,則會發出警告的郵件給管理員。用戶使用sudo時,必須先輸入密碼,之後有5分鐘的有效期限,超過期限則必須重新輸入密碼。
  • visudo: 用於編輯 /etc/sudoers 的命令;也可以不用這個命令,直接用vi 來編輯 /etc/sudoers 的效果是一樣的。
2、管理用戶組的工具或命令

該部分命令與“用戶”命令很相似。

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

參考文檔:

發佈了137 篇原創文章 · 獲贊 876 · 訪問量 164萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章