六、用戶組和許可權管理

来源:https://www.cnblogs.com/Ju-zhi/archive/2023/11/29/17866013.html
-Advertisement-
Play Games

1、系統用戶管理 用戶的分類(用戶的ID): UID:用戶的身份標識符,每個用戶都會被分配一個獨特的ID 系統用戶(服務用戶):0 ~ 999 之間 普通用戶:1000 ~ 6000之間 用戶名和UID信息通常存儲在/etc/passwd文件中 用戶的存在是為了能更好的控制系統許可權 1 root:x ...


1、系統用戶管理

用戶的分類(用戶的ID):

UID:用戶的身份標識符,每個用戶都會被分配一個獨特的ID

  • 系統用戶(服務用戶):0 ~ 999 之間

  • 普通用戶:1000 ~ 6000之間

  • 用戶名和UID信息通常存儲在/etc/passwd文件中

  • 用戶的存在是為了能更好的控制系統許可權

 1 root:x:0:0:root:/root:/bin/bash
 2 root:用戶名
 3 x:密碼占位符 # 表示用戶登錄時是否需要驗證密碼
 4 0:用戶UID #身份標識符
 5 0:用戶GID #用戶私有組
 6 root:用戶描述信息 #描述這個用戶是乾什麼的(防止用戶名被泄露)
 7 /root:用戶家目錄 #用戶登錄之後在那個目錄下
 8 /bin/bash:登錄shell信息 #用戶登錄系統之後運行的第一個程式
 9                     /bin/bash 運行bash shell 表示可以登錄系統
10                     /sbin/nologin  禁止登錄shell 表示不能登錄系統
2、系統用戶組管理

用戶組:在創建用戶時,如果沒有指定用戶的組,則自動創建一個以用戶名命名的組並將這個用戶加入到該組

  • 私有組(屬組):在用戶創建時,一併指定的則,稱之為私有組

  • 公共組(附加組):每個用戶都可以有多個公共組,但是只能有一個私有組

  • 用戶組和ID的映射關係保存在 /etc/group 文件中

  • 同一個組中的所有用戶能共用屬於這個組的文件

 1 [root@example ~]# id user
 2 uid=1000(user) gid=1000(user) groups=1000(user)
 3 
 4 itgroup: zhangsan、lisi、wangwu
 5 sagroup: alice、bob、mike、zhangsan
 6     #zhangsan:itgroup(私有組),sagroup(公共組)
 7 
 8 root:x:0:zhangsan
 9 root:#表示組名
10 x:#組的密碼占位符
11 0:#組的ID
12 zhangsan:#表示組內用戶,在root組內有zhangsan這個用戶,多個用戶用逗號隔開;如果改組是某個用戶的私有組,則該用戶不會出現在該組中
3、useradd創建
  • -u:用戶號,指定用戶的用戶號,如果同時有 -o 選項,則可以重覆使用其它用戶的標識號

  • -g:用戶組,指定用戶所屬的用戶組

  • -c:comment指定一段註釋性描述

  • -d:目錄,指定用戶主目錄,如果此目錄不存在,則同時使用 -m選項,可以創建主目錄

  • -G:用戶組,用戶組指定用戶所屬的附加組

  • -s:shell文件,指定用戶的登錄shell

 1 root@example ~]# useradd -u 3000 ituser
 2 [root@example ~]# id ituser 
 3 uid=3000(ituser) gid=3000(ituser) groups=3000(ituser)
 4 
 5 [root@example ~]# useradd -g zhangsan ituser1
 6 [root@example ~]# id ituser1
 7 uid=3001(ituser1) gid=1001(zhangsan) groups=1001(zhangsan)
 8 
 9 [root@example ~]# useradd -c "rhce user" ituser2
10 ituser2:x:3002:3002:rhce user:/home/ituser2:/bin/bash$
11 
12 [root@example ~]# useradd -d /ituser3 ituser3
13 ituser3:x:3003:3003::/ituser3:/bin/bash
14 
15 [root@example ~]# useradd -s /sbin/nologin ituser4
16 ituser4:x:3004:3004::/home/ituser4:/sbin/nologin
17 
18 [root@example ~]# su -s /bin/bash ituser4
19 [ituser4@example root]$ cd
20 [ituser4@example ~]$ pwd
21 /home/ituser4

用戶的UID可以重覆,一個UID可以對應多個用戶名,但是UID是唯一的存在;

Linux中並不以用戶名來決定用戶的許可權,而是依靠UID來決定用戶對文件的許可權;

系統會進行ID保留機制,部分UID已經提前分配給了應用程式,比如:38分配給了KVM,所以將保留的UID分配出去,就會導致新創建的用戶繼承到這個許可權;每次創建用戶都會將 /etc/passwd 中最大的UID加 1 分配給新的用戶;

4、usermod修改

usermod modify 修改

  • -g:指定私有組

  • -u:指定UID

  • -G:指定附加組

  • -c:描述信息

  • -d:家目錄(-m:移動家目錄,與 -d 一起使用)

  • -s:登錄shell

1 [root@example ~]# usermod -u 1003 ituser1
2 [root@example ~]# usermod -g 1000 ituser1
3 [root@example ~]# usermod -G user ituser1
4 [root@example ~]# usermod -c "test user" ituser1
5 [root@example ~]# usermod -d /demo/user1 ituser1
5、其它相關命令
  • userdel 用戶名:刪除一個用戶,僅僅只是從系統中將用戶刪除

  • userdel -r 用戶名:乾凈刪除用戶,除了將用戶本身刪除外,還會連同用戶的文件(用戶郵箱和用戶家目錄)一併刪除

1 # 解決辦法
2 [root@example ~]# rm -rf /var/spool/用戶名
3 
4 [root@example ~]# rm -rf /home/用戶名
  • groupadd:創建新的組

    • -g:指定gid

    • gpasswd:設置組密碼

    • newgrp:登錄到指定組,並且登錄之後該組將成為用戶的私有組(臨時授權

  • groupmod:修改組的信息

    • -n:指定新的組名

  • groupmems:管理組內成員

    • -g:指定組

    • -a:添加用戶

    • -d:刪除用戶

    • -l:列出組內用戶

    • -p:清空用戶

1 [root@example ~]# groupmems -a ituser -g itgroup
2 [root@example ~]# groupmems -l -g itgroup 
3 ituser 
4 [root@example ~]# groupmems -d ituser -g itgroup
6、用戶的密碼信息

/etc/shadow:保存用戶的密碼信息(加密)

/etc/gshadow:保存組的密碼信息

 1 root:$6$HSqKs:19678:0:99999:7:::
 2 第一列: #用戶名
 3 第二列:#用戶密碼(密文) 
 4     PS:!!表示該用戶沒有設置密碼
 5         * 表示用戶從來沒有設置密碼
 6         預設是hash512演算法
 7 第三列:上一次修改密碼的時間
 8 第四列:密碼最短有效期
 9 第五列:密碼最長有效期
10 第六列:警告天數
11 第七列:密碼鎖定天數
12 第八列:密碼過期時間(刪除密碼時間),是一個日期
13 第九列:保留欄位
14 
15 #加密類型(演算法)安全套件:openssl
16 [root@example ~]# openssl passwd -5 redhat
17 $5$HY9wotlwulgPch2g$IbRLwroQqoZ0q45zLqybs7hdR3IHdg2F7/ItLeOvWeA
18 [root@example ~]# openssl passwd -6 redhat
19 $6$qQzsl2yVJjkxD421$XRmbyb/3lSD6611xPVmgQuDKN5tHNGW7SBuVEwxbw6jXLJlIODFJpwIimswycqF72iXC9PiEJduV1BfAs8mS//
20 [root@example ~]# openssl passwd -1 redhat
21 $1$cNtRJaY6$t4AQopvQ3M0NFr5w4Lp1t/
22 
23 [root@example ~]# chage user
24 Changing the aging information for user
25 Enter the new value, or press ENTER for the default
26     Minimum Password Age [0]: 5 #密碼最短有效期
27     Maximum Password Age [99999]: 77777 #密碼最長有效期
28     Last Password Change (YYYY-MM-DD) [2023-11-25]: #上一次修改密碼時間
29     Password Expiration Warning [7]: 5 # 警告天數
30     Password Inactive [-1]: 5 #鎖定天數
31     Account Expiration Date (YYYY-MM-DD) [-1]: 55555 #失效時間
32     
33 #修改密碼預設規則
34 [root@example ~]# vim /etc/login.defs 
7、Linux文件安全
  1. 文件UID和GID

  • 每一個文件都有一個uid和gid

  • 用戶在運行程式的時候,程式會繼承用戶的UID和GID

  • 決定於哪個用戶可以訪問相應的文件

  • 當程式在訪問文件時,會得到三類訪問許可權

    • 程式的UID和文件的UID一致,則是以文件擁有人的身份訪問文件

    • 程式的GID和文件的GID一致,則是以文件擁有組的身份訪問文件

    • 程式的UID、GID和文件的UID、GID均不一致,則是以文件其他人身份訪問文件

  1. 文件許可權優先順序

  • 如果UID一致,UID匹配文件成功;文件擁有人的身份訪問文件(user)

  • 如果UID不一致,GID一致,GID匹配文件成功;文件擁有組的身份訪問文件(group)

  • 如果UID、GID均不一致,則匹配文件的其他人身份;文件其他人的身份訪問文件(other)

 1 -rw-r--r--.   1 root root    0 Nov 26 21:48 test.txt
 2 -:表示文件類型(-:普通文件;d:目錄;l:軟鏈接(字元文件);b:塊設備)
 3 rw-:表示擁有人的許可權
 4 r--:表示擁有組的許可權
 5 r--:表示其他人的許可權
 6 .:表示文件受到seLinux的保護(安全機制)
 7 1:表示文件的硬鏈接數(硬鏈接數決定了在系統中文件有幾份)
 8 第一個root:文件的UID(文件的擁有人;文件的所有者)
 9 第二個root:文件的GID(文件的擁有組)
10 0:文件的大小
11 Nov 26 21:48:文件最後一次修改的時間
12 test.txt:文件名
  1. Linux文件系統許可權

  • 查看文件和目錄的許可權

    • ls -l 文件名

    • ls -ld 目錄名

    • chmod u/g/o +/-/= 文件名:修改許可權(u+g+o=all)

    • chomd -R :遞歸賦權

 1 -rw-r--r--. 1 root zhangsan  0 Nov 26 21:44 zhangsan.txt
 2 
 3 許可權分配         文件所屬人      文件所屬組用戶     其它用戶
 4 字元表示         r  w  x         r  w  x        r  w  x 
 5 許可權項         讀  寫  執行     讀  寫  執行     讀  寫  執行
 6 數字表示         4  2  1         4  2  1        4  2  1
 7 -:表示對應欄位沒有許可權
 8 r:表示可以讀取文件內容
 9 w:表示可以修改文件內容
10 x:表示文件可以被執行
11 
12 #文件的擁有人可以強制對文件進行保存
13 #如果是對文件進行操作只需要看文件所在目錄的許可權;如果是對文件的內容進行操作,要看文件本身的許可權
14 
15 #十進位
16 1表示該欄位有許可權        r w x
17 0表示該欄位沒有許可權      1 0 0   4
18                       0 1 0   2
19                       0 0 1   1
20 
21 [root@example tmp]# chmod 751 zhangsan.txt 
22 [root@example tmp]# ls -l zhangsan.txt 
23 -rwxr-x--x. 1 root zhangsan 0 Nov 26 21:44 zhangsan.txt
24 [root@example tmp]# chmod u+r zhangsan.txt 
25 [root@example tmp]# ls -l zhangsan.txt 
26 -r--------. 1 root zhangsan 0 Nov 26 21:44 zhangsan.txt
27 [root@example tmp]# chmod u+w zhangsan.txt 
28 [root@example tmp]# ls -l zhangsan.txt 
29 -rw-------. 1 root zhangsan 0 Nov 26 21:44 zhangsan.txt
30 [root@example tmp]# chmod u+w,g+rw,o+r zhangsan.txt 
31 [root@example tmp]# ls -l zhangsan.txt 
32 -rw-rw-r--. 1 root zhangsan 0 Nov 26 21:44 zhangsan.txt
33 root@example tmp]# chmod +x zhangsan.txt 
34 [root@example tmp]# ls -l zhangsan.txt 
35 -rwxrwxr-x. 1 root zhangsan 0 Nov 26 21:44 zhangsan.txt
8、設置文件屬主和屬組
  • chown :用於設置文件的屬主和屬組(只能root用戶可以使用)

  • chgrp:只能設置文件的屬組

    普通用戶可以賦權嗎?

  • 普通用戶只能修改擁有人自己文件的許可權,不能修改其它人文件的許可權;普通用戶不能修改文件的擁有人/組

 1 [root@example tmp]# chown zhangsan zhangsan/
 2 [root@example tmp]# ls -l
 3 total 0
 4 drwxr-xr-x. 2 zhangsan root 6 Nov 28 21:56 zhangsan
 5 [root@example tmp]# chown root:zhangsan zhangsan/
 6 [root@example tmp]# ls -l
 7 total 0
 8 drwxr-xr-x. 2 root zhangsan 6 Nov 28 21:56 zhangsan
 9 [root@example tmp]# chown :ituser zhangsan/
10 [root@example tmp]# ls -l
11 total 0
12 drwxr-xr-x. 2 root ituser 6 Nov 28 21:56 zhangsan
13 [root@example tmp]# chgrp zhangsan zhangsan/
14 [root@example tmp]# ls -l
15 total 0
16 drwxr-xr-x. 2 root zhangsan 6 Nov 28 21:56 zhangsan

 


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

-Advertisement-
Play Games
更多相關文章
  • 你可以使用 Python 中的列表拼接操作來合併兩個或多個列表。Python 提供了幾種方式來實現列表的拼接,包括使用 + 運算符、extend() 方法和列表解析。 以下是這些方法的示例: 1.使用 + 運算符: list1 = [1, 2, 3] list2 = [4, 5, 6] concat ...
  • Python還提供了許多其他用於數據處理和轉換的內置函數和模塊。以下是一些常用的數據處理函數和模塊: sorted sorted(iterable, key=func, reverse=False) 用於對可迭代對象進行排序。你可以指定一個可選的 key 函數來自定義排序規則,以及一個可選的 rev ...
  • HTTP(Hypertext Transfer Protocol)是一種用於傳輸超文本的協議。它是一種無狀態的、應用層的協議,用於在電腦之間傳輸超文本文檔,通常在 Web 瀏覽器和 Web 伺服器之間進行數據通信。HTTP 是由互聯網工程任務組(IETF)定義的,它是基於客戶端-伺服器模型的協議,... ...
  • 通過實現一個簡易版本的跳錶,可以加深了對Python編程的理解。跳錶是一種跳躍式的數據結構,通過索引層提供快速查找的能力,提高了查找的效率。在實現跳錶的過程中,會更加熟悉了Python的語法和特性,並且可以更加靈活地運用它來解決實際問題。 ...
  • 1、定義 Cron表達式是一種用於定義定時任務的格式化字元串。它被廣泛用於Unix、Linux和類Unix系統中,用於在指定的時間執行預定的任務。Cron表達式由6個欄位組成,每個欄位通過空格分隔開。 在本文中,我們將學習如何理解和編寫Cron表達式。 Cron表達式的格式如下: * * * * * ...
  • 一般在會議、教學或培訓活動中,我們都會選擇PPT文檔來進行內容展示。與PDF文檔相比,PPT文檔具有較強的可編輯性,可以隨時增刪元素,並且還可以設置豐富多樣的動畫效果來吸引觀眾註意。那麼如何通過C#將PDF文檔轉為PPT文檔呢?本文將教大家僅使用3行代碼就實現這一功能。 PDF轉PPT所需工具: S ...
  • 本文簡介 MixCoreCMS是一個基於.NET Core框架的開源內容管理系統(CMS),提供了豐富的的基礎功能和插件,是一款面向未來的企業 Web CMS,可輕鬆構建任何類型的應用程式。集成了Google Analytics分析,以及友好的Seo功能,非常適合用於創建企業網站、內容系統、個人博客 ...
  • 一. C#使用場景介紹 C#是微軟公司發佈的一種由C和C++衍生出來的面向對象的編程語言、運行於.NET Framework和.NET Core(完全開源,跨平臺)之上的高級程式設計語言。 二. 開發流程 1. 創建項目:打開Visual Studio後右側選擇“創建新項目”,然後選擇“C# Win ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...