主頁 >  其他 > Linux 系統基礎 — 用戶和組(吐血總結,超詳細,看這一篇就夠了!dog)

Linux 系統基礎 — 用戶和組(吐血總結,超詳細,看這一篇就夠了!dog)

2021-04-25 13:26:58 其他

Linux 用戶和組

  • Linux中用戶和組的相關檔案
    • /etc/passwd
    • /etc/shadow
    • /etc/group
    • Linux用戶
    • Linux中的組
    • 用戶操作
      • useradd的更多使用方式
      • passwd 命令使用方式
      • userdel 洗掉用戶的用法
      • usermod 修改用戶
    • 關于 useradd 命令后臺執行情況
    • Linux的檔案保護

Linux中用戶和組的相關檔案

最重要的兩個檔案內容

  1. /etc/passwd : 這是 Linux 中儲存用戶資訊的一個檔案,每一行對應一個用戶的賬號記錄;
  2. /etc/shadow : 這是 Linux 中用來儲存用戶名和密碼的一個檔案,檔案一行內容對應一個用戶名和一個密碼;
  3. /etc/group : 這是 Linux 中用來儲存用戶和組關系的一個檔案,
    我們來一個一個對它們的內容進行決議

/etc/passwd

我們首先查看 /etc/passwd 的檔案內容:

cat /etc/passwd

在這里插入圖片描述
唔 檔案內容太長了,我們單獨挑出一行內容來對其核心部分進行解釋

root:x:0:0:root:/root:/bin/bash
# 選中檔案內容的第一行,root用戶的相關資訊
# 以冒號為分隔符,將它分為 7 個部分
root	x	0	0	root	/root	/bin/bash
1		2	3	4	5		6		7
欄位含義
1用戶名
2密碼
3用戶賬號的UID
4所屬主要組的GID
5用戶描述資訊
6家目錄
7登陸 shell 資訊

這里對密碼段的內容進行解釋,現在 Linux 的密碼不再存放在 passwd 檔案里了,現在的密碼已經放到 /etc/shadow 檔案中了,只是用 x 充當一個占位符,

/etc/shadow

cat /etc/shadow

(這里不再過多展示圖片了,直接截取第一行 root 用戶的相關資訊進行展示)

root:$6$jclnGz.Ft4JORmf5$s9CmchcHqxDhVQPx7UGxq2icymWkO.Y8Kpxd5MXj330.JAAWKvg82YS074spsqWWU5EGjLQ08e.kgcGqJ6rcP1::0:99999:7:::
 - 還是按照慣例將冒號作為分割符
root:	1
$6$jclnGz.Ft4JORmf5$s9CmchcHqxDhVQPx7UGxq2icymWkO.Y8Kpxd5MXj330.JAAWKvg82YS074spsqWWU5EGjLQ08e.kgcGqJ6rcP1: 2	
:		3	
0: 		4
99999:	5
7:		6
::		7

欄位含義
1用戶名
2加密的密碼字串資訊
3上次修改密碼的時間
4密碼最短有效天數,默認為0
5密碼最長有效天數,默認為99999
6提前多少天警告用戶口令將要過期,默認為7
7在密碼過期多少天后就禁用該用戶

這里也簡單提一下第二個密碼欄位:如果是 */!! 的話就代表沒有設定密碼不能登陸,

練習題:統計哪些沒有設定密碼的用戶,輸出用戶名和數量
awk可以解決,如果不會可以了解一下
cat /etc/shadow |awk -F: 'BEGIN{i=0} $2 ~ /!!|*/ {i++;print $1"沒有設定密碼"}END{print "一共有"i"個用戶沒有設定密碼"}'

/etc/group

cat /etc/group

 - 選取root的group資訊
root:x:0: ==> 組名:密碼占位符:gid:

Linux用戶

Linux中的用戶是什么樣的呢?
兩個比較簡單的命令: 1 - useradd 可以新建用戶;2 - id 可以查看用戶的id號:

useradd ameame

id ameame

我們可以看一下運行得到的結果:
在這里插入圖片描述

useradd ameame
id ameame
uid=1005(ameame) gid=1005(ameame)=1005(ameame)

這里我們看到 id 命令輸出的結果有 3 個: uid、gid、組:

名稱作用
uiduser id 相當于 Linux 中用戶的身份證號
gidgroup id ,group 是 Linux 中的組,相當于組的身份證號
一個賬戶可以屬于多個組,組里面存放用戶存在的組名集合

Linux 中的用戶分為:

  1. 超級用戶 - root uid 為 0;
  2. 程式用戶 - uid 為 1 - 999 ( 準確點應該是 201 -999 ) ;
  3. 普通用戶 - uid 大于等于 1000,默認從1000開始,60000截止,但是這里的截至并不是 uid 大于 60000 就會出錯,而是程式默認創建最大到 60000,可以通過 useradd -u 指定用戶 uid ,

Linux中的組

Linux 中組分為:

  1. 主要組/基本組
  2. 次要組/附屬組

一個組會有一個組對應的 gid ,一個用戶都有一個主要組,但是可以有多個附屬組,所以 id username 得到的 gid 是用戶主要組的 gid ,得到的組是用戶所在是所有組名及其 gid 組成的一個集合,

用戶操作

useradd的更多使用方式

命令選項作用
-e指定賬號的失效時間
-u指定 UID
-s指定 shell 地址
-g指定主要組名
-G指定用戶的次要組名
-c指定用戶描述資訊
-d指定用戶家目錄
-M不為該用戶創建家目錄
-r新建系統用戶,不會新建家目錄,就是程式用戶

我們直接使用看看效果

useradd -u 318038 -s /bin/bash -c psglgd=maybe psglgd_maybe
cat /etc/passwd | grep maybe
 - 得到結果
psglgd_maybe:x:318038:1006:psglgd=maybe:/home/psglgd_maybe:/bin/bash

我們可以看到我們新建的用戶 psglgd_maybe 的 uid 是我們設定的318038,shell 地址為 /bin/bash,描述資訊為psglgd=maybe,其他的方法也可以采用類似的方法進行定義,這時我們來研究一下 -g-G
-g : 指的是給用戶設定主要組
-G :指的是給用戶設定次要組

 - 首先新建組
groupadd dota2 -g 1314
# 新建組 - dota2 ,并設定 gid 為1214
useradd -g dota2 Ameame
cat /etc/passwd | grep Ameame
# Ameame:x:1006:1314::/home/Ameame:/bin/bash
id Ameame
# uid=1006(Ameame) gid=1314(dota2) 組=1314(dota2)
 - 我們可以看到結果:
 - 新建的用戶 Ameame 的主要組 id 為 1314 -- dota2 這個組
groupadd LGD -g 5000
# 新建組 - LGD ,并設定 gid 為5000 (w)
useradd -g dota2 -G LGD ameame
cat /etc/passwd | grep ameame
# ameame:x:1007:1314::/home/ameame:/bin/bash
id ame
# uid=1007(ameame) gid=1314(dota2) 組=1314(dota2),5000(LGD)
 - 我們可以看到結果
 - 新建的用戶 ameame 的主要組 id 為1314 -- dota2 這個組
 - 所存在組的集合為:1314 ,5000 兩個組,是 dota2 和 LGD 兩個組的集合
 - dota2 是用戶存在的主要組 LGD 是次要組

passwd 命令使用方式

passwd 是 Linux 中幫用戶設定密碼的命令,新建了用戶之后可以使用passwd 命令對用戶進行密碼設定,密碼設定完成后該用戶就是可以遠程登陸的用戶了,

補充提問:什么用戶是可登陸的用戶?
1 - 用戶是否設定密碼,設定了密碼是登陸的條件;
2 - shell是否為正常的 shell,例外shell是不能登陸的,


什么是正常的 shell?
/bin/bash 和 /bin/sh 是正常的shell;
/sbin/nologin 是例外 shell,nologin 是不能登陸的,

格式: passwd [選項] 用戶名

選項作用
-d清空用戶的密碼
-l鎖定用戶密碼
-u解鎖用戶密碼
-S查看用戶賬號的狀態

首先我們來看看 passwd 是如何來設定密碼的:

passwd ameame
 - 顯示輸出:
更改用戶 ameame 的密碼 ,
新的 密碼:

這里有一個很有意思的現象:當我們輸入回文密碼的時候(12321 這種就被稱為回文明密碼),它會有一個報錯

更改用戶 ameame 的密碼 ,
新的 密碼:
無效的密碼: 密碼是一個回文
重新輸入新的 密碼:

這邊將用戶 ameame 的密碼設定成 123456,就可以用這個新創建的賬號密碼從遠程登陸我們的 Linux 系統了!

現在我們先看一下 ameame 這個賬號 設定密碼后 shadow 檔案格式,然后分別使用 passwd -l 和 -u 對比一下區別:

cat /etc/shadow | gerp ameame
ameame:$6$n2530n56Adz4QJhc$G2std.13kPpT3IoeIYg4.OGgv32JQ75rmW2R23B.O/4yLx1hNnu/J1LxuF.kMH7ZmgOXu3yLx6aQKaLs5UPCS/:18741:0:99999:7:::
passwd -l ameame
鎖定用戶 ameame 的密碼 ,
passwd: 操作成功
cat /etc/shadow | gerp ameame
ameame:!!$6$n2530n56Adz4QJhc$G2std.13kPpT3IoeIYg4.OGgv32JQ75rmW2R23B.O/4yLx1hNnu/J1LxuF.kMH7ZmgOXu3yLx6aQKaLs5UPCS/:18741:0:99999:7:::
 1. 這里我們看到,密碼前面被設定了!!
 2. !! 的密碼就是無效密碼
passwd -u ameame
解鎖用戶 ameame 的密碼,
passwd: 操作成功
cat /etc/shadow | gerp ameame
ameame:$6$n2530n56Adz4QJhc$G2std.13kPpT3IoeIYg4.OGgv32JQ75rmW2R23B.O/4yLx1hNnu/J1LxuF.kMH7ZmgOXu3yLx6aQKaLs5UPCS/:18741:0:99999:7:::
 3. 解鎖后!!消失了 密碼是可以使用的有效密碼

另外,補充一個設定密碼常用方式:

echo "123456" | passwd username --stdin
 - stdin的意思是標準化輸入
 - 代表收錄前面 echo 的值 123456 認為是從鍵盤輸入的,然后進行密碼的設定
 - 因為設定密碼的時候默認收取的是鍵盤資料,因此使用該命令設定密碼的時候需要加一條這個陳述句

userdel 洗掉用戶的用法

使用: userdel [-r] username
-r --remove
意思是洗掉用戶,并洗掉創建的家目錄和用戶郵箱,洗掉用戶的時候使用 -r 方法能將用戶的所有資料洗掉干凈,

usermod 修改用戶

全稱: user modifies
使用方式: usermod [選項] username

命令選項作用
-e指定賬號的失效時間
-u指定 UID
-s指定 shell 地址
-g指定主要組名
-G指定用戶的次要組名
-c指定用戶描述資訊
-u解鎖用戶密碼
-l鎖定用戶密碼
 - 這里只補充一點, usermod -l username 和 passwd -l username 的區別
 - 下面看例子
usermod -l ameame
cat /etc/shadow|grep ameame
ameame:!$6$n2530n56Adz4QJhc$G2std.13kPpT3IoeIYg4.OGgv32JQ75rmW2R23B.O/4yLx1hNnu/J1LxuF.kMH7ZmgOXu3yLx6aQKaLs5UPCS/:18741:0:99999:7:::

區別就是 usermod -l 鎖定用戶密碼的時候,只會在加密密碼前面加上一個 ! 讓這個密碼變成無效密碼,

關于 useradd 命令后臺執行情況

  1. 修改檔案 - /etc/passwd;
  2. 修改檔案 - /etc/shadow;
  3. 修改檔案 - /etc/group;
  4. 創建家目錄 - /home/username;
  5. 復制 /etc/skel/* 到新建用戶的家目錄下;
  6. 在/var/spool/mail 檔案新建用戶郵箱,

/etc/skel/* 檔案夾下,復制的內容都有哪些?

  • .bash_profile : 用戶每次登陸的時候就會執行的腳本檔案;
  • .bash_logout :用戶每次退出的時候就會執行的腳本檔案;
  • .bashrc : 每次進入新的bash環境下執行的腳本檔案,就是每次使用bash命令的時候就會加載這個組態檔;
  • .bashhistory : 記錄了上次注銷前使用的最多1000條命令,

Linux的檔案保護

因為 passwd 、shadow 這些檔案都十分重要,因此不要輕易的對這些檔案進行操作,Linux 為了方便系統恢復,設定了備份檔案:

ls /etc/passwd*
# 輸出 /etc/passwd  /etc/passwd-
ls /etc/shadow*
# 輸出 /etc/shadow  /etc/shadow-
ls /etc/group*
# 輸出 /etc/group  /etc/group-

帶 - 號的就是備份檔案,我們來探究一下備份檔案和原檔案之間的差異:

diff /etc/passwd /etc/passwd-
# 判斷兩個檔案是否有差異
 - 輸出內容
29a30
> ameame:x:1007:1314::/home/ameame:/bin/bash
# 這似乎是我們新建的一個用戶,我們再新建一個用戶看看兩個之間有什么變化
useradd chalify
diff /etc/passwd /etc/passwd-
 - 輸出內容
30d29
< chalify:x:1007:1007::/home/chalify:/bin/bash
# 嗷? 沒有了ameame 但是新建的用戶 chalify 出現了

以此,得到結論:
在有對用戶進行改動時,備份檔案和原檔案存在差異,備份檔案每次都會比原檔案少一次操作,會落后一步操作命令,

至此,關于 Linux 的用戶和組的內容結束了,這里面涉及了很多常用的檔案命令以及方法,喜歡別忘了點個贊點個關注!

如果想學更多,歡迎來訪 三創 一起交流學習.

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/279916.html

標籤:其他

上一篇:Redis安裝教程(Windows+Linux)

下一篇:虛擬機下Ubuntu和Window下的檔案互傳和本地共享

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more