2021-05-12 14:32:11
Linux檔案許可權命令:使用者列表passwd,使用者控制shadow,useradd模板與useradd命令引數
一. 概述
Linux安全系統的核心是使用者賬戶。 建立使用者時會分配使用者ID(UID)。 UID是唯一的,但在登入系統時不是用UID,而是用登入名。在講檔案許可權之之前,先了解下linux是怎樣處理使用者賬戶的。以及使用者賬戶需要的檔案和工具,這樣處理檔案許可權問題時,就知道如何使用它們了。
1.1 /etc/passwd使用者檔案
/etc/passwd 是用來將使用者的登入名,匹配到對應的UID上。它包含了一些與使用者有關的資訊。下面擷取二個片斷。如下圖所示:
root使用者賬戶是linux系統管理員,固定分配給它的UID是0。 上面linux系統會為各種各樣的功能建立不同的使用者賬戶,而這些賬戶並不是真正的使用者。它們叫作系統賬戶,是系統上執行各種服務進程存取資源用的特殊賬戶。root使用者UID是0,mysql使用者的UID是998。如下圖所示:
linux系統賬戶預留了500以下的UID值。有些服務甚至要用特定的UID才能正常工作。在/etc/passwd檔案中冒號分隔的欄位包含以下資訊:
mysql:x:998:1000::/home/mysql:/bin/bash
登入使用者名稱 |
例如:mysql |
使用者密碼 |
x (密碼欄位都被設定成了x) |
使用者UID |
998 |
使用者的組ID (GID) |
I000 |
使用者的文字描述 |
mysql 使用者描述為空 |
使用者的HOME目錄位置 |
/home/mysql |
使用者的預設shell |
/bin/bash |
1.2 /etc/shadow 使用者檔案
/etc/shadow檔案對linux系統密碼管理提供了更多的控制。只有root使用者才能存取/etc/shadow檔案。比起/etc/passwd安全許多,檔案內容如下圖所示:
比如讓mysql 使用者來檢視該檔案,是沒有這個許可權的。
下是copy出來的root使用者賬戶資訊:
root:$6$BSeXl2xuiNYlDwkO$X4dfd8A97XHRO9S.9KNqL/bRX4B33tIAzOu1dwiPVLDS42YqwaY8JrwYAExGPuvc42yhnMmO28VRMP.qVjYDY1::0:99999:7:::
每條記錄都有9個欄位,字串以冒號分隔的欄位資訊如下:第一個欄位:登入名。 第二個欄位:加密後的密碼。其它欄位以後在解讀。使用/etc/shadow,可以控制使用者多久更改一次密碼,以及什麼時候禁用該使用者賬戶(在其它欄位上設定這些功能)。
二. 使用者工具管理
2.1 useradd 模板介紹
在linux系統中新增新使用者的工具是useradd, 可以一次性建立新使用者賬戶及設定使用者HOME目錄結構。useradd命令使用系統的預設值以及命令列引數來設定使用者賬戶。系統預設值被設定在/etc/default/useradd檔案中,可以定位到/etc/default/useradd檔案,修改預設值。使用useradd -D 選項檢視這些預設值。如下圖所示:
如果使用者不指定具體的值,使用useradd新增使用者時就會使用這些預設值。預設值解釋如下:
GROUP=100 |
新使用者會新增到GID為100的公共組中 |
HOME=/home |
新使用者的HOME目錄將位於/home/loginname下 |
INACTIVE=-1 |
新使用者密碼在過期後不會被禁用 |
EXPIRE= |
新使用者未設定過期日期 |
SHELL=/bin/bash |
新使用者將bash shell作為預設shell |
SKEL=/etc/skel |
系統會將/etc/skel目錄下的內容複製到使用者的HOME目錄下 |
CREATE_MAIL_SPOOL=yes |
系統為使用者賬戶在mail目錄下建立一個用於接收郵件的檔案 |
SKEL引數是指:useradd命令允許管理員建立一份預設的HOME目錄設定,然後把它作為建立新使用者HOME目錄的模板。這樣就能自動在每個新使用者的HOME目錄裡放置預設的系統檔案(上篇講到的系統環境變數位置)。新使用者HOME目錄下的系統檔案模板。如下圖所示:
在上篇中,知道了.bashrc, .bash_profile這些檔案都是bash shell的標準啟動檔案。系統會自動將這些預設檔案複製到你建立的每個使用者HOME目錄下。我的linux系統在很久前建立了一個mysql使用者,下面去/home/mysql下檢查有沒有這些標準啟動檔案。
上圖告訴我們,mysql目錄不存在,這是因為建立使用者預設情況下,useradd命令不會建立HOME目錄,需要使用useradd -m 命令來建立HOME目錄。我推測當mysql使用者沒有這些bash shell標準啟動檔案時,會去繼承root使用者下的標識啟動檔案。
2.2 useradd -m
上面mysql使用者沒有指定HOME目錄,下面是建立一個新test使用者,並使用引數m來建立HOME目錄,並將/etc/skel目錄中的檔案複製了過來,/home/test 下面就有了標準啟動檔案。如下圖所示:
再次檢視passwd使用者列表,多出來一個test使用者,建立的這個test除了指定了HOME目錄,其它引數都是使用的預設值(沒有指定組,密碼,過期時間)。如下圖所示:
下面是切換到test使用者下,如下圖所示:
2.3 useradd 命令引數
要想在建立使用者時改變預設值或預設行為,可以使用命令引數,下面列出一些常用引數
引數 |
描述 |
-c comment |
給新使用者新增備註 |
-d home_dir |
為主目錄指定一個名字(如果不想用登入名作為主目錄名) |
-e expire_date |
用YYYY-MM-DD格式指定一個賬戶過期日期 |
-f inactive_days |
指定這個賬戶密碼過期後多少天,這個賬戶被禁用;0表示密碼一過期就立即禁用, 1表示禁用這個功能 |
-g initial_group |
指定使用者登入組GID |
-m |
建立使用者HOME目錄 |
-r |
建立系統賬戶 |
-p passwd |
指定預設密碼 |
當建立使用者賬戶時,如果總需要修改某個值的話,最好還是修改一下系統的預設值,修改(useradd模板),也可以使用"useradd -D 預設引數"來修改模板,這裡就不再介紹useradd預設值引數。
相關文章