Linux使用者與許可權

七落安歌發表於2024-03-14

Linux使用者與許可權

使用者、使用者組

概述

  • Linux是多使用者多工作業系統,支援多個使用者在同一時間內登陸,不同使用者執行不同的任務,並且互不影響。

  • 不同使用者具有不同的操作許可權,每個使用者在許可權允許的範圍內完成不同的任務。

  • 許可權最高的使用者叫做root,稱之為超級管理員使用者

  • 使用者組是具有相同特徵使用者的邏輯集合。基於使用者組管理許可權比直接基於使用者管理許可權效率要高。

image-20240310161948575

檔案歸屬:

  • 根據使用者、使用者組管理理論劃分,Linux上的檔案(資料夾)的歸屬可以分為三類:
    • 擁有者(Owner user
    • 擁有者所在組(Group user
    • 其他使用者組(Other users

image-20240310162137193

檔案許可權

概述:

  • 檔案許可權總體上分為三類:
    • read)許可權
    • write)許可權
    • 執行(execute)許可權

image-20240310162353212

檢視:

  • 使用ls -l命令可以顯示出檔案的許可權相關資訊。

  • 第一列的資訊就是跟許可權相關的資訊。

image-20240310162515803

許可權資訊解讀

  • 第1位表示檔案型別: -檔案 d資料夾 l連結;

  • 第2位開始每3位構成一組,總共3組,表示:所屬使用者user、所屬使用者組group、其他使用者組other的許可權詳情。

  • 每組許可權依次為:讀、寫、執行,用字母rwx表示,沒有該類許可權使用-表示。

image-20240310162707998

rwx真實含義:

對於檔案

rwx許可權 檔案的作用
讀許可權(r) 表示可讀取此檔案中的實際內容。例如可以對檔案執行cat、more、less、head、tail等檔案檢視命令。
寫許可權(w) 表示可以編輯、新增或者修改檔案中的內容。例如,可以對檔案執行 vim、echo 等修改檔案資料的命令。
執行許可權(x) 表示該檔案具有被系統執行的許可權。Window系統中檢視一個檔案是否為可執行檔案,是透過副檔名(.exe、.bat 等),但在 Linux 系統中,檔案是否能被執行,是透過看此檔案是否具有 x 許可權來決定的。也就是說,只要檔案擁有 x 許可權,則此檔案就是可執行檔案。但是,檔案到底能否正確執行,還要看檔案中的程式碼是否正確。執行許可權是檔案的最高許可權

對於目錄

rwx 許可權 目錄的作用
讀許可權(r) 表示具有讀取目錄結構列表的許可權,也就是說,可以看到目錄中有哪些檔案和子目錄。一旦對目錄擁有 r 許可權,就可以在此目錄下執行 ls 命令,檢視目錄中的內容。
寫許可權(w) 對於目錄來說,w 許可權是最高許可權。對目錄擁有 w 許可權,表示可以對目錄做以下操作:在此目錄中建立新的檔案或子目錄; •刪除已存在的檔案和目錄(無論子檔案或子目錄的許可權是怎樣的); •對已存在的檔案或目錄做更名操作; •移動此目錄下的檔案和目錄的位置。 一旦對目錄擁有 w 許可權,就可以在目錄下執行 touch、rm、cp、mv 等命令。
執行許可權(x) 目錄是不能直接執行的,對目錄賦予 x 許可權,代表使用者可以進入目錄,也就是說,賦予 x 許可權的使用者或群組可以使用 cd 命令。
  • 檔案能不能刪除,跟檔案本身的許可權無關,跟檔案的父目錄有沒有w許可權有關

小結:

  1. 對於檔案來說,x執行許可權最高;對於資料夾來說,w許可權最高,實際中授權需要謹慎。
  2. 許可權管理對root使用者無約束。主要是針對非root使用者來設定的。
  3. 通常來說相關性越高,許可權越高。正常的話:
    user許可權 > group許可權 > other許可權

使用者組group管理命令

概述:

  • groupadd:用於建立一個新的使用者組,使用者組相關資訊會儲存在/etc/group檔案中。
  • cat /etc/group:檢視當前系統使用者組資訊。
  • groupdel:用於刪除使用者組。
  • chgrp:用於變更檔案或目錄的所屬群組。不同於chown命令,chgrp允許普通使用者改變檔案所屬的組,只要該使用者是該組的一員。
  • chown:用於設定檔案所有者和檔案關聯組的命令,需要超級使用者root的許可權才能執行chown命令
#1、增加一個新的使用者組
groupadd  使用者組
-g GID # 指定新使用者組的組標識號(GID)。

# groupadd group1
此命令向系統中增加了一個新組group1,新組的組標識號是在當前已有的最大組標識號的基礎上加1。
# groupadd -g 101 group2
此命令向系統中增加了一個新組group2,同時指定新組的組標識號是101。

#2、檢視當前系統已有組資訊
cat /etc/group
ange:x:1001:lisi,wangwu
ange #組名
x #密碼口號 一般都沒有密碼
1001 #groupID  gid 組編號
lisi,wangwu #歸屬該組的使用者

#3、刪除組
groupdel 組名

#4、修改檔案歸屬的組
chgrp 組名 檔案/目錄名  針對資料夾加上-R可以實現遞迴修改

使用者user管理命令

概述:

  • useradd:用於建立使用者帳號,帳號建好之後,再用passwd設定帳號的密碼。

  • userdel:用於刪除使用者帳號。

  • cat /etc/passwd:檢視當前系統使用者資訊。

#1、建立使用者
useradd 選項 新建使用者名稱
-g   #指定使用者所屬的群組。值可以是組名也可以是GID
-G   #指定使用者所屬的附加群組。

#2、設定密碼  
[root@node1 linux02]# passwd 使用者名稱
Changing password for user allen.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.  

#3、刪除使用者
userdel -r 使用者名稱
#此命令刪除使用者sam在系統檔案中(主要是/etc/passwd, /etc/shadow, /etc/group等)的記錄,同時刪除使用者的主目錄。

#4、檢視使用者資訊
cat /etc/passwd | grep 使用者名稱

#5、修改檔案所屬的使用者
chown allen 1.txt   #如果是資料夾及其下面的所有要修改 加上-R引數

su使用者切換

概述:

  • su(英文全拼:switch user)命令:用於切換使用者的使用者身份,除root外,切換時需要鍵入該使用者的密碼。
  • su命令適合在知道使用者密碼情況下的快速使用者切換。
  • 缺點是如果切換成root使用者,需要root密碼,容易洩露root密碼。
[allen@node1 ~]$ whoami
allen
[allen@node1 ~]$ pwd
/home/allen
[allen@node1 ~]$ su root
Password:
[root@node1 allen]# whoami
root
[root@node1 allen]# su allen
[allen@node1 ~]$ whoami 
allen

sudo許可權

概述:

  • 背景:普通使用者需要root許可權操作,但是又不能告知其root密碼。可以透過sudo配置讓普通使用者具備某些root許可權操作,同時又不會洩露root密碼

  • sudo許可權的控制是透過對/etc/sudoers檔案編輯實現的。

  • 注意:不要輕易給別人配置sudo許可權。

sudo許可權配置使用

step1:root使用者配置sudo

  • 只有root使用者才可以為其他非root使用者配置sudo許可權。

  • 命令:visudo

  • 開啟/etc/sudoers檔案之後可以使用100↓快速定位到編輯區域。

image-20240311003904680

step2:普通使用者申請sudo許可權

  • 普通使用者執行命令之前需要新增sudo關鍵字,表示申請sudo許可權執行;

  • 到底是否具有sudo許可權以及具備哪些許可權,取決於/etc/sudoers中的配置

  • 如果檢測發現具有sudo許可權,會首先讓使用者輸入自己的密碼進行驗證,驗證成功之後執行,並獲取一個為時5分鐘的簽證,在此期間執行sudo不需要再輸入自己的密碼;

[allen@node1 ~]$ whoami 
allen
[allen@node1 ~]$ ls /root/
ls: cannot open directory /root/: Permission denied
[allen@node1 ~]$ sudo ls /root 
[sudo] password for allen:   #輸入allen的密碼進行驗證
1.txt  anaconda-ks.cfg  nohup.out   stopZk.sh  zookeeper.out
2.txt  hivedata         startZk.sh  test
[allen@node1 ~]$ sudo ls /root
1.txt  anaconda-ks.cfg  nohup.out   stopZk.sh  zookeeper.out
2.txt  hivedata         startZk.sh  test

sudo ls /root

相關文章