【BASH】回顧與知識點梳理 二十六
- 二十六. 二十一至二十五章知識點總結及練習
- 26.1 總結
- 26.2 模擬
- 26.3 簡答題
該系列目錄 --> 【BASH】回顧與知識點梳理(目錄)
二十六. 二十一至二十五章知識點總結及練習
26.1 總結
- Linux 操作系統上面,關于賬號與群組,其實記錄的是 UID/GID 的數字而已;
- 使用者的賬號/群組與 UID/GID 的對應,參考 /etc/passwd 及 /etc/group 兩個文件
- /etc/passwd 文件結構以冒號隔開,共分為七個字段,分別是『
賬號名稱
、密碼
、UID
、GID
、全名(注釋)
、家目錄
、shell
』 - UID 只有 0 與非為 0 兩種,0為root,非為 0 則為一般賬號。一般賬號又分為系統賬號 (1~999) 及可登入者賬號(大于 1000)
- 賬號的密碼已經移動到 /etc/shadow 文件中,該文件權限為僅有 root 可以更動。該文件分為九個字段,內容為『
賬號名稱
、加密密碼
、密碼更動日期
、密碼最小可變動日期
、密碼最大需變動日期
、密碼過期前警告日數
、密碼失效天數
、賬號失效日
、保留未使用
』 - 使用者可以支持多個群組,其中在新建文件時會影響新文件群組者,為
有效群組
。而寫入 /etc/passwd 的第四個字段者, 稱為初始群組
。 - 與使用者建立、更改參數、刪除有關的指令為:useradd, usermod, userdel 等,密碼建立則為 passwd;
- 與群組建立、修改、刪除有關的指令為:groupadd, groupmod, groupdel 等;
- 群組的觀察與有效群組的切換分別為:groups 及 newgrp 指令;
- useradd 指令作用參考的文件有: /etc/default/useradd, /etc/login.defs, /etc/skel/ 等等
- 觀察用戶詳細的密碼參數,可以使用『 chage -l 賬號 』來處理;
- 用戶自行修改參數的指令有: chsh, chfn 等,觀察指令則有: id, finger 等
- ACL 的功能需要文件系統有支持,CentOS 7 預設的 XFS 確實有支持 ACL 功能!
- ACL 可進行單一個人或群組的權限管理,但 ACL 的啟動需要有文件系統的支持;
- ACL 的設定可使用 setfacl ,查閱則使用 getfacl ;
- 身份切換可使用 su ,亦可使用 sudo ,但使用 sudo 者,必須先以 visudo 設定可使用的指令;
- PAM 模塊可進行某些程序的驗證程序!與 PAM 模塊有關的配置文件位于
/etc/pam.d/*
及/etc/security/*
- 系統上面賬號登入情況的查詢,可使用 w, who, last, lastlog 等;
- 在線與使用者交談可使用 write, wall,脫機狀態下可使用 mail 傳送郵件!
26.2 模擬
情境模擬題一:想將本服務器的賬號分開管理,分為單純郵件使用,與可登入系統賬號兩種。其中若為純郵件賬號時, 將該賬號加入 mail 為初始群組,且此賬號不可使用 bash 等 shell 登入系統。若為可登入賬號時, 將該賬號加入 youcan 這個次要群組。
- 目標:了解 /sbin/nologin 的用途;
- 前提:可自行觀察使用者是否已經建立等問題;
- 需求:需已了解 useradd, groupadd 等指令的用法;
解決方案如下:
- 預先察看一下兩個群組是否存在?
[root@study ~]# grep mail /etc/group
[root@study ~]# grep youcan /etc/group
[root@study ~]# groupadd youcan
- 開始建立三個郵件賬號,此賬號名稱為 pop1, pop2, pop3 ,且密碼與賬號相同。可使用如下的程序來處理:
[root@study ~]# vim popuser.sh
#!/bin/bash
for username in pop1 pop2 pop3
do
useradd -g mail -s /sbin/nologin -M $username
echo $username | passwd --stdin $username
done
[root@study ~]# sh popuser.sh
- 開始建立一般賬號,只是這些一般賬號必須要能夠登入,并且需要使用次要群組的支持!所以:
[root@study ~]# vim loginuser.sh
#!/bin/bash
for username in youlog1 youlog2 youlog3
do
useradd -G youcan -s /bin/bash -m $username
echo $username | passwd --stdin $username
done
[root@study ~]# sh loginuser.s
- 這樣就將賬號分開管理了!非常簡單吧!
26.3 簡答題
-
root 的 UID 與 GID 是多少?而基于這個理由,我要讓 test 這個賬號具有 root 的權限,應該怎么作?
/etc/passwd root:x:0:0... test:x:0:0...
理論上:root 的 UID 與 GID 均為 0 ,所以要讓 test 變成 root 的權限,那么就將 /etc/passwd 里面, test 的 UID 與 GID 字段變成 0 即可!
實際上:別這么搞! -
假設我是一個系統管理員,我有一個用戶最近不乖,所以我想暫時將他的賬號停掉, 讓他近期無法進行任何動作,等到未來他乖一點之后,我再將他的賬號啟用,請問:我可以怎么作比較好??
passwd -l yurq
由于這個賬號是暫時失效的,所以不能使用 userdel 來刪除,否則很麻煩!那么應該如何設定呢?再回去瞧一瞧 /etc/shadow 的架構,可以知道有這幾個可使用的方法:
- 將 /etc/passwd 的 shell 字段寫成 /sbin/nologin ,即可讓該賬號暫時無法登入主機;
- 將 /etc/shadow 內的密碼字段,增加一個 * 號在最前面,這樣該賬號亦無法登入!
- 將 /etc/shadow 的第八個字段關于賬號取消日期的那個,設定小于目前日期的數字,那么他就無法登入系統了!
-
我在使用 useradd 的時候,新增的賬號里面的 UID, GID 還有其他相關的密碼控制,都是在哪幾個文件里面設定的?
在 /etc/login.defs 還有 /etc/default/useradd 里面規定好的!UID:/etc/passwd,/etc/shadowGID:/etc/group,/etc/gshadow
-
我希望我在設定每個賬號的時候( 使用 useradd ),預設情況中,他們的家目錄就含有一個名稱為 www 的子目錄,我應該怎么作比較好?
mkdir /etc/skel/WWW
-
簡單說明系統賬號與一般用戶賬號的差別?
系統賬號的shell一般都是/sbin/nologin,無法登錄,沒有家目錄,一般而言,為了讓系統能夠順利以較小的權限運作,UID一般再1~999之間 -
簡單說明,為何 CentOS 建立使用者時,他會主動的幫使用者建立一個群組,而不是使用 /etc/default/useradd 的設定?
不同的 linux distributions 對于使用者 group 的建立機制并不相同。主要的機制分為:- Public group schemes: 用戶將會直接給予一個系統指定的群組,一般來說即是 users , 可以 SuSE Server 9 為代表;
- Private group schemes: 系統會建立一個與賬號一樣的組名!以 CentOS 7.x 為例!
-
如何建立一個使用者名稱 alex, 他所屬群組為 alexgroup, 預計使用 csh, 他的全名為 “Alex Tsai”, 且他還得要加入 users 群組當中!
[root@node-135 ~]# useradd -s /bin/csh -g alexgroup -G users -c "Alex Tsai" alex1
-
由于種種因素,導致你的用戶家目錄以后都需要被放置到 /account 這個目錄下。 請問,我該如何作,可以讓使用 useradd 時,默認的家目錄就指向 /account ?
最簡單的方法,編輯 /etc/default/useradd ,將里頭的 HOME=/home 改成 HOME=/account 即可。 -
我想要讓 dmtsai 這個使用者,加入 vbird1, vbird2, vbird3 這三個群組,且不影響 dmtsai 原本已經支持的次要群組時,該如何動作?
usermod -a -G vbird1,vbird2,vbird3 dmtsai
該系列目錄 --> 【BASH】回顧與知識點梳理(目錄)