Linux—賬戶和權限管理(管理用戶賬戶和組賬號,設置目錄和文件的權限及歸屬)

前言

  • Linux作爲一個多任務,多用戶的服務器操作系統,Linux提供了嚴格的權限管理機制,主要從用戶身份,文件權限兩方面對資源訪問進行控制。

一:用戶賬戶和組賬戶概述

  • Linux系統中的用戶賬號和組賬號的作用在本質上和Windows是一樣的,都是基於用戶身份來控制對資源的訪問。但是在個別細節和表現形式方面還是有些許差異的。

1.1:用戶賬戶概述

Linux系統中,根據系統管理的需要,將用戶賬號分爲不同的類型,其擁有的權限,擔任的角色也各不相同。

用戶賬戶 功能
超級用戶 root用戶是Linux系統中默認的超級用戶賬號,對本級擁有最高的權限,類似於Windows系統中的administrator用戶。
普通用戶 普通用戶賬號需要有root用戶或其他管理員用戶創建,擁有的權限受到一定限制,一般只在用戶自己的宿主目錄中擁有完整權限。
程序用戶 在安裝Linux系統及部分應用程序時,會添加一些特定的低權限用戶賬號,這些用戶一般不允許登錄到系統,而僅用於維持系統或某個程序的正常運行。例如:bin,daemon,ftp,mail等。
匿名用戶 Windows中的匿名用戶時guest,Linux系統中匿名用戶是nobody。

1.2:組賬戶概述

對於用戶賬號來說,對應的組賬號可以分爲基本組(私有組)和附加組(公共組)兩種。每一個用戶賬號可以是多個組賬號的成員,但是其基本組賬號只有一個。在”/etc/passwd“文件中第四個字段記錄的即爲該用戶的基本組GID號。而對於該用戶還屬於那些附加組,需要在對應組賬號文件中才被體現。

賬戶 描述
私有組(基本組) 隨着用戶的建立而建立,與用戶同名
共有組(附加組) 直接創建空組,可以自由添加已有用戶。給組設置權限後,該組中的所有用戶都具備此權限。

1.3:UID號和GID號

Linux系統中的每一個用戶賬號和組賬號都有一個數字形式的身份標記,稱爲UID(User IDentity,用戶標識號)和GID(Group IDentify,組標識號)。對於系統核心來說,UID是作爲區分用戶的基本依據,原則上每個用戶的UID號應該是唯一的。

用戶 UID號
root用戶 固定值UID=0
程序用戶 UID 1—999
普通用戶 UID 1000—6萬

1.4:用戶賬戶文件

  • Linux系統中的用戶賬號,密碼等信息均保存在相對應的 配置文件中,直接修改這些文件或者使用用戶管理命令都可以對用戶賬號進行管理。

  • 與用戶賬號相關的配置文件主要有兩個,分別是/etc/passwd, /etc/shadow、前者用於保存用戶名稱,宿主目錄,登錄Shell等基本信息,後者用於保存用戶的密碼,賬號有效期等信息。

  • 在這兩個配置文件中,每一行對應一個用戶賬號,不同的配置項之間使用冒號“:”進行分隔。

1.4.1:用戶賬戶文件/etc/passwd

  • 系統中所有用戶的賬號信息都保存在“/etc/passwd”文件中,該文件是文本文件,任何用戶都可以讀取文件中的內容。

  • 系統中新增加的用戶賬號信息會保存到passwd文件的末尾。

  • 基於系統運行和管理的需要,所有用戶都可以訪問passwd文件中的內容,但是隻有root用戶才能進行更改。在早期的UNIX操作系統中,用戶賬號的密碼信息也是保存在passwd文件中的,但是可以被不法用戶暴力破解,因此後來將信息轉存入專門的shadow文件中,而passwd文件中僅保留密碼佔位符“x”。

    例如:查看passwd文件頭兩行內容(每一行對應一個用戶的賬號記錄)
    [root@localhost ~]# head -2 /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin	
    
  • passwd文件的每一行內容中,包含了七個用冒號“:”分隔的配置字段,我們需要了解其含義。
    在這裏插入圖片描述

字段 解釋
用戶賬號 用戶賬號的名稱,也是登錄系統時使用的識別名稱
密碼佔位符 表示自己有密碼
用戶賬號ID(UID) 用戶賬號的UID號
組賬號ID(GID) 所屬基本組賬號的GID號
用戶說明 用戶全名,可以填寫與用戶相關的說明信息
宿主目錄(家目錄) 該用戶登錄後所在的默認工作目錄
登錄Shell 登錄shell等信息,用戶完成登錄後使用的shell

1.4.2:用戶賬戶文件/etc/shadow

  • shadow文件又被稱爲“影子文件”,其中保存有各種用戶賬號的密碼信息,因此對shadow文件的訪問應該進行嚴格限制。默認只有root用戶能夠讀取文件中的內容,而不允許直接編輯改文件中的內容。
查看頭兩行shadow文件內容
[root@localhost ~]# head -2 /etc/shadow
root:$6$mH8hzgaq7mY/pNmy$L.P3c2kw1EYGn7upTEcckuVE88wOb4XdGqf0qxMq3cml.W0ewoF0m6fGmXnGWn3jCkPRNGEo6xXCcPjtKmKSo0::0:99999:7:::
bin:*:17110:0:99999:7:::
  • shadow文件的每一行內容中,包含了九個用冒號“:”分隔的配置字段,我們需要了解其含義。
    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-UCKZbbFB-1592386630438)(C:\Users\kevin\AppData\Roaming\Typora\typora-user-images\image-20200613100339974.png)]
字段 解釋
第一字段(root) 用戶賬號名稱
第二字段(紅色字體部分) 使用MD5加密的密碼字串信息,當爲“*”或者“!!”時表示此用戶不能登錄到信息,若該字段內容爲空,則該用戶無需密碼即可正常登陸系統
第三字段(14374) 上次修改密碼的時間,表示從1970年1月1日起到最近一次修改密碼時間隔的天數
第四字段(0) 密碼的最短有效天數。自本次修改密碼後,必須至少經過該天數才能再次修改密碼,默認值爲0,表示不進行限制
第五字段(99999) 密碼的最長有效天數,自本次修改後,經過該天數以後必須再次修改密碼。默認值爲99999,表示不進行限制
第六字段(7) 提前多少天警告用戶口令將過期,默認值爲7
第七字段 在密碼過期後多少天內禁用此用戶
第八字段 賬號失效時間,此字段制定了用戶作廢的天數(從1970年1月1日算起),默認值爲空,表示賬號永久可用
第九字段 保留字段,目前沒有特定用途

1.5:組賬號文件

1.5.1:/etc/group和/etc/shadow

  • 組賬號文件也有兩個,分別是/etc/group, /etc/gshadow。與用戶賬號文件非常類似。前者用於保存組賬號名稱,GID號,組成員等基本信息,後者用於保存組賬號的加密密碼字符串等信息(但是很少使用到)。

  • 某一個組賬號包含哪些用戶成員,將會在group文件內最後一個字段中體現出來(基本組對應的用戶賬號默認可能不會列出),多個組成員之間使用逗號“,”分隔。

  • 例如:查看root組包括哪些用戶成員,哪些組中包含root用戶

檢索root組包括哪些用戶
[root@localhost ~]# grep "^root" /etc/group
root:x:0:

檢索哪些組包括root用戶
[root@localhost ~]# grep "root" /etc/group
root:x:0:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-5OZYAOap-1592386630440)(C:\Users\kevin\AppData\Roaming\Typora\typora-user-images\image-20200613101034019.png)]

二:用戶賬戶和組賬戶管理

2.1:用戶賬戶管理

  • 切換用戶:su 用戶,保持路徑不變
  • su - 用戶,切換到當前用戶的家目錄
  • grep “bash$” /etc/passwd 查看當前可用用戶
  • 用戶被鎖定後,可以從高權限用戶切換到普通用戶,但是不可以用普通用戶登錄

2.1.1:useradd命令—添加用戶賬戶

基本命令格式如下
useradd [選項] 用戶名
常用選項有:
-u      指定用戶的UID號,要求UID號碼未被其他用戶使用		
-d		指定用戶的宿主目錄位置(當與 -M 一起使用時,不生效)
-e		指定用戶的賬戶失效時間,可以使用YYYY-MM-DD的日期格式	
-g		指示基本組
-G		指示附加組
-M		不建立宿主目錄,即使/etc/login.defs系統配置中已設置要建立宿主目錄
-s		指定用戶的登錄shell
  • 例如:創建一個名爲66的FTP賬號(禁止終端登錄),該賬號將於2020.12.31失效。
[root@localhost ~]# useradd -e 2020-12-31 -s /sbin/nologin 66
/sbin/nologin後用戶無法直接登錄和被切換登錄

2.1.2:passwd命令—設置/更改用戶密碼

創建一個用戶,並設置密碼且只輸入一次,此功能在腳本中常用
useradd test1
echo “密碼” | passwd --stdin test1		'免交互方式創建密碼(stdin:輸入)'
  • 通過useradd創建一個賬戶後還需要設置密碼才能夠正常使用,使用passwd命令可以設置或修改密碼。
  • passwd命令除了可以修改賬號的密碼外,還能歐股對用戶賬號進行鎖定,解鎖,也可以將用戶的密碼設置爲空(無需密碼即可登錄)。
使用命令基本格式
passwd [選項] 用戶名

常用選項
-d			清空指定用戶的密碼,僅使用用戶名即可登錄系統
-l			鎖定用戶賬戶
-S(大S)    查看用戶賬戶是否被鎖定
-u			解鎖用戶賬戶
  • 通過passwd命令鎖定的用戶賬號,將無法再登錄系統(shadow文件中的對應密碼子串前將添加“!!”字符),只能由管理員來解除鎖定。(還可以從root用戶切換登錄)

  • root用戶有權限管理其他賬號的密碼(指定賬號名稱作爲參數即可),不指定用戶名時,修改當前賬號的密碼。普通用戶只能執行單獨的“passwd”命令修改自己的密碼。

例如:執行“passwd 66“命令可以爲66賬號設置登錄密碼
[root@localhost ~]# passwd 66
  • 對於普通用戶自行設置的密碼,要求具有一定的複雜性(如不要直接使用英文單詞,長度保持在六位以上)否則系統可能拒絕進行設置。普通用戶設置自身的登錄密碼時,需要先輸入舊的密碼進行驗證。
例如,普通用戶設置自身的密碼
[66@55~]$passwd

2.1.3:usermod命令—修改用戶賬戶的屬性

  • 對於系統中已經存在的用戶賬號,可以使用usermod命令重新設置各種屬性。usermod命令同樣需要指定賬號名稱作爲參數。
命令使用基本格式
usermod [選項] 用戶名
常用選項
-l		更改用戶賬號的登錄名稱(Login Name)
-L		鎖定用戶賬戶	
-U		解鎖用戶賬戶
-u		修改用戶的UID號
-d		修改用戶的宿主目錄位置
-e		修改用戶的賬戶失效時間,可以使用YYYY-MM-DD的日期格式
-s		指定用戶的登錄shell	
  • 我們發現,usermod命令大部分和useradd命令的選項時相對應的,作用也相似。
  • PS:usermod兩個選項“-L”’-U’分別用於鎖定,解鎖用戶賬戶
  • passwd兩個選項’-l’ '-u’也分別用於鎖定,解鎖用戶賬戶 兩者存在大小寫區別

2.2:組賬戶管理

2.2.1:groupadd命令 --添加組賬號

  • 需要指定GID號時,可以使用’-g’選項。
命令執行基本格式
groupadd [-g GID] 組賬號名
[root@33 ~]# groupadd -g 1000 market

2.2.2:gpasswd命令–添加刪除組成員

  • 設置組賬號密碼(極少用),添加/刪除組成員
命令使用基本格式
gpasswd [選項] 組賬號名

常用選項
-a		向組內添加一個用戶
-d		從組中刪除一個用戶成員
-M		定義組成員列表,以逗號分隔
例如:向root組內添加一個mike用戶
[root@33 ~]# gpasswd -a mike root
例如:從root組內刪除一個mike用戶
[root@33 ~]# gpasswd -d mike root
例如:添加多個用戶
[root@33 ~]# gpasswd -M a,b,c,d
一定注意:如果用了-M,就是對組列表的覆蓋。
-M需要首次使用,後面不能再次使用。
首次使用了-M後,再次添加用戶需要使用-a

2.2.3:groupdel命令–刪除組賬號

使用命令基本格式
groupdel 組賬號名
例如
[root@33 ~]# groupdel  market

2.2.4:查詢賬號信息

  • 在用戶管理工作中,雖然直接查看用戶賬號,組賬號的配置文件也可以查詢相關信息,但不是很樂觀。在Linux系統中,還可以使用幾個常用的命令查詢工具。
  • id命令:查詢用戶賬號的身份標識
  • 使用id命令可以快速查看指定用戶賬號的UID,GID等表示信息。
id命令基本格式
id [用戶名]      查詢用戶身份標識
  • finger命令:查詢用戶賬戶的登陸屬性
finger teacher      可以顯示出teacher賬戶的詳細信息
  • groups命令:查詢用戶賬號所屬的組
  • groups命令可以查看指定的用戶賬號屬於哪些組
groups命令使用格式
groups [用戶名] 		查詢用戶所屬的組
  • w命令:查詢一登錄到主機的用戶信息
  • 使用w命令可以查詢當前主機中用戶登錄的情況,列出登錄賬號名稱,所在終端,登錄時間,來源地點等信息。
[root@33 ~]# w
 12:16:47 up  2:27,  1 user,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.197.1    09:51    7.00s  0.10s  0.02s w
~]#lastb 		查看最近登錄的歷史記錄

三:查看文件/目錄的權限和歸屬

3.1:訪問權限和歸屬(所有權)

3.1.1:訪問權限

類型 解釋
讀取r 允許查看文件內容,顯示目錄列表
寫入w 允許修改文件內容,允許在目錄中新建,移動,刪除文件或子目錄
可執行x 允許運行程序,切換目錄

3.1.2:歸屬(所有權)

類型 解釋
屬主 擁有該文件或目錄的用戶賬號
屬組 擁有該文件或目錄的組賬號

3.2:查看文件/目錄的權限和歸屬

在這裏插入圖片描述

  • 理解權限字段-rw-r–r–的含義
字符 解釋
第一個字符“-” 表示文件類型。可以是d(目錄),b(塊設備文件),c(字符設備文件),“-”普通文件,字母“l”(鏈接文件)等
第2-4個字符“rw-” 表示該文件的屬主用戶(User)對該文件的訪問權限。
第5-7個字符“r–” 表示該文件的屬組內每個成員用戶(Group)對該文件的訪問權限
第8–10個字符“r–” 表示其他任何用戶(Other)對該文件的訪問權限
  • 其他字段含義
字段 解釋
1 子文件數量
root 屬主
root 屬組
34298 大小,單位:字節
04-02 00:23 創建時間

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-U6z8I4zp-1592386630443)(C:\Users\kevin\AppData\Roaming\Typora\typora-user-images\image-20200613102159552.png)]

  • 我們可以使用-rwxrwxrwx來表示權限也可以用777來表示權限。
  • rwx採用累加數字形式表示成 7 , r-x 表示成 5 , rwxr-xr-x 表示成755,rw-r–r–表示成644
  • 數字固定不會變,一個普通的數據文件沒有執行權限。

3.3:設置文件/目錄的權限和歸屬

3.3.1:chmod命令–設置文件和目錄權限

chmod命令使用基本格式
chmod [ugoa] [+-=] [rwx] 文件或目錄	  (不常用)	(u,g,o,a分別表示屬主,屬組,其他用戶,所有用戶)(+-=分別表示增加,去除,設置權限)
或
chmod nnn 文件或目錄	  (最常用)	(nnn表示三位八進制數字,如剛剛提到的 777,755,644等)

常用選項
-R		遞歸修改指定目錄下所有子項的權限

3.3.2:chown命令–設置文件和目錄的歸屬

chown命令使用基本格式
chown 屬主 文件或目錄
chown:屬組 文件或目錄
chown 屬主:屬組 文件或目錄
常用選項
-R		遞歸修改指定目錄下所有文件,子目錄的歸屬

3.3.3:chattr、lsattr命令—文件屬性和文件系統屬性的關係

+:在原有參數的基礎上,追加參數。

-:在原有參數基礎上,移除參數

=:更新爲指定參數

a:設置只能向文件中添加數據,而不能刪除

i:設置後,不能對文件進行刪除、寫入、改名等操作

使用lsattr命令可顯示文件的底層屬性,其中配合該命令查看文件的屬性常用的選項有:

-a:顯示所有文件屬性

-d:僅顯示目錄屬性

-R:遞歸顯示

3.3.4:權限掩碼 umask

umask作用
控制新建的文件或目錄的權限
默認權限去除umask的權限就爲新建的文件或者目錄的權限
umask設置命令格式
umask 000(000指數字)

umask查看
umask

umask的分數指的是“該默認值需要減掉的權限,”因此,如果執行“umask 022”,代表group和other被拿掉了權限“2”,也就是被拿掉了寫的權限。

如果執行命令“umask 000”,代表文件的默認權限是“777”

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章