您好,登錄后才能下訂單哦!
這篇文章主要介紹Linux賬號(hào)管理的示例分析,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
一、用戶管理
1. 用戶賬號(hào)管理文件
要對(duì)Linux中的用戶賬號(hào)進(jìn)行管理,首先當(dāng)然應(yīng)該了解用戶賬號(hào)在Linux系統(tǒng)中是怎么保存的,這涉及到兩個(gè)文件——/etc/passwd與/etc/shadow,前者保存用戶的UID和GID等基本信息,后者則主要保存與賬號(hào)密碼相關(guān)的一些信息。
先來看看/etc/passwd這個(gè)文件存的是啥(這里只取前三行):
在此文件中,每個(gè)用戶賬號(hào)信息存為一行,每一行有7個(gè)欄位,從左到右存放的信息分別為:
(1)賬號(hào)名稱。
(2)密碼:早期Unix系統(tǒng)的密碼是放在這里的,但由于/etc/passwd這個(gè)文件能被很多程序讀取,不安全,后來密碼資料已經(jīng)放到文件/etc/shadow中,所以這里第二個(gè)欄位都是“x”。
(3)UID:0代表賬號(hào)為系統(tǒng)管理員,1-999代表系統(tǒng)賬號(hào),1000-6000則是一般使用者。
(4)GID:用戶初始群組的GID。
(5)用戶名全稱或賬號(hào)意義說明。
(6)家目錄:默認(rèn)為/home/賬號(hào)名稱。
(7)Shell:該賬號(hào)登入系統(tǒng)之后取得的shell。
再來看看/etc/shadow這個(gè)文件存的又是啥(這里只取前三行):
同樣的,在這個(gè)文件中也是每個(gè)賬號(hào)存為一行,共有9個(gè)欄位,從左到右存放的信息分別為:
(1)賬號(hào)名稱。
(2)密碼:加密之后的密碼。若以“!”開頭則表示密碼失效,賬號(hào)封鎖,暫時(shí)無法登錄。
(3)最近修改密碼的日期:這個(gè)欄位上的數(shù)字表示的是最近修改密碼的日期是在1970年1月1日的多少天之后。
(4)密碼不可修改的天數(shù):表示上一次修改密碼之后,幾天之后才能再次修改密碼。
(5)密碼需要再次修改的天數(shù)(密碼過期日):表示上一次修改密碼之后,幾天之內(nèi)需要再次修改密碼。
(6)在密碼過期日前幾天開始發(fā)出警告。
(7)密碼過期之后的賬號(hào)寬限天數(shù)(密碼失效日):密碼過期后幾天之內(nèi)賬號(hào)密碼還是可以使用,但是登入系統(tǒng)之后,系統(tǒng)會(huì)強(qiáng)制讓用戶修改密碼。若這幾天還是沒修改密碼,則過了這個(gè)時(shí)間密碼就失效了,無法再使用該賬號(hào)密碼登入系統(tǒng)。
(8)賬號(hào)失效日期:1970年1月1日的多少天之后賬號(hào)失效,無論密碼是否過期,賬號(hào)都無法再使用。
(9)暫時(shí)沒存信息,保留給新功能使用。
2. 用戶賬號(hào)管理操作
了解了Linux賬號(hào)和密碼在系統(tǒng)中的保存方式之后,我們還需要知道怎么去添加賬號(hào)、修改賬號(hào)信息,以及如何修改密碼等用戶管理操作,以下便一一作出說明。
(1)用戶賬號(hào)添加:
useradd [-u UID] [-g 初始群組] [-G 次要群組] [-m/M] [-c 賬號(hào)意義說明] [-d 家目絕對(duì)路徑] [-s shell] [-r] [-e 賬號(hào)失效日期,格式為YYYY-MM-DD] [-f 密碼是否會(huì)失效,0立刻失效,-1永不失效] 賬號(hào)名稱
這里列出useradd命令常用的一些選項(xiàng),可根據(jù)需要添加,其中-M表示強(qiáng)制不建立家目錄,-m表示強(qiáng)制建立家目錄,-r表示創(chuàng)建系統(tǒng)賬號(hào),更多選項(xiàng)需要自己使用man命令在系統(tǒng)中查看了。不過一般來說,我們創(chuàng)建用戶賬號(hào)的時(shí)候只要指定賬號(hào)名稱即可:useradd賬號(hào)名稱,這樣賬號(hào)的其他信息都會(huì)使用系統(tǒng)為我們?cè)O(shè)置的默認(rèn)值。在CentOS中,系統(tǒng)默認(rèn)會(huì)幫我們做的事情如下:
<1>在/etc/passwd建立一行與賬號(hào)相關(guān)的資料。
<2>在/etc/shadow建立一行與此賬號(hào)密碼相關(guān)的數(shù)據(jù),但是尚未有密碼。
<3>在/etc/group建立一行此賬號(hào)的初始群組信息,群組名稱與賬號(hào)名稱一致。
<4>在/etc/gshadow建立一行此賬號(hào)初始群組的密碼信息,但是沒有密碼。
<4>在/home中建立此賬號(hào)家目錄,目錄名稱與賬號(hào)名稱一致,權(quán)限為700。
那么useradd命令的這些默認(rèn)值是在哪里存放的呢?首先可以使用useradd -D查看部分默認(rèn)值(這里注解了各個(gè)參數(shù)的意義說明):
(最后一個(gè)參數(shù)為:是否建立郵件信箱)
這些參數(shù)實(shí)際上就保存在文件/etc/default/useradd中!
關(guān)于初始群組,有兩種機(jī)制:公共群組機(jī)制和私有群組機(jī)制。公共群組機(jī)制會(huì)使用這里的“GROUP=100”這個(gè)參數(shù)值作為新建賬號(hào)的初始群組,每個(gè)賬號(hào)都將屬于users這個(gè)群組,賬號(hào)之間可以分享家目錄中的資料,SuSE使用的就是這種機(jī)制。私有群組機(jī)制則不使用這個(gè)參數(shù),每個(gè)賬號(hào)都有各自的群組和家目錄,而且只有自己可以進(jìn)入自己的家目錄,使用這個(gè)機(jī)制的有RHEL,F(xiàn)edora,CentOS等。
“SKEL=/etc/skel”指定了創(chuàng)建賬號(hào)家目錄的內(nèi)容參考目錄,即新建賬號(hào)的家目錄中的內(nèi)容是從/etc/skel這個(gè)目錄中直接拷貝過去的!“CREATE_MAIL_SPOOL=yes”指定了系統(tǒng)會(huì)自動(dòng)幫新建賬號(hào)建立郵件信箱,即會(huì)創(chuàng)建“/var/spool/mail/賬號(hào)名稱”這個(gè)文件。
然而/etc/default/useradd這個(gè)文件只是設(shè)置了一些賬號(hào)的基本信息默認(rèn)值,更多參數(shù)默認(rèn)值可在/etc/login.defs文件中查看,里面設(shè)置了用戶UID、GID等更多參數(shù)默認(rèn)值與規(guī)范。
所以,總結(jié)起來,使用useradd命令創(chuàng)建賬號(hào)時(shí)會(huì)參考的文件有:/etc/default/useradd、/etc/login.defs、/etc/skel/*。
(2)用戶賬號(hào)修改:
修改用戶賬號(hào)可使用usermod命令,該命令的選項(xiàng)參數(shù)大都與useradd類似,這里不再贅述,只是有個(gè)特別的功能需要說明一下,那就是usermod可以使用-L和-U這兩個(gè)選項(xiàng)參數(shù)分別對(duì)賬號(hào)進(jìn)行凍結(jié)和解凍,凍結(jié)其實(shí)就是在/etc/shadow第二欄的密碼前面添加“!”,使得賬號(hào)密碼無法正常登錄,解凍則將其去除,恢復(fù)賬號(hào)登錄。
(3)用戶賬號(hào)刪除:
用戶賬號(hào)刪除使用命令:userdel 用戶賬號(hào),若加上-r選項(xiàng)則會(huì)連同使用者的家目錄也一起刪除。注意,userdel命令會(huì)將與指定賬號(hào)相關(guān)的東西統(tǒng)統(tǒng)刪除!
(4)賬號(hào)密碼修改:
使用useradd創(chuàng)建賬號(hào)之后,新建賬號(hào)還是無法登入系統(tǒng)的,還需要使用passwd命令設(shè)置密碼才行:
除了修改密碼,passwd命令還有以下用途:
<1>修改密碼屬性:passwd [-n 密碼不可修改的天數(shù)] [-x 密碼需要再次修改的天數(shù)] [-w 在密碼過期日前幾天開始發(fā)出警告] [-i 密碼過期之后的賬號(hào)失效寬限天數(shù)] 賬號(hào)名稱
<2>凍結(jié)密碼:passwd -l 賬號(hào)名稱,修改/etc/passwd,在密碼前加“!!”。(類似usermod -L)
<3>解凍密碼:passwd -u 賬號(hào)名稱。(類似usermod -U)
<4>查看密碼信息:passwd -S 賬號(hào)名稱。
除了passwd,還有一個(gè)命令可用于修改賬號(hào)密碼的信息,那就是chage:
chage [-d 最近修改密碼日期,格式為YYYY-MM-DD] [-m 密碼不可修改的天數(shù)] [-M 密碼需要再次修改的天數(shù)] [-W 在密碼過期日前幾天開始發(fā)出警告] [-I 密碼過期之后的賬號(hào)失效寬限天數(shù)] [-E 賬號(hào)失效日期,格式為YYYY-MM-DD]
此外,chage也可以用于查看賬號(hào)密碼信息,信息展示的格式比passwd -S指令更容易查看:
還可以通過“chage -d 0 賬號(hào)名稱”強(qiáng)制要求用戶在下一次登入系統(tǒng)時(shí)修改密碼!
3. 使用者功能
以上介紹的賬號(hào)管理操作,除了使用passwd修改自己密碼和部分信息查看操作,其他的都是只有系統(tǒng)管理員才能執(zhí)行的,下面介紹一下一般用戶能查看與修改信息的命令操作。
<1>id 賬號(hào)名稱:查看用戶UID和GID。
<2>finger:查詢當(dāng)前登入系統(tǒng)的所有用戶信息。
finger 賬號(hào)名稱:查詢某個(gè)賬號(hào)相關(guān)屬性。
<3>chfn:修改finger中展示的一些信息。
可以看到,實(shí)際上修改的信息都保存在/etc/passwd文件的第五欄中。(修改自己信息直接執(zhí)行“chfn”即可)
<4>chsh -l:查看當(dāng)前系統(tǒng)上所有可用的shell,即是/etc/shells中的內(nèi)容。
chsh -s:修改自己的shell。
二、群組管理
1. 群組管理文件
與用戶管理類似,想要了解群組管理,亦需要先來看看群組信息在Linux系統(tǒng)中是怎么保存的,群組信息涉及兩個(gè)文件——/etc/group和/etc/gshadow,前者保存群組基本信息,后者保存群組密碼信息。
先來看看/etc/group文件:
在此文件中,每個(gè)群組信息存為一行,每行4個(gè)欄位,從左到右存放信息分別為:
(1)群組名稱。
(2)群組密碼:已轉(zhuǎn)移到/etc/gshadow中存儲(chǔ),所以這里存“x”。
(3)GID。
(4)此群組中的所有用戶賬號(hào)成員列表。
再來看看/etc/gshadow文件:
在此文件中,每個(gè)群組信息存為一行,每行4個(gè)欄位,從左到右存放信息分別為:
(1)群組名稱。
(2)群組密碼:通常是給群組管理員使用的,少有設(shè)置。
(3)群組管理員的賬號(hào)。
(4)此群組中的所有用戶賬號(hào)成員列表。
2. 群組管理操作
(1)群組添加:
groupadd [-g gid] 群組名稱
(若是創(chuàng)建系統(tǒng)群組需加上-r選項(xiàng))
(2)群組修改:
groupmod [-g gid] [-n 群組新名稱] 群組名稱
(注意,不要隨意改動(dòng)GID,很容易造成系統(tǒng)資源的錯(cuò)亂)
(3)群組刪除:
groupdel 群組名稱
(若群組是某個(gè)用戶賬號(hào)的初始群組則會(huì)報(bào)錯(cuò),無法刪除)
(4)初始群組與有效群組:
用戶的初始群組是用戶登入系統(tǒng)之后就獲取到并擁有其相關(guān)權(quán)限的群組,也就是/etc/passwd文件第四個(gè)欄位上的GID對(duì)應(yīng)的群組。用戶在系統(tǒng)中可加入多個(gè)群組,而且可以使用所屬所有群組的權(quán)限與功能,但是創(chuàng)建文件或者目錄的時(shí)候,新建文件或目錄的群組則只能是當(dāng)前用戶當(dāng)前的有效群組。
可以使用命令“groups”查看當(dāng)前用戶加入的所有群組,列表中第一個(gè)群組即是當(dāng)前有效群組,可以使用命令“newgrp 群組名稱”切換有效群組,但是只能在當(dāng)前用戶加入的所有群組中切換。切換有效群組之后會(huì)進(jìn)入一個(gè)新的shell環(huán)境,可以使用“exit”命令來退出,回到原來有效群組和shell環(huán)境。
(5)用戶加入群組:
用戶想要加入某個(gè)群組有兩種方法,第一種方法是讓系統(tǒng)管理員root使用usermod命令進(jìn)行操作(-a選項(xiàng)組合-G選項(xiàng)):
(將用戶jet加入群組jet2)
第二種方法則是讓對(duì)應(yīng)群組的管理員使用gpasswd命令進(jìn)行操作。
首先需要系統(tǒng)管理員root指定這個(gè)群組的管理員,也是使用gpasswd命令操作。先來看看root操作:
<1>修改群組密碼:gpasswd 群組名稱
<2>設(shè)置群組管理員、用戶成員:gpasswd [-A 群組管理員賬號(hào)列表] [-M 用戶成員賬號(hào)列表] 群組名稱
<3>移除群組密碼:gpasswd -r 群組名稱
<4>使群組密碼失效:gpasswd -R 群組名稱
然后由群組管理員對(duì)群組用戶成員進(jìn)行管理:
三、使用者身份切換
1. su:
用戶登入Linux系統(tǒng)之后可以通過su命令切換到不同賬號(hào),通過exit命令退出,恢復(fù)到原來賬號(hào)。
(1)su 賬號(hào)名稱:以non-login shell方式切換身份,很多環(huán)境變量包括PATH都還是目前用戶的。
(2)su -/-l 賬號(hào)名稱:以login shell方式切換身份,所有環(huán)境變量都變成新賬號(hào)的。
(3)su - -c "指令" 賬號(hào)名稱:利用新身份執(zhí)行一條指令,執(zhí)行后身份恢復(fù)為當(dāng)前用戶。
(若不加上賬號(hào)名稱則表示切換到root身份)
2. sudo:
使用su命令切換身份是需要輸入新切換賬號(hào)的密碼的(只有root不需要),也就是說,若要使用su切換身份,就必須要知道新切換賬號(hào)的密碼才行。另一個(gè)命令sudo也可以切換身份執(zhí)行命令操作,而且只需要輸入當(dāng)前賬號(hào)密碼即可,無需知道新切換賬號(hào)的密碼,只是切換身份執(zhí)行命令之后會(huì)自動(dòng)恢復(fù)到原來賬號(hào)身份。指令格式如下:
sudo -u 賬號(hào)名稱 指令
(若是沒有指定賬號(hào)名稱則默認(rèn)是使用root身份執(zhí)行指令)
然而并不是所有的用戶賬號(hào)都能使用sudo命令并能隨意切換任何賬號(hào)的,需要在/etc/sudoers文件中配置相關(guān)信息才可以。此文件有規(guī)定語法,需要使用visudo指令來進(jìn)行編輯。通過/etc/sudoers文件可設(shè)置哪些用戶或群組可在哪些主機(jī)登入系統(tǒng)時(shí)切換到哪些賬號(hào)執(zhí)行哪些指令,還可以設(shè)置執(zhí)行sudo指令時(shí)無需輸入密碼。該文件部分內(nèi)容截圖如下:
以上是“Linux賬號(hào)管理的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。