Linux使用者、組、許可權管理

Dabric發表於2019-03-17

使用者

對於多使用者、多工的Liunx,為什麼要有使用者這個概念是值得考慮的問題,那麼為什麼要有使用者?
為了儘可能的發揮Linux系統資源,可以讓不同的人或者服務以不同的身份來登入系統完成使用者對應身份下的操作,使用者之間互不影響相應之間的操作,達到一種多人同時操作同一資源的效果。
每一個使用者在Linux中都對應一個ID,這些ID是用16bits(0-65536)來表示的,使用者有其對應的ID以及口令,使用者及使用者密碼相關資訊分別存放在/etc/passwd和/etc/shadow檔案中,當一個使用者登入系統時,會對使用者進行驗證,看該使用者對應的口令是否和系統中存放的相同,如果相同則登入到系統中,否則不予以登入。
因為不同的使用者對系統管理的許可權不同,所以Linux對使用者進行了分類:

使用者 ID範圍 作用
管理員 0 具有最高許可權
系統使用者 1-499(centOS6) 1-999(CentOS7) 為了能夠讓後臺程式或服務類程式以非管理員身份執行,通常需要為此建立多個普通使用者,這類使用者不用登入系統
登入使用者 500-60000(CentOS6) 1000-60000(CentOS7) 可以登入系統,用對應許可權對系統進行操作

組相當於一個使用者的容器,對於同一個組內的使用者擁有某檔案所屬組的操作許可權,組的設定方便了除檔案屬主以外其他使用者對該檔案的訪問,不用對每個檔案設定相對應使用者的許可權,屬於該檔案屬組下的使用者都有相同的許可權來訪問該檔案。

和使用者組相關的幾個配置檔案

  • /etc/passwd
  • /etc/paswd檔案說明
Segement Meaning
name 使用者名稱
password 使用者密碼,可以是加密的密碼,也可以是佔位符"x"
UID 使用者ID號
GID 使用者所屬的主組的ID號
comment 註釋資訊
directory 使用者的家目錄
shell 使用者預設的shell,登入時預設的shell程式
  • /etc/shadow
  • /etc/shadow檔案說明
Segement Meaning
login name 使用者名稱
encrypted password 加密的密碼
data of lase password change 上次修改密碼的時間,時間參照unix元年,即上次修改密碼的時間距Unix元年已過的天數
minimum password age 密碼最短使用期限,以上次修改密碼的時間為準,即在上次修改密碼的時間與密碼最短使用期限內不能對密碼進行修改
maximum password age 密碼最長使用期限
password warning period 密碼警告時間,以密碼最長使用期限為準,即在密碼最長使用期限的時間前幾天的時間進行警告
password inactivity period 非活動時間,以密碼最長使用期限,即過了密碼最長使用期限,在非活動時間內使用者的密碼還能使用,但是在下次登入之前必須修改密碼,過了非活動時期使用者不能正常登入,只能聯絡管理員修改密碼
account expiration date 使用者賬號過期日期,以Unix元年為準
reserved field 保留欄位

進一步說明
shadow檔案中每個欄位在時間軸上的表示

  • /etc/group
  • /etc/group檔案說明
Segement Meaning
group_name 組名
password 組密碼
GID 組ID
user_list 該組的使用者成員,以此組為附加組的使用者的使用者列表

組密碼的作用:
給組設定密碼,屬於該組的使用者可以切換其基本組為該組;不屬於該組的使用者通過輸入該組密碼也能切換其為該使用者的基本組,如果不設定組密碼,則不能切換。

使用者、組管理相關命令

1、useradd:建立新的使用者或者更新使用者一些預設的資訊

命令用法:

  • useradd [options] LOGIN
    常用選項:
Options Function
-u, --uid UID 指定使用者的UID
-g, --gid GID 指定基本組ID,此組得事先存在
-G, --groups GROUP1[,GROUP2,…[,GROUPN]] 指明使用者所屬的附加組,多個組之間用逗號隔開
-c, --comment COMMENT 指明註釋資訊
-d, --home HOME_DIR 以指定的路徑為使用者的家目錄,通過複製/etc/skel此目錄並重新命名實現,指定的家目錄路徑如果事先存在,則不會為使用者複製環境配置檔案
-s, --shell SHELL 指定使用者的預設shell,可用的所以shell列表儲存在/etc/shells檔案中
-r, --system 建立系統使用者

注意:建立使用者時的諸多預設設定配置檔案為/etc/login.defs

  • useradd -D: 檢視建立使用者的預設配置

    相當於檢視/etc/default/useradd檔案
    命令useradd -D返回的結果

  • useradd -D [options]:修改預設選項的值
    修改的結果儲存於/etc/default/useradd檔案中

2、usermod:修改指定使用者的屬性

命令用法:

  • usermod [OPTIONS] username
    常用選項:
Options Function
-u, --uid UID 修改使用者的ID為此處指定的新UID
-g, --gid GROUP 修改使用者所屬的基本組
-G, --groups GROUP1[,GROUP2,…[,GROUPN]] 修改使用者所屬的附加組,原來的附加組會被覆蓋
-a, --append 與-G一同使用,用於為使用者追加新的附加組
-c, --comment COMMENT 修改註釋資訊
-d, --home HOME_DIR 修改使用者的家目錄,使用者 原有的檔案不會被轉移至新位置
-m, --move-home 只能與-d選項一同使用,用於將原來的家目錄移動為新的家目錄
-l, --login NEW_LOGIN 修改使用者名稱
-s, --shell SHELL 修改使用者的預設shell
-L, --lock 鎖定使用者密碼;即在使用者原來的密碼字串之前新增一個’!’
-U, --unlock 解鎖使用者的密碼
3、userdel: 刪除使用者

命令用法:

  • userdel [OPTION] username
Options Function
-r 刪除使用者時一併刪除其家目錄
4、passwd: 修改使用者的密碼資訊

命令用法

  • passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [–stdin] [username]

  • passwd: 修改使用者自己的密碼

  • passwd USERNAME: 修改指定使用者的密碼,但僅root有此許可權

常用選項:

Options Function
-l, -u 鎖定和解鎖使用者
-d 清除使用者密碼串
-e DATE 過期期限,日期
-i DAYS 非活動期限
-n DAYS 密碼的最短使用期限
-x DAYS 密碼的最長使用期限
-w DAYS 警告期限
–stdin echo “PASSWORD” | passwd --stdin USERNAME
5、gpasswd:管理組和組密碼

命令用法:

  • gpasswd [option] group

常用選項:

Options Function
-a USERNAME 向組中新增使用者
-d USERNAME 從組中移除使用者
6、newgrp: 臨時切換指定的組為基本組

命令用法:

  • newgrp [-] [group]

常用選項:

Options Function
- 會模擬使用者重新登入以實現重新初始化其工作環境
7、id: 顯示使用者的組和有效ID

命令用法:

  • id [OPTION]… [USER]

常用選項:

Options Function
-u 僅顯示有效的UID
-g 僅顯示使用者的基本組ID
-G 僅顯示使用者所屬的所有組的ID
8、su: switch user

命令用法:

  • su [options…] [-] [user [args…]]

常用選項:

Options Function
-l USERNAME 與 su - 功能相同,都是登入式切換使用者
USERNAME 非登入式切換使用者
-c ‘COMMAND’ 僅以指定的使用者身份執行此處指定的命令

其他幾個命令:chage, chsh, chfn, finger, whoami, pwck, grpck

許可權管理

許可權是Linux中一個重要的機制,保證了Linux的安全性,通俗的講許可權就是你能不能完成一件事。Linux中一個重要的哲學思想是一切皆檔案,而對檔案的操作一般有讀、寫以及執行,對於使用者來說,對一個檔案能進行如上的三個操作,就說該使用者有相對應操作的能力,即就是有對應許可權對檔案進行操作,這個過程涉及了兩個物件,一個是使用者另一個是物件檔案,所以在許可權中使用者和物件檔案是必不可少的兩個因素。我們思考一個問題,使用者在console中執行cat命令來檢視一個檔案,想一下該使用者為什麼能檢視該檔案呢?
程式安全上下文:
程式對檔案的訪問許可權應用模型
當一個使用者利用cat檢視某個檔案時,核心會以該使用者的身份發起cat這個程式;此時會判斷程式的屬主與檔案的屬主是否相同;如果不同,則應用屬主許可權;
否則,則檢查程式的屬主是否屬於檔案的屬組;如果是,則應用屬組許可權;
否則,就只能應用other的許可權;
程式對檔案的訪問許可權應用模型

檔案的許可權

Permission Meaning
r 可獲取檔案的資料
w 可修改檔案的資料
x 可將此檔案執行為程式

目錄的許可權

Permission Meaning
r 可使用ls命令獲取其下的所有檔案列表
w 可修改此目錄下的檔案列表,即建立或者刪除檔案
x 可cd至此目錄中,其可使用 ls -l 來獲取所有檔案的詳細屬性資訊

許可權組合機制

Mode Binary
- - - 000
- - x 001
- w - 010
- w x 011
r - - 100
r - x 101
r w - 110
r w x 111

許可權管理命令

Linux中檔案一般對應三個使用者型別的許可權:

Uers Meaning
u 屬主
g 屬組
o 其他使用者
a 所有使用者
1、chmod: 改變檔案的許可權屬性值

命令用法

  • chmod [OPTION]… MODE[,MODE]… FILE…
    MODE表示方法:
    (1) 賦權表示法:直接操作一類使用者的所有許可權位rwx
    u=- - -
    g=- - -
    o=- - -
    a=- - -
    (2)授權表示法:直接操作一類使用者的一個許可權位r, w, x
    u+, u-
    g+, g-
    o+, o-
    a+, a-
  • chmod [OPTION]… OCTAL-MODE FILE…
    此方式是利用八進位制格式來更改許可權
  • chmod [OPTION]… --reference=RFILE
    此法是將某個檔案的許可權屬性賦給指定檔案,也可以說是參考某個檔案的許可權屬性值

選項:

Options Function
-R, --recursive 遞迴修改

注意:遞迴修改建議在授權表示法下使用;使用者僅能修改屬性為自己的那些檔案的許可權

2、chown和chgrp: 檔案從屬關係管理

chown命令用法:

  • chown [OPTION]… [OWNER][:[GROUP]] FILE…
  • chown [OPTION]… --reference=RFILE FILE…ch

chgrp命令用法:

  • chgrp [OPTION]… GROUP FILE…
  • chgrp [OPTION]… --reference=RFILE FILE…

注意:僅管理員可修改檔案的屬主和屬組

當某一使用者建立檔案或者目錄時,都會預設建立一個預設許可權的檔案和目錄,這是因為檔案的許可權返向碼(遮罩碼 umask)的存在。在建立檔案時,檔案的許可權為666-umask;建立目錄時,目錄的許可權為777-umask。
之所以檔案用666減去,表示檔案預設不能擁有執行許可權,如果減得的結果中有執行許可權,則需要將其許可權加1。

3、umask命令:
  • umask: 檢視當前umask
  • umask MASK: 設定umask

相關文章