5.3 用戶密碼管理
密碼對于一個用戶來說是非常關(guān)鍵的,而密碼管理也是系統(tǒng)管理員的一項非常重要的任務(wù)。
5.3.1 命令passwd
賬戶創(chuàng)建后,默認(rèn)是沒有設(shè)置密碼的,只有設(shè)置好密碼后,才可以登錄系統(tǒng)。為了安全,在為用戶創(chuàng)建密碼時,請盡量設(shè)置復(fù)雜一些。阿銘建議你按照如下規(guī)則設(shè)置密碼:
長度大于10個字符;
密碼中包含大小寫字母、數(shù)字以及特殊字符*、&、%等;
不規(guī)則性(不要出現(xiàn)happy、love、linux、7758520、111111等單詞或者數(shù)字);
密碼中不要帶有自己的名字、電話、生日以及公司名字等。
為用戶設(shè)置密碼時,可以使用命令passwd,其格式為passwd [username]。該命令后面若不加用戶名字,則是為自己設(shè)定密碼,示例命令如下:
?
# passwd 更改用戶root的密碼 。 新的密碼: 重新輸入新的密碼: passwd:所有的身份驗證令牌已經(jīng)成功更新。
?
如果你登錄的是root賬戶,后面可以跟普通賬戶的名字,意思是修改指定賬戶的密碼,示例命令如下:
?
# passwd user11 更改用戶 user11 的密碼 。 新的密碼: 重新輸入新的密碼: passwd:所有的身份驗證令牌已經(jīng)成功更新。
?
需要注意的是,只有root才可以修改其他賬戶的密碼,普通賬戶只能修改自己的密碼。
5.3.2 命令mkpasswd
命令mkpasswd用于生成密碼。我們安裝的Linux默認(rèn)是沒有這個命令的,需要安裝一個expect軟件包,安裝命令如下:
?
# yum install -y expect # mkpasswd vYIg|y43q
?
有時,我們需要生成指定長度的密碼,用mkpasswd命令也可以滿足。比如,生成12位長度的密碼,示例命令如下:
?
# mkpasswd -l 12 4Kj3a$Voygxc
?
當(dāng)然,我們還可以指定密碼中有幾個特殊字符或幾個數(shù)字,示例命令如下:
?
# mkpasswd -l 12 -s 0 -d 3 e29kxw4aDZrt
?
上例中,-s指定特殊字符的個數(shù),-d指定數(shù)字的個數(shù)。用這個隨機(jī)字符串作為密碼再好不過了,只不過它不方便記憶。大家是否還記得第1章阿銘介紹的KeePass工具?大家把密碼記錄在這里,還是很方便的。
5.4 用戶身份切換
Linux系統(tǒng)中,有些事情只有root用戶才能做,普通用戶是不能做的,這時就需要臨時切換到root身份了。下面阿銘帶你做一個小試驗,創(chuàng)建test賬戶,并修改其密碼,這樣我們就可以使用test賬戶登錄Linux了。具體操作方法如下:
?
# useradd test # passwd test 更改用戶 test 的密碼 。 新的密碼: 重新輸入新的密碼: passwd:所有的身份驗證令牌已經(jīng)成功更新。
?
然后用test賬戶登錄Linux,示例命令如下:
?
login as: test test@192.168.188.128's password: $ whoami test
?
登錄后,使用whoami命令查看,發(fā)現(xiàn)當(dāng)前用戶是test。普通用戶和root用戶的shell提示符號有些區(qū)別,root賬戶是#,普通用戶是$。
5.4.1 命令su
命令su的格式為su [-] username,后面可以跟-,也可以不跟。普通用戶的su命令不加username時,就是切換到root用戶。當(dāng)然,root用戶同樣可以使用su命令切換到普通用戶。該命令加上-后,會初始化當(dāng)前用戶的各種環(huán)境變量(關(guān)于環(huán)境變量這部分內(nèi)容,阿銘放在第11章中講解)。下面阿銘做個簡單的試驗來說明加與不加-的區(qū)別,示例命令如下:
?
$ su - 密碼: # pwd /root 如果不加-切換到root賬戶時,當(dāng)前目錄沒有變化;而加上-切換到root賬戶時,當(dāng)前目錄為root賬戶的家目錄。這跟直接登錄root賬戶是一樣的。當(dāng)由root切換到普通用戶時,是不需要輸入密碼的。在root下切換到普通用戶示例命令如下: # su - test 上一次登錄:四 1月 2 0709 EST 2020從 192.168.72.1pts/2 上 $ whoami test
?
5.4.2 命令sudo
用su可以切換用戶身份,而且每個普通用戶都能切換到root身份。如果某個用戶不小心泄漏了root的密碼,那豈不是系統(tǒng)非常不安全?沒錯,為了改進(jìn)這個問題,Linux系統(tǒng)工程師設(shè)計了sudo這個命令。使用sudo命令執(zhí)行一個只有root才能執(zhí)行的命令是可以辦到的,但是需要輸入密碼。這個密碼并不是root的密碼,而是用戶自己的密碼。默認(rèn)情況下,只有root用戶能使用sudo命令,普通用戶想要使用sudo,是需要root預(yù)先設(shè)定的。我們可以使用visudo命令編輯相關(guān)的配置文件/etc/sudoers。如果沒有visudo這個命令,請使用命令yum install -y sudo安裝。
默認(rèn)root支持sudo,是因為這個文件中有一行root ALL=(ALL) ALL。在該行下面加入test ALL=(ALL) ALL,就可以讓test用戶擁有sudo的特權(quán)。從左到右,第一段test這里為一個用戶,指定讓哪個用戶有sudo特權(quán);第二段ALL=(ALL)比較難理解,左邊的ALL指的是所有的主機(jī),右邊的ALL指的是獲取哪個用戶的身份,第二段幾乎都不用配置;第三段設(shè)定可以使用sudo的命令有哪些。
使用visudo命令編輯/etc/sudoers配置文件(必須要使用root用戶),它的使用方法和前面阿銘介紹的vi命令一樣,即輸入i進(jìn)入編輯模式,編輯完成后,按Esc鍵,再輸入:wq完成保存。具體操作方法如下所示:
?
## Allow root to run any commands anywhere root ALL=(ALL) ALL test ALL=(ALL) ALL
?
此時可以驗證一下test賬戶的權(quán)限了,方法如下(如下操作是在root賬號下進(jìn)行的):
?
# su test $ ls //當(dāng)前目錄是在/root下 ls: 無法打開目錄'.': 權(quán)限不夠 $ sudo ls 我們信任您已經(jīng)從系統(tǒng)管理員那里了解了日常注意事項。 總結(jié)起來無外乎這三點: #1) 尊重別人的隱私。 #2) 輸入前要先考慮(后果和風(fēng)險)。 #3) 權(quán)力越大,責(zé)任越大。 [sudo] test 的密碼: 123 456 anaconda-ks.cfg
?
由于切換到test賬戶后當(dāng)前目錄還是/root,test賬戶沒有任何權(quán)限,所以使用命令ls查看時,提示權(quán)限不夠。然而使用命令sudo ls輸入test賬戶自身的密碼后,就有權(quán)限了。初次使用sudo命令時,會出現(xiàn)上面的一大段提示,當(dāng)再次使用sudo命令時則不再提示。
如果每增加一個用戶就設(shè)置一行,這樣太麻煩了,所以可以這樣設(shè)置:把# %wheel ALL=(ALL) ALL前面的#去掉,讓這一行生效。它的意思是,wheel這個組的所有用戶都擁有了sudo的權(quán)利。接下來,只要把需要設(shè)置sudo權(quán)限的所有用戶加入到wheel這個組中即可。如下所示:
?
## Allows people in group wheel to run all commands %wheel ALL=(ALL) ALL
?
配置文件/etc/sudoers包含了許多配置項,可以使用命令mansudoers來獲得幫助信息。下面阿銘介紹一個很實用的案例,我們的需求是把Linux服務(wù)器設(shè)置成這個樣子:只允許使用普通賬戶登錄,而普通賬戶登錄后,可以不輸入密碼就能用sudo切換到root賬戶。阿銘的配置方法是,輸入如下命令:
?
# visudo
?
然后在文件的最后加入如下3行:
?
User_Alias USER_SU = test, test1, aming Cmnd_Alias SU = /usr/bin/su USER_SU ALL=(ALL) NOPASSWD: SU
?
第一行設(shè)定了一個user別名,其實這個USER_SU相當(dāng)于是test、test1和aming三個賬戶;第二行設(shè)定了一個命令別名,SU相當(dāng)于/usr/bin/su;第三行我們剛剛介紹過。保存配置文件后,使用test、test1、aming這3個賬戶登錄Linux。執(zhí)行命令sudosu -切換到root賬戶,獲取root賬戶的所有權(quán)利,如下所示:
?
# su - test $ sudo su - # whoami root
?
不允許root直接登錄,這個問題如何解決呢?其實方法很簡單,即設(shè)置一個復(fù)雜得連自己都記不住的密碼。不過這樣也會有一個問題,就是普通用戶可以使用su命令切換到root,然后他再修改簡單的密碼就能直接登錄root了。其實阿銘還有一個更好的辦法。
5.4.3 不允許root遠(yuǎn)程登錄Linux
/etc/ssh/sshd_config為sshd服務(wù)的配置文件,默認(rèn)允許root賬戶通過ssh遠(yuǎn)程登錄Linux。要想不允許root用戶遠(yuǎn)程登錄Linux,具體操作方法為:修改配置文件/etc/ssh/sshd_config,在文件中查找PermitRootLoginyes并修改為PermitRootLogin no。保存配置文件后,需要重啟sshd服務(wù),如下所示:
?
# systemctl restart sshd.service
?
需要注意的是,阿銘提供的這個方法只適用于通過ssh遠(yuǎn)程登錄Linux的情況。
審核編輯:湯梓紅
?
評論
查看更多