1. 程式人生 > 實用技巧 >Linux - 使用者許可權相關命令

Linux - 使用者許可權相關命令

使用者許可權相關命令

目標

  • 使用者和許可權的基本概念
  • 使用者管理終端命令
  • 組管理終端命令
  • 修改許可權終端命令

01.使用者和許可權的基本概念

1.1 基本概念

  • 使用者是 Linux 系統工作中重要的一環,使用者管理包括使用者與組管理
  • 在 Linux 系統中,不論是由本機或是遠端登入系統,每個系統都必須擁有一個賬號,並且對於不同的系統資源擁有不同的使用許可權
  • 在 Linux 中,可以指定每一個使用者針對不同的檔案或者目錄的不同許可權
  • 對檔案/目錄的許可權包括:
序號許可權英文縮寫數字代號
01 read r 4
02 write w 2
03 執行 excute x 1

1.2 組

  • 為了方便使用者管理,提出了組的概念,如下圖所示

  • 在實際應用中,可以預先針對組設定好許可權,然後將不同的使用者新增到對應的組中,從而不用依次為每一個使用者設定許可權

1.3 ls -l 擴充套件

  • ls -l可以檢視資料夾下檔案的詳細資訊,從左到右依次是:

    • 許可權,第 1 個字元如果是d表示目錄
    • 硬連結數,通俗地講,就是有多少種方式,可以訪問到當前目錄/檔案
    • 擁有者,家目錄下 檔案/目錄 的擁有者通常都是當前使用者
    • 組,在 Linux 中,很多時候,會出現組名和使用者名稱相同的情況,後續會講
    • 大小
    • 時間
    • 名稱

1.4chmod簡單使用(重要)

  • chmod
    可以修改使用者/組對檔案/目錄的許可權
  • 命令格式如下:
chmod +/-rwx 檔名|目錄名

提示:以上方式會一次性修改擁有者/許可權,有關chmod的高階用法,後續會講

1.5 超級使用者

  • Linux 系統中的root賬號通常用於系統的維護和管理,對作業系統的所有資源具有所有訪問許可權
  • 在大多數版本的 Linux 中,都不推薦直接使用 root 賬號登入系統
  • 在 Linux 安裝的過程中,系統會自動建立一個使用者賬號,而這個預設的使用者就稱為“標準使用者”

sudo

  • susubstitute user的縮寫,表示使用另一個使用者的身份
  • sudo命令用來以其他身份來執行命令,預設的身份為root
  • 使用者使用sudo時,必須先輸入密碼,之後有5 分鐘的有效期限,超過期限則必須重新輸入密碼

若其未經授權的使用者企圖使用sudo,則會發出警告郵件給管理員

02.組管理終端命令

提示:建立組/刪除組的終端命令都需要通過sudo執行

序號命令作用
01 groupadd 組名 新增組
02 groupdel 組名 刪除組
03 cat /etc/group 確認組資訊
04 chgrp -R 組名 檔案/目錄名 遞迴修改檔案/目錄的所屬組

提示:

  • 組資訊儲存在/etc/group檔案中
  • /etc目錄是專門用來儲存系統配置資訊的目錄

  • 在實際應用中,可以預先針對組設定好許可權,然後將不同的使用者新增到對應的組中,從而不用依次為每一個使用者設定許可權

演練目標

  1. python使用者的桌面資料夾下建立Python學習目錄
  2. 新建dev
  3. Python學習目錄的組修改為dev

03.使用者管理終端命令

提示:建立使用者/刪除使用者/修改其他使用者密碼的終端命令都需要通過sudo執行

3.1 建立使用者/設定密碼/刪除使用者

序號命令作用說明
01 useradd -m -g 組 新建使用者名稱 新增新使用者
  • -m 自動建立使用者家目錄
  • -g 指定使用者所在的組,否則會建立一個和同名的組
02 passwd 使用者名稱 設定使用者密碼 如果是普通使用者,直接用 passwd 可以修改自己的賬戶密碼
03 userdel -r 使用者名稱 刪除使用者 -r 選項會自動刪除使用者家目錄
04 cat /etc/passwd \ grep 使用者名稱 確認使用者資訊 新建使用者後,使用者資訊會儲存在 /etc/passwd 檔案中

提示:

  • 建立使用者時,如果忘記新增-m選項指定新使用者的家目錄 —— 最簡單的方法就是刪除使用者,重新建立
  • 建立使用者時,預設會建立一個和使用者名稱同名的組名
  • 使用者資訊儲存在/etc/passwd檔案中

3.2 檢視使用者資訊

序號命令作用
01 id [使用者名稱] 檢視使用者 UID 和 GID 資訊
02 who 檢視當前所有登入的使用者列表
03 whoami 檢視當前登入使用者的賬戶名

passwd 檔案

/etc/passwd檔案存放的是使用者的資訊,由 6 個分號組成的 7 個資訊,分別是

  1. 使用者名稱
  2. 密碼(x,表示加密的密碼)
  3. UID(使用者標識)
  4. GID(組標識)
  5. 使用者全名或本地帳號
  6. 家目錄
  7. 登入使用的 Shell,就是登入之後,使用的終端命令,ubuntu預設是dash

usermod

  • usermod可以用來設定使用者的主組/附加組和登入 Shell,命令格式如下:
  • 主組:通常在新建使用者時指定,在etc/passwd的第 4 列GID 對應的組
  • 附加組:在etc/group中最後一列表示該組的使用者列表,用於指定使用者的附加許可權

提示:設定了使用者的附加組之後,需要重新登入才能生效!

# 修改使用者的主組(passwd 中的 GID)
usermod -g 組 使用者名稱

# 修改使用者的附加組
usermod -G 組 使用者名稱

# 修改使用者登入 Shell
usermod -s /bin/bash 使用者名稱

注意:預設使用useradd新增的使用者是沒有許可權使用sudoroot身份執行命令的,可以使用以下命令,將使用者新增到sudo附加組中

usermod -G sudo 使用者名稱

which(重要)

提示

  • /etc/passwd是用於儲存使用者資訊的檔案
  • /usr/bin/passwd是用於修改使用者密碼的程式
  • which命令可以檢視執行命令所在位置,例如:
which ls

# 輸出
# /bin/ls

which useradd

# 輸出
# /usr/sbin/useradd
binsbin
  • Linux中,絕大多數可執行檔案都是儲存在/bin/sbin/usr/bin/usr/sbin
  • /binbinary)是二進位制執行檔案目錄,主要用於具體應用
  • /sbinsystem binary)是系統管理員專用的二進位制程式碼存放目錄,主要用於系統管理
  • /usr/binuser commands for applications)後期安裝的一些軟體
  • /usr/sbinsuper user commands for applications)超級使用者的一些管理程式

提示:

  • cd這個終端命令是內建在系統核心中的,沒有獨立的檔案,因此用which無法找到cd命令的位置

3.3 切換使用者

序號命令作用說明
01 su - 使用者名稱 切換使用者,並且切換目錄 - 可以切換到使用者家目錄,否則保持位置不變
02 exit 退出當前登入賬戶
  • su不接使用者名稱,可以切換到root,但是不推薦使用,因為不安全
  • exit示意圖如下:

04. 修改檔案許可權

序號命令作用
01 chown 修改擁有者
02 chgrp 修改組
03 chmod 修改許可權
  • 命令格式如下:
# 修改檔案|目錄的擁有者
chown 使用者名稱 檔名|目錄名

# 遞迴修改檔案|目錄的組
chgrp -R 組名 檔名|目錄名

# 遞迴修改檔案許可權
chmod -R 755 檔名|目錄名
  • chmod在設定許可權時,可以簡單地使用三個數字分別對應擁有者/組和其他使用者的許可權
# 直接修改檔案|目錄的 讀|寫|執行 許可權,但是不能精確到 擁有者|組|其他
chmod +/-rwx 檔名|目錄名

  • 常見數字組合有(u表示使用者/g表示組/o表示其他):
    • 777===>u=rwx,g=rwx,o=rwx
    • 755===>u=rwx,g=rx,o=rx
    • 644===>u=rw,g=r,o=r

chmod演練目標

  1. 01.py的許可權修改為u=rwx,g=rx,o=r
  2. 123.txt的許可權修改為u=rw,g=r,o=-
  3. test目錄以及目錄下的所有檔案許可權修改為u=rwx,g=rwx,o=rx

——本文源自《黑馬程式設計師》