登錄Linux時我們都需要輸入賬號和密碼,但Linux只會識別賬號所對應用ID號,這個ID號就稱為UID。
同理每個用戶組也都擁有相對應的組ID號,即GID。
Linux根據/etc/passwd文件的內容來查找當前登錄用戶是否為合法用戶。
上圖中標注的即為root用戶所對應的UID和GID。
一、用戶賬號信息
1、/etc/passwd文件
此文件件中每一行為一個用戶的信息,以“:”分隔,共七個字段,各字段含義如下:
1)賬號名稱
就是我們用來登錄系統的賬號名。
2)密碼
由于/etc/passwd文件任何程序都可以讀取,出于安全考慮Linux已經把密碼存放在/etc/shadow文件中了,此處只用"x"來占位表示。
3)UID
用戶ID;Linux將用戶劃分為以下幾類:
id | 用戶類型 | 用戶特性 |
0 | 管理員 | 可以對系統做任何操作,沒人能阻止 |
1-499 | 系統賬號 | 專門用來運行程序的用戶,此類用戶不可以登錄系統 |
500以上 |
普通用戶 | 可以登錄系統的有限權限的用戶 |
4)GID
組ID與用戶ID的規定相類似,只不過它是用來定義用戶組的,與其相關的文件有/etc/group。
5)信息說明列
用于描述賬號的用途,沒有實際作用。
6)用戶家目錄
用于指定用戶的家目錄的位置。
7)shell
指定用戶登錄系統后使用的默認shell程序,由于系統用戶為不可登錄用戶,其shell為/sbin/nologin;另外,如果指定的shell在/etc/shells文件中不存在,則此用戶將無法登錄系統。
2、/etc/shadow文件
前文提到此文件保存了所有登錄用戶的密碼信息,下面來詳細了解一下這個文件的內容:
1)賬號名稱
與/etc/passwd文件中的賬號名稱相對應。
2)密碼
密碼以加密的形式存放,sha512加密(centos6),centos5中使用MD5。
3)最近更改密碼的日期
此字段中的數字表示,從1970年1月1日開始到最后一次修改密碼所經過的天數。
4)密碼最少使用天數
此字段定義了用戶在最后一次修改密碼后,密碼必須使用的天數;0表示隨時可以修改。
5)密碼最多使用天數
此字段定義如果在此時間內沒有更改密碼的話,密碼將會過期,用戶登錄系統時會被強制要求修改密碼。
6)警告天數
密碼需要修改前的警告天數,在第5個字段到期前,系統根據此字段的設置提醒用戶密碼所能使用的天數。
7)密碼過期后的寬限時間
這個字段表示密碼過期后的多少天內,如果還沒有修改密碼,密碼將會失效,此用戶將無法登錄系統了。
8)賬號失效日期
在指定的日期之后,賬號將無法登錄系統;日期的指定方法與第3個字段相同。
9)保留字段
二、組賬號信息
1、/etc/group文件
此文件每一行代表一個用戶組,以“:”作為字段分隔符,共四列,其含義如下:
1)用戶組名稱
2)用戶組密碼
不常用,密碼信息被保存在/etc/gshadow文件中。
3)GID
與/etc/passwd文件中的第四段對應。
4)組成員
此組中所包含的用戶。不過從上圖可以看到root組中此字段為空,本來root是屬于root組的,可是在這里為什么沒有顯示呢?因為此字段只顯示以此組做為附加組的用戶列表。
2、/etc/gshadow
此文件內容格式與/etc/group相似,各字段含義如下:
1)用戶組名稱
2)用戶組密碼
3)用戶組管理列表
4)將此組作為附加組的用戶列表
三、賬號管理
1、用戶管理
1)useradd命令
命令格式:useradd [options] 用戶賬號名
-u UID:為用戶指定UID;
-g GID:所屬的基本組;
-G GID:所屬的附加組;
-c ‘COMMENT’:注釋信息;
-d /path/to/somewhere:為用戶創建家目錄,如果目錄存在會警告;
-s SHELL:指定用戶的默認Shell;
-m:強制給用戶創建家目錄;
-M:不給用戶創建家目錄;
-r:創建系統用戶;
-e:后跟日期,格式為“YYYY-MM-DD”,指對賬號失效日期,對應shadow文件的第八個字段。
命令演示:
從上面的兩個例子可以看出,創建用戶后其家目錄都保存在了/home目錄下,我們可以在創建用戶時修改家目錄的位置。
我們來可以指定用戶登錄時使用的默認shell。
下面我們再來看一下useradd的默認值:
[root@localhost ~]# useradd -D
GROUP=100 默認的用戶組;
HOME=/home 默認的家目錄;
INACTIVE=-1 密碼失效時間,對應shadow文件中的第7列;
EXPIRE= 密碼過期時間,對應shadow文件中的第8列;
SHELL=/bin/bash 默認登錄shell;
SKEL=/etc/skel 默認家目錄中的數據源目錄;
CREATE_MAIL_SPOOL=yes 是否為用戶創建郵箱。
GROUP=100:
此設置表示新建的用戶其默認的用戶組ID為100,但實際情況并不是這樣的,我們創建用戶時默認的用戶組ID與用戶ID是相同的。而且GID對應的用戶組是users,我們也從來沒有見到過此且戶組。其實在Linux中用戶組有兩種機制:私有用戶組和公有用戶組。
公有用戶組是以GID=100做為新建用戶的默認用戶組,新建用戶都處于同一組中,也就是users組,組中用戶可以共享家目錄中的數據。
而CentOS采用的是私有用戶組的機制,所以GROUP=100不生效。
SKEL=/etc/skel:
我們在創建好用戶后,可以在其家目錄中發現已經存在一些默認的隱藏目錄與文件,如下圖所示:
這些文件用于定義用戶的環境變量,而這些文件就是從/etc/skel目錄中復制過來的。
CREATE_MAIL_SPOOL=yes:
用戶創建后都會自動生成一個與用戶對應的郵箱,就是靠此設置控制的。
那么如何修改這些默認設置呢?可以通過修改/etc/default/useradd來修改默認值。
上圖中將默認的用戶家目錄改到了/tmp目錄中,下面再來創建個新用戶:
2)passwd命令
命令格式:passwd [-k] [-l] [-u] [-d] [-e] [-n mindays] [-x maxdays] [-w warn-days] [-i inactivedays] [-S] [–stdin] [username]
不帶任何選項:修改當前用戶的密碼;
-k:修改密碼時要求輸入賬號現在使用的密碼;
-l:鎖定用戶;
-u:解鎖用戶;
-d:刪除用戶密碼;
-e:設置用戶密碼為過期密碼,用戶登錄時必須修改密碼;
-n:密碼最小使用天數,與shadow第4個字段對應;
-x:密碼最大使用天數,與shadow第5個字段對應;
-w:密碼過期前的警告天數,與shadow第6個字段對應;
-i:密碼失效日期,與shadow的第7個字段對應;
-S:列出與密碼有關的相關參數;
–stdin:可以通過管道進行密碼設置。
命令演示:
(1)使用默認選項修改用戶密碼
上面兩個實例中,root用戶修改密碼時要求直接輸入新的密碼即可,如果我們想在修改密碼前先輸入用戶的當前密碼,再輸入新密碼,可以使用-k選項。
(2)要求root用戶修改密碼時提供被修改用戶的當前密碼
上圖中要求先輸入當前的密碼,認證不通過的話是修改不了密碼的,在普通用戶中-k是默認選項。
(3)查看密碼的相關信息:
上圖中的命令結果是以空格分隔的7個字段,各字段含義如下:
第一個字段:用戶賬號名;
第二個字段:賬號的狀態;
第三個字段:密碼新建的時間;
第四個字段:密碼最小使用天數;
第五個字段:密碼最長使用天數;
第六個字段:警告天數;
第七個字段:密碼是否有效;
(4)鎖定賬號密碼
如果我們想讓某個用戶暫時無法使用賬號來登錄系統,可以將密碼鎖定,如下所示:
與之對應的在/etc/shadow文件中test1的密碼也發生變化,如下所示:
(5)解鎖賬號密碼
使用-u選項即可為用戶解鎖:
(6)清空賬號密碼
(7)設置密碼過期
設置密碼過期后,用戶再次登錄系統時會要求修改密碼。
(8)設置密碼的使用時限
(9)不使用交互方式為賬號設置密碼
3)chage命令
命令格式:chage [options] 用戶賬號名
-l:顯示賬號密碼的詳細信息;
-d:后接日期,最近更改密碼的日期,格式YYYY-MM-DD,對應shadow文件第三字段;
-m:后接天數,密碼最少使用天數,對應shadow文件第四字段;
-M:后接天數,密碼最多使用天數,對應shadow文件第五字段;
-w:后接天數,密碼過期前的警告日期,對應shadow文件第六字段;
-I:后接天數,密碼失效前的寬限期限,對應shadow文件第七字段;
-E:后接日期,賬號失效日期,格式YYYY-MM-DD,對應shadow文件第八字段。
4)usermod命令
用于修改用戶的的屬性。
命令格式:usermod [options] 用戶賬號名
-a:以追加的方式將用戶添加到附加組,與-G連用;
-c:添加賬號說明;
-d:修改家目錄,與-m連用可以保證家目錄一定會被創建;
-e:后接日期,賬號過期日期,格式:YYYY-MM-DD,shadow文件第八字段;
-f:密碼失效前的寬限期限,shadow文件第七字段;
-g:修改用戶所在的用戶基本組;
-G:修改用戶所在的用戶附加組;
-l:修改賬號名稱;
-L:鎖定賬號;
-U:解鎖賬號;
-m:移動家目錄中的內容到新的位置,與-d一起使用;
-s shell:修改用戶的默認shell;
-u UID:修改用戶的UID;
命令演示:
(1)將用戶加入一個附加組中;
(2)修改用戶家目錄的位置
5)userdel命令
命令作用:刪除用戶
命令格式:userdel [options] 用戶賬號名
-f:強制刪除用戶,即使用戶處于登錄狀態;
-r:同時刪除用戶家目 二
錄;
2、組管理
1)groupadd命令:
命令格式:groupadd [options] 組名
-g GID:指定GID;
-r:創建系統組;
2)groupmod命令:
命令格式:groupmod [options] 組名
-g:修改GID;
-n:修改組名;
(1)修改GID
(2)修改組名
3)groupdel命令
命令格式:groupdel group
三、賬號查詢與控制
1、查看用戶信息
1)id命令
命令格式:id [OPTION]… [USERNAME]
-g:顯示基本組ID;
-G:顯示所有組ID;
-u:顯示用戶ID;
-n:以名稱代替ID顯示;
2)whoami命令 2、查看當前登錄系統的用戶
1)w命令
2)who命令
2、用戶信息控制
1)chfn命令
命令格式:chfn [option] 用戶名
2)chsh命令
命令作用:更改用戶默認登錄shell。
命令格式:chsh [-s shell][username]
四、用戶切換
通常出于安全的考慮,建議使用普通用戶來登錄系統,在有需要時再切換為管理員進行操作,用戶之間的切換有以下幾種方法:
1、使用Ctrl+Alt+F[2-6]鍵,打開新的終端登錄;
2、使用ssh遠程登錄時,可以使用不同的用戶登錄系統;
3、如果想在同一窗口中進行用戶切換,可以使用su命令來實現;
命令格式:su [OPTION] [USERNAME]
-,-l:使用登錄shell的方式切換用戶;
-c 'COMMAND':使用指定的用戶來執行命令;
-m:使用非登錄shell的方式來切換用戶;
-s SHELL:切換用戶時指定shell,此shell必須是中/etc/shells中存在的;
1)使用非登錄shell的方式來切換用戶。
2)使用登錄shell來切換用戶
3)使用普通用戶查看/etc/shadow文件內容
原創文章,作者:petmaster,如若轉載,請注明出處:http://www.www58058.com/3240
喲,乍看以為又是書生,petmaster新作相當給力哇,贊