1. 程式人生 > >Linux的帳號管理與ACL許可權設定

Linux的帳號管理與ACL許可權設定

使用者在終端介面通過login介面,輸入帳號密碼後,linux系統做了什麼?

  1. 先找尋 /etc/passwd 裡面是否有你輸入的賬號?如果沒有則跳出,如果有的話則將該賬號對應的 UID 與GID (在 /etc/group 中) 讀出來,另外,該賬號的家目錄與 shell 設定也一併讀出;
  2. Linux 會進入 /etc/shadow 裡面找出對應的賬號與 UID,然後核對一下你剛剛輸入的密碼與裡頭的密碼是否相符;
  3. 如果一切都 OK 的話,就進入 Shell 控管的階段囉

/etc/passwd檔案結構

檔案每一行代表一個帳號
e.g.

root:x:0:0:root:/root:/bin/bash
  1. 帳號名稱
  2. 密碼(以x代替,實際密碼加密儲存在/etc/shadow中)
  3. UID (user id)(0代表root,1~999為系統帳號,1000~給一般使用者用的)
  4. GID (group id)(與/etc/group有關)
  5. 使用者資訊說明欄
  6. 家目錄
  7. Shell (用哪個帳號登入時獲取的shell)

/etc/group檔案結構

檔案每一行代表一個群組
e.g.

root:x:0:
  1. 組名
  2. 群組密碼(以x代替,實際密碼儲存在/etc/gshadow中)
  3. GID
  4. 在此群組中的帳號(我們知道一個賬號可以加入多個群組,那某個賬號想要加入此群組時,將該賬號填入這個欄位即可。 舉例來說,如果我想要讓 a與 b 也加入 root 這個群組,注意不要有空格, 使成為root:x:0:a,b )(其中初始群組(initial group)的使用者已預設加入,因此不會在顯式寫出,比如在這個root群組中root這個帳號已經預設加入,因此第四段為空
    )

問題:當用戶加入多個群組時,在工作時,是以哪個群組為準的呢?

答:針對已經存在的檔案和目錄,只要是加入的群組的功能均可使用;新建檔案或目錄時,檔案和目錄的群組應為這個使用者的有效群組

通過groups指令可以獲取當前使用者加入的所有群組,顯示出的第一個群組即為有效群組
在root環境中可以使用usermod指令給使用者新增群組

新增使用者以及使用者密碼的指令

useradd [-u UID] [-g 初始群組] [-G 次要群組] [-mM] [-c 說明欄] [-d 家目錄絕對路徑] [-s shell] 使用者賬號名
passwd [賬號名稱]

刪除使用者的指令

userdel [-r] 帳號名稱 //-r表示家目錄刪除掉

什麼是ACL?

ACL 是 Access Control List 的縮寫,主要的目的是在提供傳統的 owner,group,others 的read,write,execute 許可權之外的細部許可權設定。ACL 可以針對單一使用者,單一檔案或目錄來進行r,w,x 的許可權規範,對於需要特殊許可權的使用狀況非常有幫助

那 ACL 主要可以針對哪些方面來控制權限呢?他主要可以針對幾個專案:
1. 使用者 (user):可以針對使用者來設定許可權;
2. 群組 (group):針對群組來設定其許可權;
3. 預設屬性 (mask):還可以針對在該目錄下在建立新檔案/目錄時,規範新資料的預設許可權;