Linux筆記:用戶和用戶組

来源:https://www.cnblogs.com/guyuyun/archive/2020/04/18/12723551.html
-Advertisement-
Play Games

Linux中的用戶通常分為root用戶(超級管理員)和普通用戶,因為不同場景的可能會想要新建一些特殊用途的普通用戶,此時新建的用戶可以根據不同的使用場景將他們劃分在不同的用戶組中,然後給用戶組設置相關的許可權,使得該用戶組下的用戶都可以執行某些操作或都不能執行某些操作,以此來管理眾多的用戶。建立用戶組 ...


Linux中的用戶通常分為root用戶(超級管理員)和普通用戶,因為不同場景的可能會想要新建一些特殊用途的普通用戶,此時新建的用戶可以根據不同的使用場景將他們劃分在不同的用戶組中,然後給用戶組設置相關的許可權,使得該用戶組下的用戶都可以執行某些操作或都不能執行某些操作,以此來管理眾多的用戶。建立用戶組的目的是方便管理,以便應對複雜的使用場景,當然,也可以不用將用戶加到某個用戶組裡。本文講一些用戶和用戶組的常用操作,以及如何查看用戶和用戶組的相關信息。

 

一、常用用戶和用戶組操作命令

useradd命令
useradd [選項] 用戶名:添加一個用戶。
添加一個用戶之後,系統會自動生成或添加一些文件和配置:

  • /etc/password:添加對應的用戶信息。
  • /etc/shadow:添加對應用戶的密碼信息。
  • /etc/group:添加用戶的組信息。
  • /etc/gshadow:添加用戶對應組的密碼信息。
  • /home/用戶名/:生成對應的用戶家目錄。
  • /var/spool/mail/用戶名/:生成對應的用戶郵箱目錄。

選項:

  • -u UID:手工指定用戶的UID(不建議自己手工指定)。
  • -d 家目錄:手工指定用戶的家目錄(不建議自己手工指定)。
  • -c 用戶說明:手工指定用戶的說明。
  • -g 組名:手工指定用戶的初始組(不建議自己手工指定)。
  • -G 組名:手工指定用戶的附加組,如果是指定多個組,多個組名之間使用逗號連接。
  • -s shell:手工指定用戶的登錄shell,預設是/bin/bash。

註:在/etc/default/useradd中指定了useradd命令執行時的某些預設設置,比家目錄在/home下等信息,其他的一些預設信息可以在/etc/login.defs中查看。

 

passwd命令
passwd [選項] [用戶]:給某個用戶設置密碼,root用戶可以給任何人設置密碼。
如果沒有輸入用戶名,則表示修改當前用戶自己的密碼,但只有root用戶可以修改別人的密碼,如果不是root用戶,也根本指定不了用戶名,因為根本不允許普通用戶修改別人的密碼。
普通用戶設置自己的密碼時必須符合密碼規則,只有root用戶才能強行地隨意設置密碼。
選項:

  • -S:查詢用戶密碼的密碼狀態信息(僅root用戶可用)。
  • -l:暫時鎖定用戶(僅root用戶可用),該用戶就暫時不能登錄了,系統此時實際進行的操作就是在/etc/shadow文件(存放用戶密碼相關的信息)中對應用戶的密碼前加了一個感嘆號!。
  • -u:解鎖用戶(僅root用戶可用),也可以手動修改/etc/shadow文件中對應用戶的密碼,刪除密碼最前面的感嘆號!即可。
  • --stdin:可以通過管道符輸出的數據作為用戶的密碼,如echo "123"|passwd --stdin user1,即將123設置為user1的密碼,這個選項在使用shell腳本編程的時候最常用。

 

who/w命令
who:直接查看當前登錄的用戶信息。包括用戶名、登錄終端、登錄時間、登錄的主機ip(沒有值就表示本機登錄)。
登錄終端:

  • tty:表示本地終端,即直接在Linux系統上登錄。
  • pts:遠程登錄,即使用連接工具進行登錄。

w:查看當前登錄用戶的詳細信息。相較於who,額外的信息包括:

  • 當前系統時間。
  • up:系統連續運行的時間。
  • 當前登錄用戶數。
  • 當前系統的負載。
  • IDLE:登錄用戶空閑的時間(沒有任何操作的時間)。
  • JCPU:登錄用戶總計占用CPU時間。
  • PCPU:登錄用戶執行操作占用的CPU時間。
  • WHAT:登錄用戶當前執行的命令。

 

usermod/chage命令
usermod [選項] 用戶:修改一個已經存在的用戶的用戶信息。
useradd命令中支持的命令,usermod都支持,額外支持的選項有:

  • -L:暫時鎖定用戶。
  • -U:解鎖用戶。

chage [選項] 用戶名:修改用戶密碼狀態。
選項:

  • -l:列出用戶的詳細密碼狀態。
  • -d 日期:修改密碼的最後一次更改時間。通常在shell腳本中會經常使用這個選項,腳本中將這個值設置為0,這樣就會導致這個用戶第一次登陸就會被要求必須修改密碼才能使用。
  • -m 天數:修改兩次密碼的間隔時間。
  • -M 天數:修改密碼有效期。
  • -W 天數:密碼過期前警告天數。
  • -I 天數:密碼過期後寬限天數。
  • -E 日期:賬號失效時間。

 

userdel/id/su命令
userdel [-r] 用戶名:刪除某個用戶。-r選項表示刪除用戶的同時刪除它的家目錄。
id 用戶名:查看用戶的UID和GID信息。
su [選項] 用戶名:切換用戶身份。
選項:

  • -:表示連帶用戶的環境也一起切換,如su - root。
  • -c:僅使用該用戶的身份執行一次命令,但不切換身份。如su - root -c "useradd user3"表示調用root用戶添加一個user3用戶。

 

groupadd/groupmod/groupdel/gpasswd命令
groupadd [選項] 組名:添加一個用戶組。
選項:

  • -g GID:設置用戶組的GID。

groupmod [選項] 組名:修改組信息。
選項:

  • -g GID:修改用戶組的GID。
  • -n 新組名:修改組名。

groupdel 組名:刪除對應的用戶組。
gpasswd [選項] 組名:把用戶添加入組或從組中刪除。
選項:

  • -a 用戶名:把用戶加入組。
  • -d 用戶名:把用戶從組中刪除。

 

二、查看用戶和用戶組信息

用戶信息文件/etc/passwd
這個文件中存放著用戶的基本信息,每一行存放一個用戶的信息,有多少行就有多少個用戶。
每一行中的用戶信息使用冒號分隔,共有7個部分:

  • 第1個欄位:用戶名稱。
  • 第2個欄位:密碼標識,一般為x,表示這個用戶是有密碼的(真正的密碼存放在了文件/etc/shadow中),如果這個項沒有值,則表示這個用戶是沒有密碼的,即可以直接登錄而不用輸入密碼(這種不設密碼的情況只能在本機登錄,通過遠程連接的方式是無法登錄的)。
  • 第3個欄位:UID,即用戶ID,用戶名和UID的關係,相當於功能變數名稱和IP的關係,IP不好記,那就記功能變數名稱,所以用戶就只需要記用戶名稱即可,不用記UID,UID是系統來識別和記憶的。
    • 0:超級用戶,叫root的不一定是管理員,但UID為0的一定是管理員。
    • 1-499:系統用戶(偽用戶),註意不能去修改這些用戶的東西。
    • 500-65535:普通用戶。
  • 第4個欄位:GUD,即用戶初始組ID。
    • 初始組:指用戶一登錄就立刻擁有這個用戶組的相關許可權,每個用戶的初始組只能有一個,一般就是使用這個用戶的用戶名作為這個組的名稱(這個初始名雖然可以改,但是不建議修改)。
    • 附加組:一個用戶可以屬於多個組,並擁有這些組的許可權,用戶的所屬組中,不是初始組的組就是它的附加組。
  • 第5個欄位:用戶說明信息,可以不用加這個信息。
  • 第6個欄位:用戶的家目錄。
    • 超級用戶:/root/
    • 普通用戶:/home/用戶名/
  • 第7個欄位:登錄之後的Shell,預設是系統的標準Shell:/bin/bash。同時普通用戶的Shell必須為/bin/bash,否則無法登錄。如果把某個用戶的Shell指定為/sbin/nologin,表示將這個用戶禁用,不允許這個用戶登錄。

 

用戶密碼文件/etc/shadow
這個文件保存用戶密碼的相關信息,並且此文件的許可權為----------,即如果是普通用戶,連讀的許可權也是沒有的,當然root用戶是可以進行讀寫的。
這個文件中每一行保存一個用戶的信息,並且也是使用冒號來分隔不同的用戶信息的,共有9個欄位:

  • 第1個欄位:用戶名。
  • 第2個欄位:加密後的密碼。這個項如果是!!或者*表示這個用戶是沒有密碼,且不能登錄。如果想要禁用某個用戶的登錄,只需要在他的密碼前加一個!即可。
  • 第3個欄位:密碼的最後一次修改日期(天),使用的是1970年1月1日到當前的天數。
  • 第4個欄位:允許修改密碼的最小時間間隔。
  • 第5個欄位:密碼有效期(天),指修改密碼後多少天之內有效。
  • 第6個欄位:密碼到期之前的n天開始提醒用戶更改密碼,在這n天內每次登錄都會提示你更改密碼。
  • 第7個欄位:密碼過期後的寬限天數。如果沒有寫,表示此密碼立即失效。密碼失效後,該用戶將不能登錄。
    • 0:與不寫效果相同,即密碼過期後立即失效。
    • -1:表示密碼永遠不會失效。此時會覆蓋第5個欄位有效期的設置效果。
  • 第8個欄位:賬號失效時間,使用的是時間戳格式(天數)。設置了這個時間後會覆蓋前面的所有相關設置,時間到了之後此賬號會立即失效。
    • 時間戳轉換為時間:執行命令如“date -d "1970-01-01 [16076] days"”即可,其中方括弧中的76076天數可自行設置。
    • 時間轉換為時間戳格式:執行命令“echo $(($date --date="2014/01/06" +%s)/86400+1)”即可查看對應的時間戳(1970-01-01到今天的天數)。
  • 第9個欄位:保留欄位(暫時沒有用)。

 

組信息文件/etc/group
這個文件存放的就是用戶的組信息,一行即代表一個組的信息,並使用冒號分隔不同組信息,共有4個欄位:

  • 第1個欄位:組名。
  • 第2個欄位:組密碼標識,一般為x,表示這個組是有密碼的,但是組密碼並不常用,也不推薦設置組密碼。組密碼也存放在一個影子文件中/etc/gshadow。
  • 第3個欄位:GID,即組的ID。
  • 第4個欄位:組中附加用戶。

 

組密碼文件/etc/gshadow
用於存放組密碼的相關信息,一行即代表一個組密碼的信息,並使用冒號分隔不同組密碼信息,共有4個欄位:

  • 第1個欄位:組名。
  • 第2個欄位:組密碼。
  • 第3個欄位:組管理員用戶名。
  • 第4個欄位:組中附加用戶。

 

用戶模板目錄
/etc/skel/:這個目錄下預設是一些隱藏文件,創建用戶時會自動將這個目錄下的所有文件拷貝至對應的用戶家目錄下,當你想在創建用戶時自動生成一些文件在對應的家目錄下,就可以將這些文件放在這個目錄下。

 


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

-Advertisement-
Play Games
更多相關文章
  •  <import name="address" src="../Common/ui/h-ui/advance/c_address"></import> <template> <div class="container"> <address header-text="聯繫作者" header-sty ...
  • 護照資料也下方的兩行成為MRZ碼(或護照機讀碼),每行44個字元(0 9,A Z,<),如下例: 1 2 3 4 5 6 7 8 9 101 2 3 4 5 6 7 8 9 201 2 3 4 5 6 7 8 9 301 2 3 4 5 6 7 8 9 401 2 3 4 P O C H N Z H ...
  • 前幾天要做一個數據導出Excel 我就打算寫一個通用的。 這樣一來用的時候也方便,數據主要是通過Orm取的List。這樣寫一個通用的剛好。 public static void ListToExcel(List<dynamic> ts, string[] RowName, string[] List ...
  • 最近很對朋友、同事問起,vs怎麼自動把css、js合併壓縮,所以這裡簡單說說介紹 插件功能、特征說明: 1、將CSS,JavaScript或HTML文件捆綁到單個輸出文件中 2、保存源文件會自動觸發重新捆綁 3、縮小單個或捆綁的CSS,JavaScript和HTML文件 4、支持globbing模式 ...
  • 測試代碼: 1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.L ...
  • 檢索 COM 類工廠中 CLSID 為 {000209FF-0000-0000-C000-000000000046} 的組件時失敗,原因是出現以下錯誤: 80070005 報錯信息為:檢索 COM 類工廠中 CLSID 為 {000209FF-0000-0000-C000-000000000046} ...
  • 本文將介紹如何在.NET Core3環境下使用MVVM框架Prism基於區域Region的導航系統 在講解Prism導航系統之前,我們先來看看一個例子,我在之前的demo項目創建一個登錄界面: 我們看到這裡是不是一開始想象到使用WPF帶有的導航系統,通過Frame和Page進行頁面跳轉,然後通過導航 ...
  • 深入學習KVM 一、環境準備 | 主機名 | IP | 操作系統 | 記憶體 | 硬碟 | | | | | | | | kvm01 | 10.0.0.11 | centos7 | 4G | 50G | 優化:kvm01在安裝系統的時候,不要使用自動分區,自動分區使用的LVM分區,在使用kvm的時候,特 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...