2018-05-18 課堂筆記

目錄

一、認(rèn)識(shí) /etc/passwd/etc/shadow
二、用戶與用戶組的管理
三、用戶密碼管理
四、用戶身份切換

一、認(rèn)識(shí) /etc/passwd/etc/shadow

1. /etc/passwd解釋

[root@localhost ~]# cat /etc/passwd
root:   x:  0:  0: root:/root:/bin/bash
用戶名:密碼:UID:GID: 描述:家目錄: Shell
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
chocolee:x:1000:1000::/home/chocolee:/bin/bash
  • 第一列:用戶名,可以是大小寫(xiě)、數(shù)字、減號(hào)、點(diǎn)、下劃線的組合,但減號(hào)、點(diǎn)不建議使用
  • 第二列:用戶密碼,老版 UNIX 將密碼存在此處,但考慮到安全因素,后來(lái)將密碼放于 /etc/shadow
  • 第三列:UID,root 的 UID 為0,普通用戶的 UID 從1000開(kāi)始向后分配
  • 第四列:GID
  • 第五列:描述信息,如姓名、電話、地址等,可有可無(wú)
  • 第六列:用戶家目錄,普通用戶的家目錄默認(rèn)建在/home/下,但該字段可以自定義,使用戶家目錄不在 /home/
  • 第七列:用戶 shell,默認(rèn)為/bin/bash,也可以設(shè)置為/bin/nologin,這樣設(shè)置即不允許該用戶登錄

2. /etc/shadow解釋

[root@localhost ~]# cat /etc/shadow          

root:$6$ng8WooyA$ghFCJVR...........adgV0xw6Ay6ya0ViFKIWI    
/x9evitI5GoSTdFvg.:17660:0:99999:7:::
bin:*:16231:0:99999:7:::
daemon:*:16231:0:99999:7:::
sshd:!!:17658::::::
ntp:!!:17664::::::
chocolee:!!:       17665:            0:     99999:                7:::
用戶名:  密碼:上次改密的時(shí)間:下次可改密的時(shí)間:多少天后到期:密碼到期前的警告期限:賬號(hào)失效期限:賬號(hào)作廢期限:保留字段

第一列:用戶名,與/etc/passwd中對(duì)應(yīng)
第二列:密碼的密文(摘要算法為SHA-512)
第三列:上次更改密碼的日期,時(shí)間是從 UNIX 元年(1970-01-01)開(kāi)始的天數(shù)
第四列:過(guò)多少天可以修改密碼,默認(rèn)為0,表示不限制
第五列:密碼多少天后到期,默認(rèn)99999,表示永不過(guò)期
第六列:到期前幾天開(kāi)始警告,比如設(shè)置為 7,則到期前的第七天開(kāi)始告警
第七列:容忍期,比如設(shè)置為 5,則到期后的5天內(nèi)仍可登錄,超過(guò)5天則正式無(wú)法使用
第八列:保留字段

  • ps. 改密后,系統(tǒng)中會(huì)出現(xiàn) /etc/shadow-,這是系統(tǒng)自動(dòng)形成的備份

二、用戶與用戶組的管理

1. 新建組

  • 命令
    groupadd

  • 選項(xiàng)

    • -g:指定 GID
  • 例子

[root@localhost ~]# groupadd school && grep school /etc/group
school:x:1004:
[root@localhost ~]# groupadd -g 1111 hospital && grep hospital /etc/group
hospital:x:1111:

2. 刪除組

  • 命令
    groupdel

    注意:如果用戶組中包含用戶,只有從該用戶組中移出所包含的全部用戶才能刪除該用戶組

3. 新建用戶

  • 命令
    useradd

  • 選項(xiàng)

    • -u:指定 UID
    • -g:指定 GID 或組名
    • -d:指定家目錄
    • -s:指定 Shell
    • -M:不建立家目錄(但不影響 /etc/passwd 中記錄默認(rèn)的家目錄)
  • 例子

指定較全的選項(xiàng)

[root@localhost ~]# useradd -u 1212 -g school -d /etc -s /bin/bash James && grep James /etc/passwd
James:x:1212:1004::/etc:/bin/bash

不建立家目錄

[root@localhost ~]# useradd -M  Kevin.Love && grep Kevin /etc/passwd
Kevin.Love:x:1214:1214::/home/Kevin.Love:/bin/bash

注意:僅僅是不在文件系統(tǒng)中建立家目錄,但 /etc/passwd 中仍然根據(jù)默認(rèn)規(guī)則設(shè)定了家目錄

手動(dòng)建立家目錄

  1. 無(wú)家的用戶進(jìn)入系統(tǒng)會(huì)發(fā)現(xiàn)很怪
[root@localhost skel]# su - Kevin.Love
-bash-4.2$                 # 提示符都不對(duì)
  1. 為其手動(dòng)建立家目錄
[root@localhost skel]# mkdir /home/Kevin.Love
[root@localhost skel]# ls /home/
alice  Bond  choco  chocolee  darlen  Kevin.Love
  1. 拷貝家目錄模板
[root@localhost Kevin.Love]# cp /etc/skel/.bash* . && ls -a
.  ..  .bash_logout  .bash_profile  .bashrc
[root@localhost Kevin.Love]# su - Kevin.Love
上一次登錄:一 5月 21 23:07:42 CST 2018pts/0 上
[Kevin.Love@localhost ~]$                            # 這下就正常了

4. 刪除用戶

  • 命令
    userdel

  • 選項(xiàng)

    • -r:同時(shí)刪除用戶的數(shù)據(jù),如 家目錄、郵件等
  • 例子

僅進(jìn)行用戶刪除

[root@localhost ~]# ll /home/alice -d
drwx------. 2 alice alice 94 5月  16 00:21 /home/alice
[root@localhost ~]# userdel alice && !!
userdel alice && ll /home/alice -d
drwx------. 2 1001 1002 94 5月  16 00:21 /home/alice         #家目錄仍然存在

刪除用戶的同時(shí),刪除其數(shù)據(jù)

[root@localhost ~]# ll /home/bob/ -d
drwx------. 2 bob bob 94 5月  15 23:47 /home/bob/
[root@localhost ~]# userdel -r bob && ll -d /home/bob/
ls: 無(wú)法訪問(wèn)/home/bob/: 沒(méi)有那個(gè)文件或目錄

三、用戶密碼管理

1. 修改密碼

  • 命令
    passwd

  • 例子

修改自己的密碼

[chocolee@localhost ~]$ passwd
更改用戶 chocolee 的密碼 。
為 chocolee 更改 STRESS 密碼。
(當(dāng)前)UNIX 密碼:
新的 密碼:
重新輸入新的 密碼:
passwd:所有的身份驗(yàn)證令牌已經(jīng)成功更新。

修改其他用戶的密碼(僅 root 有該權(quán)限)

[root@localhost ~]# passwd chocolee
更改用戶 chocolee 的密碼 。
新的 密碼:
重新輸入新的 密碼:p
passwd:所有的身份驗(yàn)證令牌已經(jīng)成功更新。

2. 免交互修改密碼

  • 正常修改密碼(需要通過(guò)兩次交互)
[root@localhost ~]# passwd root
更改用戶 root 的密碼 。
新的 密碼:
重新輸入新的 密碼:
passwd:所有的身份驗(yàn)證令牌已經(jīng)成功更新。
  • 通過(guò)--stdin(僅需一次,但是是明文)
[root@localhost ~]# clear
[root@localhost ~]# passwd --stdin root
更改用戶 root 的密碼 。
12345678
passwd:所有的身份驗(yàn)證令牌已經(jīng)成功更新。
  • 僅通過(guò)管道符(相當(dāng)于半自動(dòng)地輸了兩次)
[root@localhost ~]# echo -e "choco12345\nchoco12345" | passwd root
更改用戶 root 的密碼 。
新的 密碼:重新輸入新的 密碼:passwd:所有的身份驗(yàn)證令牌已經(jīng)成功更新。
  • 管道符+--stdin(全自動(dòng))
[root@localhost ~]# echo "choco12345" | passwd --stdin root
更改用戶 root 的密碼 。
passwd:所有的身份驗(yàn)證令牌已經(jīng)成功更新。

3. 鎖定、解鎖用戶

  • 選項(xiàng)
    • -l:鎖定
    • -u:解鎖

例子:
鎖定用戶

[root@localhost ~]# passwd -l chocolee && !!
passwd -l chocolee && tail /etc/passwd
鎖定用戶 chocolee 的密碼 。
passwd: 操作成功
[root@localhost ~]# grep chocolee /etc/shadow
chocolee:!!$6$axUVEyOg$W.xHFI0aTcN4bg1RRFfwoNKGuMVRnvQImljFw.tuLJA7E./BNTk7DNkXI3aFFyShNu
nwAnmSTUu6.zJCqULaz.:17671:0:99999:7:::    # 用戶密碼的前面出現(xiàn)了兩個(gè)嘆號(hào)

解鎖用戶

[root@localhost ~]# passwd -u chocolee
解鎖用戶 chocolee 的密碼。
passwd: 操作成功

4. 產(chǎn)生隨機(jī)密碼

  • 命令
    mkpasswd (需要安裝 expect)
  • 選項(xiàng)
    • -l:指定密碼長(zhǎng)度
    • -s:指定特殊字符的個(gè)數(shù)
    • -d:指定數(shù)字的個(gè)數(shù)
    • -c:指定小寫(xiě)字母的個(gè)數(shù)
    • -C:指定大寫(xiě)字母的個(gè)數(shù)
  • 例子

生成一個(gè)長(zhǎng)12位,包含:4個(gè)特殊字符、2個(gè)大寫(xiě)、4個(gè)數(shù)字的密碼

[root@localhost ~]# mkpasswd -l 12 -s 4 -C 2 -d 4
<$7=[O10blU3

四、用戶身份切換

1. su

  • 完整切換用戶身份(連同目標(biāo)用戶的環(huán)境變量一起切過(guò)去)
[root@localhost ~]# su - chocolee
上一次登錄:一 5月 21 06:21:28 CST 2018pts/0 上
[chocolee@localhost ~]$ pwd
/home/chocolee
  • 非完整切換
[root@localhost ~]# su chocolee
[chocolee@localhost root]$ pwd
/root
  • 以用戶身份執(zhí)行某個(gè)命令(需要輸入目標(biāo)用戶的密碼)
[chocolee@localhost root]$ su -c "cat /etc/passwd" root
密碼:
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin

2. sudo

Ubuntu中常見(jiàn),一種比較安全的做法,僅需用戶輸入自己的密碼就能臨時(shí)以 root 的身份執(zhí)行某些命令

  • 用法
[chocolee@localhost ~]$ cat /etc/shadow     # chocolee 無(wú)權(quán)查看 /etc/shadow
cat: /etc/shadow: 權(quán)限不夠
[chocolee@localhost ~]$ sudo cat /etc/shadow   # 用 sudo 就可以
[sudo] password for chocolee:
root:$6$SuR.........spmAn4TrsRXFjnb3JL674lc   
ReBdb2CHhxL9siMAS0:17672:0:99999:7:::
bin:*:16231:0:99999:7:::
daemon:*:16231:0:99999:7:::
adm:*:16231:0:99999:7:::

3. /etc/sudoervisudo

誰(shuí)能使用 sudo,在哪使用,允許用 sudo 哪些命令,都是 root 在 /etc/sudoers 中配置的。
但該文檔遵循一定格式,所以不要手動(dòng)修改該文件,應(yīng)該用 visudo 進(jìn)行修改,visudo 具有語(yǔ)法校驗(yàn)功能

  • 文檔內(nèi)容解釋
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
chocolee   ALL=(ALL)       ALL

第一列:組、用戶、用戶別名——指定能使用sudo命令的用戶或組
第二列:本機(jī) IP 或主機(jī)名——指定在哪臺(tái)機(jī)子能夠使用sudo(常用于多臺(tái)策略不同的主機(jī),使用同一的 /etc/sudoers進(jìn)行限定時(shí),僅需要一個(gè)相同的 /etc/sudoers 文件,即可對(duì)應(yīng)不同的主機(jī))
第三列:以哪個(gè)用戶的身份執(zhí)行命令
第四列:命令——指定能使用 sudo 執(zhí)行哪些命令。該字段請(qǐng)用絕對(duì)路徑。

  • 限定可以使用的命令

/etc/sudoers

## The COMMANDS section may have other options added to it.
##
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
chocolee   ALL=(ALL)       /usr/bin/ls,/usr/bin/cat

效果:同樣的文件,能 cat,但不能 vim

[chocolee@localhost ~]$ sudo vim /etc/shadow
對(duì)不起,用戶 chocolee 無(wú)權(quán)以 root 的身份在 localhost.localdomain 上執(zhí)行 /bin/vim /etc/shadow。
[chocolee@localhost ~]$ sudo cat /etc/shadow
root:$6$SuR6vKTm$PFqHZ848a5uQUvq......ReBdb2CHhxL9siMAS0:17672:0:99999:7:::
bin:*:16231:0:99999:7:::
  • 不需要密碼即可執(zhí)行

/etc/sudoers

## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
chocolee   ALL=(ALL)       NOPASSWD:/usr/bin/ls,/usr/bin/cat

效果:不需要輸入密碼即可使用

[chocolee@localhost ~]$ sudo cat /etc/shadow
root:$6$SuR6vK..........rsRXFjnb3JL674lcReBdb2CHhxL9siMAS0:17672:0:99999:7:::
bin:*:16231:0:99999:7:::

4. 關(guān)于 su 的常用安全做法

首先,禁止 root 遠(yuǎn)程登錄(修改 /etc/ssh/sshd-config

#LoginGraceTime 2m
PermitRootLogin no             # 禁止 root 遠(yuǎn)程登錄

其次,設(shè)置詳細(xì)的 sudo 規(guī)則

(The End)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Ubuntu的發(fā)音 Ubuntu,源于非洲祖魯人和科薩人的語(yǔ)言,發(fā)作 oo-boon-too 的音。了解發(fā)音是有意...
    螢火蟲(chóng)de夢(mèng)閱讀 100,606評(píng)論 9 468
  • linux資料總章2.1 1.0寫(xiě)的不好抱歉 但是2.0已經(jīng)改了很多 但是錯(cuò)誤還是無(wú)法避免 以后資料會(huì)慢慢更新 大...
    數(shù)據(jù)革命閱讀 13,200評(píng)論 2 33
  • 《鳥(niǎo)哥的Linux私房菜》筆記 1、Linux的賬號(hào)與用戶組 如何管理好一個(gè)服務(wù)器主機(jī)的賬號(hào),以及在管理主機(jī)賬號(hào)時(shí)...
    Zhang21閱讀 2,010評(píng)論 0 5
  • Linux指令中文說(shuō)明傳送入口 整理自Linux指令中文說(shuō)明 man Linux 幫助文檔手冊(cè) man命令 是L...
    釋閑人閱讀 1,141評(píng)論 0 2
  • 今天是影子跟崗的第二天,我和同伴約好去實(shí)驗(yàn)小學(xué)明道分校聽(tīng)課學(xué)習(xí)。盡管我們?cè)诘蔚诬?chē)上催促師傅要趕在第一節(jié)課以前將我們...
    淡_0632閱讀 677評(píng)論 1 2

友情鏈接更多精彩內(nèi)容