Linux帳號管理

1、用戶管理shell

1. 用戶帳號管理文件安全

  要對Linux中的用戶帳號進行管理,首先固然應該瞭解用戶帳號在Linux系統中是怎麼保存的,這涉及到兩個文件——/etc/passwd/etc/shadow,前者保存用戶的UIDGID等基本信息,後者則主要保存與帳號密碼相關的一些信息。加密

  先來看看/etc/passwd這個文件存的是啥(這裏只取前三行):spa

在此文件中,每一個用戶帳號信息存爲一行,每一行有7個欄位,從左到右存放的信息分別爲:3d

(1)帳號名稱。blog

(2)密碼:早期Unix系統的密碼是放在這裏的,但因爲/etc/passwd這個文件能被不少程序讀取,不安全,後來密碼資料已經放到文件/etc/shadow中,因此這裏第二個欄位都是「x」。資源

(3)UID0表明帳號爲系統管理員,1-999表明系統帳號,1000-6000則是通常使用者。it

(4)GID:用戶初始羣組的GID登錄

(5)用戶名全稱或帳號意義說明。變量

(6)家目錄:默認爲/home/帳號名稱。

7Shell:該帳號登入系統以後取得的shell

再來看看/etc/shadow這個文件存的又是啥(這裏只取前三行):

一樣的,在這個文件中也是每一個帳號存爲一行,共有9個欄位,從左到右存放的信息分別爲:

(1)帳號名稱。

(2)密碼:加密以後的密碼。若以!」開頭則表示密碼失效,帳號封鎖,暫時沒法登陸。

(3)最近修改密碼的日期:這個欄位上的數字表示的是最近修改密碼的日期是在197011日的多少天以後。

(4)密碼不可修改的天數:表示上一次修改密碼以後,幾天以後才能再次修改密碼。

(5)密碼須要再次修改的天數(密碼過時日):表示上一次修改密碼以後,幾天以內須要再次修改密碼。

(6)在密碼過時日前幾天開始發出警告。

(7)密碼過時以後的帳號寬限天數(密碼失效日):密碼過時後幾天以內帳號密碼仍是可使用,可是登入系統以後,系統會強制讓用戶修改密碼。若這幾天仍是沒修改密碼,則過了這個時間密碼就失效了,沒法再使用該帳號密碼登入系統。

(8)帳號失效日期:197011日的多少天以後帳號失效,不管密碼是否過時,帳號都沒法再使用。

(9)暫時沒存信息,保留給新功能使用。

 

2. 用戶帳號管理操做

  瞭解了Linux帳號和密碼在系統中的保存方式以後,咱們還須要知道怎麼去添加帳號、修改帳號信息,以及如何修改密碼等用戶管理操做,如下便一一做出說明。

(1)用戶帳號添加:

useradd [-u UID] [-g 初始羣組] [-G 次要羣組] [-m/M] [-c 帳號意義說明] [-d 家目絕對路徑] [-s shell] [-r] [-e 帳號失效日期,格式爲YYYY-MM-DD] [-f 密碼是否會失效,0馬上失效,-1永不失效] 帳號名稱

  這裏列出useradd命令經常使用的一些選項,可根據須要添加,其中-M表示強制不創建家目錄,-m表示強制創建家目錄,-r表示建立系統帳號,更多選項須要本身使用man命令在系統中查看了。不過通常來講,咱們建立用戶帳號的時候只要指定帳號名稱便可:useradd帳號名稱,這樣帳號的其餘信息都會使用系統爲咱們設置的默認值。在CentOS中,系統默認會幫咱們作的事情以下:

<1>/etc/passwd創建一行與帳號相關的資料。

<2>/etc/shadow創建一行與此帳號密碼相關的數據,可是還沒有有密碼。

<3>/etc/group創建一行此帳號的初始羣組信息,羣組名稱與帳號名稱一致。

<4>/etc/gshadow創建一行此帳號初始羣組的密碼信息,可是沒有密碼。

<5>/home中創建此帳號家目錄,目錄名稱與帳號名稱一致,權限爲700

那麼useradd命令的這些默認值是在哪裏存放的呢?首先可使用useradd -D查看部分默認值(這裏註解了各個參數的意義說明):

(最後一個參數爲:是否創建郵件信箱)

這些參數實際上就保存在文件/etc/default/useradd中!

  關於初始羣組,有兩種機制:公共羣組機制和私有羣組機制。公共羣組機制會使用這裏的GROUP=100」這個參數值做爲新建帳號的初始羣組,每一個帳號都將屬於users這個羣組,帳號之間能夠分享家目錄中的資料,SuSE使用的就是這種機制。私有羣組機制則不使用這個參數,每一個帳號都有各自的羣組和家目錄,並且只有本身能夠進入本身的家目錄,使用這個機制的有RHELFedoraCentOS等。

  「SKEL=/etc/skel」指定了建立帳號家目錄的內容參考目錄,即新建帳號的家目錄中的內容是從/etc/skel這個目錄中直接拷貝過去的!「CREATE_MAIL_SPOOL=yes」指定了系統會自動幫新建帳號創建郵件信箱,即會建立「/var/spool/mail/帳號名稱」這個文件。

  然而/etc/default/useradd這個文件只是設置了一些帳號的基本信息默認值,更多參數默認值可在/etc/login.defs文件中查看,裏面設置了用戶UIDGID等更多參數默認值與規範。

  因此,總結起來,使用useradd命令建立帳號時會參考的文件有:/etc/default/useradd/etc/login.defs/etc/skel/*

(2)用戶帳號修改:

  修改用戶帳號可以使用usermod命令,該命令的選項參數大都與useradd相似,這裏再也不贅述,只是有個特別的功能須要說明一下,那就是usermod可使用-L-U這兩個選項參數分別對帳號進行凍結和解凍,凍結其實就是在/etc/shadow第二欄的密碼前面添加「!」,使得帳號密碼沒法正常登陸,解凍則將其去除,恢復帳號登陸。

(3)用戶帳號刪除:

  用戶帳號刪除使用命令:userdel 用戶帳號,若加上-r選項則會連同使用者的家目錄也一塊兒刪除。注意,userdel命令會將與指定帳號相關的東西通通刪除!

4)帳號密碼修改:

  使用useradd建立帳號以後,新建帳號仍是沒法登入系統的,還須要使用passwd命令設置密碼才行:

  除了修改密碼,passwd命令還有如下用途:

<1>修改密碼屬性:passwd [-n 密碼不可修改的天數] [-x 密碼須要再次修改的天數] [-w 在密碼過時日前幾天開始發出警告] [-i 密碼過時以後的帳號失效寬限天數] 帳號名稱

<2>凍結密碼:passwd -l 帳號名稱,修改/etc/passwd,在密碼前加「!!」。(相似usermod -L

<3>解凍密碼:passwd -u 帳號名稱。(相似usermod -U

<4>查看密碼信息:passwd -S 帳號名稱。

  除了passwd,還有一個命令可用於修改帳號密碼的信息,那就是chage

chage [-d 最近修改密碼日期,格式爲YYYY-MM-DD] [-m 密碼不可修改的天數] [-M 密碼須要再次修改的天數] [-W 在密碼過時日前幾天開始發出警告] [-I 密碼過時以後的帳號失效寬限天數] [-E 帳號失效日期,格式爲YYYY-MM-DD]

  此外,chage也能夠用於查看帳號密碼信息,信息展現的格式比passwd -S指令更容易查看:

還能夠經過chage -d 0 帳號名稱」強制要求用戶在下一次登入系統時修改密碼!

 

3. 使用者功能

  以上介紹的帳號管理操做,除了使用passwd修改本身密碼和部分信息查看操做,其餘的都是隻有系統管理員才能執行的,下面介紹一下通常用戶能查看與修改信息的命令操做。

<1>id 帳號名稱:查看用戶UIDGID

<2>finger:查詢當前登入系統的全部用戶信息。

finger 帳號名稱:查詢某個帳號相關屬性。

<3>chfn:修改finger中展現的一些信息。

能夠看到,實際上修改的信息都保存在/etc/passwd文件的第五欄中。(修改本身信息直接執行「chfn」便可)

<4>chsh -l:查看當前系統上全部可用的shell,便是/etc/shells中的內容。

chsh -s:修改本身的shell

 

 

2、羣組管理

1. 羣組管理文件

  與用戶管理相似,想要了解羣組管理,亦須要先來看看羣組信息在Linux系統中是怎麼保存的,羣組信息涉及兩個文件——/etc/group/etc/gshadow,前者保存羣組基本信息,後者保存羣組密碼信息。

  先來看看/etc/group文件:

在此文件中,每一個羣組信息存爲一行,每行4個欄位,從左到右存放信息分別爲:

(1)羣組名稱。

(2)羣組密碼:已轉移到/etc/gshadow中存儲,因此這裏存「x」。

(3)GID

(4)此羣組中的全部用戶帳號成員列表。

  再來看看/etc/gshadow文件:

在此文件中,每一個羣組信息存爲一行,每行4個欄位,從左到右存放信息分別爲:

1)羣組名稱。

2)羣組密碼:一般是給羣組管理員使用的,少有設置。

3)羣組管理員的帳號。

4)此羣組中的全部用戶帳號成員列表。

 

2. 羣組管理操做

1)羣組添加:

groupadd [-g gid] 羣組名稱

(如果建立系統羣組需加上-r選項)

(2)羣組修改:

groupmod [-g gid] [-n 羣組新名稱] 羣組名稱

(注意,不要隨意改動GID,很容易形成系統資源的錯亂)

(3)羣組刪除:

groupdel 羣組名稱

(若羣組是某個用戶帳號的初始羣組則會報錯,沒法刪除)

(4)初始羣組與有效羣組:

  用戶的初始羣組是用戶登入系統以後就獲取到並擁有其相關權限的羣組,也就是/etc/passwd文件第四個欄位上的GID對應的羣組。用戶在系統中可加入多個羣組,並且可使用所屬全部羣組的權限與功能,可是建立文件或者目錄的時候,新建文件或目錄的羣組則只能是當前用戶當前的有效羣組。

  可使用命令groups」查看當前用戶加入的全部羣組,列表中第一個羣組便是當前有效羣組,可使用命令「newgrp 羣組名稱」切換有效羣組,可是隻能在當前用戶加入的全部羣組中切換。切換有效羣組以後會進入一個新的shell環境,可使用「exit」命令來退出,回到原來有效羣組和shell環境。

(5)用戶加入羣組:

  用戶想要加入某個羣組有兩種方法,第一種方法是讓系統管理員root使用usermod命令進行操做(-a選項組合-G選項):

(將用戶jet加入羣組jet2

  第二種方法則是讓對應羣組的管理員使用gpasswd命令進行操做。

  首先須要系統管理員root指定這個羣組的管理員,也是使用gpasswd命令操做。先來看看root操做:

<1>修改羣組密碼:gpasswd 羣組名稱

<2>設置羣組管理員、用戶成員:gpasswd [-A 羣組管理員帳號列表] [-M 用戶成員帳號列表] 羣組名稱

<3>移除羣組密碼:gpasswd -r 羣組名稱

<4>使羣組密碼失效:gpasswd -R 羣組名稱

  而後由羣組管理員對羣組用戶成員進行管理:

 

 

3、使用者身份切換

1. su

  用戶登入Linux系統以後能夠經過su命令切換到不一樣帳號,經過exit命令退出,恢復到原來帳號。

1su 帳號名稱:以non-login shell方式切換身份,不少環境變量包括PATH都仍是目前用戶的。

2su -/-l 帳號名稱:以login shell方式切換身份,全部環境變量都變成新帳號的。

3su - -c "指令" 帳號名稱:利用新身份執行一條指令,執行後身份恢復爲當前用戶。

(若不加上帳號名稱則表示切換到root身份)

 

2. sudo

  使用su命令切換身份是須要輸入新切換帳號的密碼的(只有root不須要),也就是說,若要使用su切換身份,就必需要知道新切換帳號的密碼才行。另外一個命令sudo也能夠切換身份執行命令操做,並且只須要輸入當前帳號密碼便可,無需知道新切換帳號的密碼,只是切換身份執行命令以後會自動恢復到原來帳號身份。指令格式以下:

sudo -u 帳號名稱 指令

(如果沒有指定帳號名稱則默認是使用root身份執行指令)

  然而並非全部的用戶帳號都能使用sudo命令並能隨意切換任何帳號的,須要在/etc/sudoers文件中配置相關信息才能夠。此文件有規定語法,須要使用visudo指令來進行編輯。經過/etc/sudoers文件可設置哪些用戶或羣組可在哪些主機登入系統時切換到哪些帳號執行哪些指令,還能夠設置執行sudo指令時無需輸入密碼。該文件部份內容截圖以下:

相關文章
相關標籤/搜索