Linux中用戶與用戶組管理

来源:https://www.cnblogs.com/ddz-linux/archive/2019/03/03/10467106.html
-Advertisement-
Play Games

1.基礎知識 Linux作為一種多用戶的操作系統(伺服器系統),允許多個用戶同時登陸到系統上,並響應每個用戶的請求。 任何需要使用操作系統的用戶,都需要一個系統賬號,賬號分為: 管理員賬號與普通用戶賬號。 在Linux中,操作系統 根據UID來判斷用!根據UID來判斷用戶! 而不是用戶名! 只要id ...


1.基礎知識

Linux作為一種多用戶的操作系統(伺服器系統),允許多個用戶同時登陸到系統上,並響應每個用戶的請求。

任何需要使用操作系統的用戶,都需要一個系統賬號,賬號分為:管理員賬號與普通用戶賬號。

在Linux中,操作系統根據UID來判斷用!根據UID來判斷用戶! 而不是用戶名!只要id為0就是管理員,哪怕有多個id為0 的賬號

系統在新建賬號時,會根據賬號類型,自動分配遞增賬號的UID與GID (用戶身份編號,組編號),也可自行分配。通常情況下,應當保證UID與GID唯一且不重覆。

1.1 組的類別

在Linux中,每個用戶必須有一個主組。當創建賬號時,系統會自動創建一個同名組作為該賬戶的主組。用戶必須屬於一個且只有一個主組。用戶可以屬於零個或者多個附加組。

1.2 用戶與組的配置文件

在Linux中,萬物皆文件,所以用戶與組也以配置文件的形式保存在系統中,以下為用戶和組的主要配置文件詳解:

 -   /etc/passwd:用戶及其屬性信息(名稱、 UID、主組ID等)
 -   /etc/group:組及其屬性信息
 -   /etc/shadow:用戶密碼及其相關屬性
 -   /etc/gshadow:組密碼及其相關屬性

passwd文件格式如下圖:

依次含義為:

  • 登錄用戶名
  • 密碼
  • UID
  • GID
  • 全名或註釋
  • 用戶主目錄
  • 用戶預設使用shell

group文件格式如下圖:

依次含義為:

  • 群組名稱
  • 群組密碼(通常不需要設定,密碼被記錄在/etc/gshadow)
  • GID:群組ID
  • 附加組(以,來分割,該賬戶沒有附加組所以為空)

shadow文件格式如下圖:

依次含義為:

  • 登錄用戶名
  • 密碼(通常使用shad512加密)
  • 從1970年1月1日起計算到現在為止密碼最近一次被更改的時間
  • 密碼再過幾天就可以被修改(0表示隨時可改)
  • 密碼幾天後必須變更(99999表示永不過期)
  • 密碼過期前多久提示用戶
  • 密碼過期多久後賬戶將被鎖定
  • 多少天後賬戶將失效(從1970-1-1算起)

gshadow文件格式如下圖:

依次含義為:

  • 群組名稱
  • 群組密碼
  • 組管理員列表
  • 當前用戶的附加組

2.用戶賬號管理

在Linux,管理員在預設情況下為root賬戶,UID=0。普通用戶UID預設範圍為1-65535。在centos 6中,新建用戶,預設系統用戶的UID範圍為1-499。普通用戶為500+。在centos 7中,系統用戶範圍為1-999。普通用戶為1000+。對系統的操作許可權由用戶決定。

通常對用戶賬號的操作分為添加,修改,刪除。

2.1 添加賬戶

通過:useradd命令,來添加用戶語法如下:

useradd [opentions] login

參數說明:

  • -u UID 自定義UID (預設系統遞增)
  • -o 配合-u 選項,不檢查UID的唯一性(不建議)
  • -g GID:指明用戶所屬基本組,可為組名,也可以GID
  • -c comment 指定一段註釋性描述。
  • -d 目錄 指定用戶主目錄,如果此目錄不存在,則同時使用-m選項,可以創建主目錄。
  • -g 用戶組 指定用戶所屬的用戶組。
  • -G 用戶組,用戶組 指定用戶所屬的附加組。
  • -s Shell文件 指定用戶的登錄Shell。
  • -u 用戶號 指定用戶的用戶號,如果同時有-o選項,則可以重覆使用其他用戶的標識號。

實例1

# useradd –d /usr/ddz ddz

創建了一個用戶ddz,並將他的家目錄設置到/user/ddz

實例2

# useradd -s /sbin/bash -g root –G mage,wang ddz

此命令新建了一個用戶ddz,設置該用戶使用的shell為/sbin/bash,設置他的主組屬於group用戶組,設置附加組為mage和wang。(當設置組時,要保證組已經存在,否則請先創建該組)

小技巧:

  • 增加用戶賬號就是在/etc/passwd文件中為新用戶增加一條記錄,同時系統會自動更新其他系統文件如/etc/shadow, /etc/group等。
  • 通常情況創建賬戶,賬戶ID會按照最大的值遞增,但是遞增的值必須在最大範圍內。
  • 在部署軟體時,通常會需要使用賬戶,所以需要指定UID,來部署所有的賬號都用同一個UID,來方便管理。
  • newusers [passwd格式文件] 用於批量創建賬戶,只需要每一列賬戶信息格式,按照passwd中書寫,之後上傳到Linux中替換即可。
  • chpasswd 批量修改用戶口令。將文件格式寫為:user:passwd 。每行一個,之後倒入linux即可。
  • 創建賬戶的預設值設定位於: /etc/default/useradd文件中,該文件記錄了創建用戶賬戶時的預設信息,可通過修改該文件來修改創建賬戶時的信息。

2.2 刪除帳號

如果一個用戶的賬號不再使用,可以從系統中刪除。刪除用戶賬號就是要將/etc/passwd等系統文件中的該用戶記錄刪除,必要時還刪除用戶的主目錄。

通常在運維工作中,一般使用讓賬號失效,果然修改賬戶名的方式,來便捷的操作賬號。

刪除一個已有的用戶賬號使用userdel命令,其格式如下:

userdel 選項 用戶名

常用的選項是 -r,它的作用是把用戶的主目錄一起刪除。

例如:

# userdel -r sam

此命令刪除用戶sam在系統文件中(主要是/etc/passwd, /etc/shadow, /etc/group等)的記錄,同時刪除用戶的主目錄。

刪除賬號需要該賬戶沒有人在使用,才能刪除成功。請使用命令刪除,不要去手動改文件。

2.3 修改帳號

修改用戶賬號就是根據實際情況更改用戶的有關屬性,如用戶號、主目錄、用戶組、登錄Shell等。

修改已有用戶的信息使用usermod命令,其格式如下:

usermod 選項 用戶名

常用的選項包括-c, -d, -m, -g, -G, -s, -u以及-o等,這些選項的意義與useradd命令中的選項一樣,可以為用戶指定新的資源值。

另外,有些系統可以使用選項:-l 新用戶名

這個選項指定一個新的賬號,即將原來的用戶名改為新的用戶名。

例如:

# usermod -s /bin/ksh -d /home/z –g developer sam

此命令將用戶sam的登錄Shell修改為ksh,主目錄改為/home/z,用戶組改為developer。

2.4 查詢賬號口令

id [opentions] [User]

相關參數:

  • -u:顯示UID
  • -g:顯示GID
  • -G:顯示用戶所屬的組ID
  • -n:顯示名稱

2.5 用戶口令的管理

用戶管理的一項重要內容是用戶口令的管理。用戶賬號剛創建時沒有口令,但是被系統鎖定,無法使用(在passwd文件中,密碼列顯示為!!或者!表示用戶被鎖定,是無法登陸的),必須為其指定口令後才可以使用,即使是指定空口令。

指定和修改用戶口令的Shell命令是passwd。超級用戶可以為自己和其他用戶指定口令,普通用戶只能用它修改自己的口令。命令的格式為:

passwd 選項 用戶名

可使用的選項:

  • -l 鎖定口令,即禁用賬號。
  • -u 口令解鎖。
  • -d 使賬號無口令。
  • -f 強迫用戶下次登錄時修改口令。

如果預設用戶名,則修改當前用戶的口令。

例如,假設當前用戶是sam,則下麵的命令修改該用戶自己的口令:

$ passwd 
Old password:****** 
New password:******* 
Re-enter new password:*******

如果是超級用戶,可以用下列形式指定任何用戶的口令:

# passwd sam 
New password:******* 
Re-enter new password:*******

普通用戶修改自己的口令時,passwd命令會先詢問原口令,驗證後再要求用戶輸入兩遍新口令,如果兩次輸入的口令一致,則將這個口令指定給用戶;而超級用戶為用戶指定口令時,就不需要知道原口令。

為了系統安全起見,用戶應該選擇比較複雜的口令,例如最好使用8位長的口令,口令中包含有大寫、小寫字母和數字,並且應該與姓名、生日等不相同。

為用戶指定空口令時,執行下列形式的命令:

# passwd -d sam

此命令將用戶sam的口令刪除,這樣用戶sam下一次登錄時,系統就不再詢問口令。

passwd命令還可以用-l(lock)選項鎖定某一用戶,使其不能登錄,例如:

# passwd -l sam

利用組來簡化授權操作,當對整個組授權時,整個組下的賬號許可權都會進行修改

其他 : 用戶相關的其他指令

chfn [USER] 修改用戶的備註文檔

chsh [Shell] 修改用戶的指定shell

3.用戶組

3.用戶組的管理

每個用戶都有一個用戶組,系統可以對一個用戶組中的所有用戶進行集中管理。不同Linux 系統對用戶組的規定有所不同,如Linux下的用戶屬於與它同名的用戶組,這個用戶組在創建用戶時同時創建。

用戶組的管理涉及用戶組的添加、刪除和修改。組的增加、刪除和修改實際上就是對/etc/group文件的更新。

3.1增加組

1、增加一個新的用戶組使用groupadd命令。其格式如下:

groupadd 選項 用戶組

可以使用的選項有:

  • -g GID 指定新用戶組的組標識號(GID)。
  • -o 一般與-g選項同時使用,表示新用戶組的GID可以與系統已有用戶組的GID相同。
  • -r 創建系統組

實例1:

# groupadd group1

此命令向系統中增加了一個新組group1,新組的組標識號是在當前已有的最大組標識號的基礎上加1。

實例2:

# groupadd -g 101 group2

此命令向系統中增加了一個新組group2,同時指定新組的組標識號是101。

3.2 刪除組

2、如果要刪除一個已有的用戶組,使用groupdel命令,其格式如下:

groupdel 用戶組

例如:

# groupdel group1

此命令從系統中刪除組group1。要想刪除組,要確保該組不是主組,才能把這個組刪掉。

3.3 修改組

3、修改用戶組的屬性使用groupmod命令。其語法如下:

groupmod 選項 用戶組

常用的選項有:

  • -g GID 為用戶組指定新的組標識號。
  • -o 與-g選項同時使用,用戶組的新GID可以與系統已有用戶組的GID相同。
  • -n新用戶組 將用戶組的名字改為新名字

實例1:

# groupmod -g 102 group2

此命令將組group2的組標識號修改為102。

實例2:

# groupmod –g 10000 -n group3 group2

此命令將組group2的標識號改為10000,組名修改為group3。

3.4 切換組(臨時切換主組)

4、如果一個用戶同時屬於多個用戶組,那麼用戶可以在用戶組之間切換,以便具有其他用戶組的許可權。

用戶可以在登錄後,使用命令newgrp切換到其他用戶組,這個命令的參數就是目的用戶組。例如:

$ newgrp root

這條命令將當前用戶切換到root用戶組,前提條件是root用戶組確實是該用戶的主組或附加組。類似於用戶賬號的管理,用戶組的管理也可以通過集成的系統管理工具來完成。

3.5 更改查看組成員

5 、可以通過以下命令,來更改和查看組中的成員

 #groupmems [opentions] [action]

參數如下:

  • -g 更改為指定組(只有root可以使用)
  • -a 指定用戶加入組
  • -d 從組中刪除該用戶
  • -p 從組中清楚所有成員
  • -l 顯示組成員列表

實例1

$groupmems -l -g root

此命令表示查看root組中存在的成員。

實例2

$groupmems -a Father -g root

此命令表示將Father用戶加入root組中。

小技巧:

  • 一個用戶可以加入不同的組,但是有且只有一個主組。
  • 一個用戶的許可權為他所屬的多個組的累加許可權 。假設user賬戶附加組group1 = write group2 = read ,那麼user就擁有 write + read許可權。
  • 組和用戶的關係是多對多 一個用戶可以有多個組,一個組也可以有多個用戶。
  • 在windows中,只有管理員才允許對用戶組進行操作,但在Linux中,只要有組的口令,就可以讓賬號進入組。
  • root組的許可權與普通組許可權大致相同!!賬號並不是加入root組就能獲得用戶許可權!

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 大家好,這篇文章,我將向大家介紹ASP.NET MVC的模型視圖綁定,ASP.MVC的模型綁定分為兩種:一種是動態綁定【Dynamic Binding】;還有一種就是強類型綁定【Strongly typed binding】;【PS--上一篇文章:3.怎樣將ASP.NET MVC應用程式發佈到IIS ...
  • 大家好,上一篇對ASP.NET MVC 有了一個基本的認識之後,這一篇,我們來看下怎麼從頭到尾創建一個ASP.NET MVC 應用程式吧。【PS:返回上一篇文章:1.開始學習ASP.NET MVC】 第一步:開打VS2017,選擇【文件】-->【新建】-->【項目】,然後在彈出來的方框中,按照下麵的 ...
  • 調試機:win10 1809 虛擬機: win7 windbg屬性設置,在目標後面加上紫色字體參數: "D:\Program Files\Debugging Tools for Windows (x64)\windbg.exe" -b -k com:port=\\.\pipe\com_1,baud= ...
  • 我們常常為了一些軟體啟動的方便,將一些軟體的文件夾指定到系統的環境變數中,這樣就不需要到指定軟體的bin目錄,運行目錄下啟動(類似於JAVA,Python,Node等命令),直接Win+R、或者cmd直接就可以啟動,但是隨著一個個目錄的添加導致系統的環境變數超出了1024B,這時系統就會發出警告。 ...
  • 早在 20 世紀 70 年代,UNIX 系統是開源而且免費的。但是在 1979 年時,AT&T 公司宣 布了對 UNIX 系統的商業化計劃,隨之開源軟體業轉變成了版權式軟體產業,源代碼被當作 商業機密,成為專利產品,人們再也不能自由地享受科技成果。 於是在 1984 年,Richard Stallm ...
  • Linux內核地址映射模型 x86 CPU採用了段頁式地址映射模型。進程代碼中的地址為邏輯地址,經過段頁式地址映射後,才真正訪問物理記憶體。 段頁式機制如下圖。 Linux內核地址空間劃分 通常32位Linux內核地址空間劃分0~3G為用戶空間,3~4G為內核空間。註意這裡是32位內核地址空間劃分,6 ...
  • 問題: 在使用 WRK 對應用服務進行壓測的時候,提示 "too many open files" 信息,導致無法啟動測試。 原因: CentOS 7.x 預設的打開文件數目限製為 ,如果在使用其他軟體出現 "too many open files" 的錯誤。 解決: 只需要更改 文件裡面的內容,增 ...
  • 一、LCD控制原理 S5PV210處理器中自帶LCD控制器,控制LCD的顯示,把 LCD 圖像數據從一個位於系統記憶體的 video buffer 傳送到一個外部的 LCD 驅動器介面。 類型: 1. STN(超扭曲向列),它的特點是功耗低,但亮度不足,響應時間長;(1602那種類型的) 2. TFT ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...