24個(gè)必知必會(huì)的系統(tǒng)管理員面試問題
即將進(jìn)行系統(tǒng)管理員工作面試嗎?閱讀本文,了解你可能會(huì)遇到的一些問題以及可能的答案。
作為一個(gè)經(jīng)常與計(jì)算機(jī)打交道的極客,在碩士畢業(yè)后在 IT 行業(yè)選擇我的職業(yè)是很自然的選擇。因此,我認(rèn)為走上系統(tǒng)管理員之路是正確的路徑。在我的職業(yè)生涯中,我對(duì)求職面試過程非常熟悉?,F(xiàn)在來看一下對(duì)該職位的預(yù)期、職業(yè)發(fā)展道路,以及一系列常見面試問題及我的回答。
系統(tǒng)管理員的典型任務(wù)和職責(zé)
組織需要了解系統(tǒng)工作原理的人員,以確保數(shù)據(jù)安全并保持服務(wù)平穩(wěn)運(yùn)行。你可能會(huì)問:“等等,是不是系統(tǒng)管理員還能做更多的事情?”
你是對(duì)的?,F(xiàn)在,一般來說,讓我們看一下典型的系統(tǒng)管理員的日常任務(wù)。根據(jù)公司的需求和人員的技能水平,系統(tǒng)管理員的任務(wù)從管理臺(tái)式機(jī)、筆記本電腦、網(wǎng)絡(luò)和服務(wù)器到設(shè)計(jì)組織的 IT 策略不等。有時(shí),系統(tǒng)管理員甚至負(fù)責(zé)購買和訂購新的 IT 設(shè)備。
那些尋求系統(tǒng)管理工作以作為其職業(yè)發(fā)展道路的人可能會(huì)發(fā)現(xiàn),由于 IT 領(lǐng)域的快速變化是不可避免的,因此難以保持其技能和知識(shí)的最新狀態(tài)。所有人都會(huì)想到的下一個(gè)自然而然的問題是 IT 專業(yè)人員如何掌握最新的更新和技能。
簡(jiǎn)單的問題
這是你將遇到的一些最基本的問題,以及我的答案:
1、你在 *nix 服務(wù)器上登錄后鍵入的前五個(gè)命令是什么?
lsblk
以查看所有的塊設(shè)備信息who
查看誰登錄到服務(wù)器top
,以了解服務(wù)器上正在運(yùn)行的進(jìn)程df -khT
以查看服務(wù)器上可用的磁盤容量netstat
以查看哪些 TCP 網(wǎng)絡(luò)連接處于活動(dòng)狀態(tài)
2、如何使進(jìn)程在后臺(tái)運(yùn)行,這樣做的好處是什么?
你可以通過在命令末尾添加特殊字符
&
來使進(jìn)程在后臺(tái)運(yùn)行。通常,執(zhí)行時(shí)間太長(zhǎng)并且不需要用戶交互的應(yīng)用程序可以放到后臺(tái),以便我們可以在終端中繼續(xù)工作。(引文)
3、以 root 用戶身份運(yùn)行這些命令是好事還是壞事?
由于兩個(gè)主要問題,以 root 身份運(yùn)行(任何命令)是不好的。第一個(gè)是風(fēng)險(xiǎn)。當(dāng)你以 root 身份登錄時(shí),無法避免你由于粗心大意而犯錯(cuò)。如果你嘗試以帶有潛在危害的方式更改系統(tǒng),則需要使用
sudo
,它會(huì)引入一個(gè)暫停(在你輸入密碼時(shí)),以確保你不會(huì)犯錯(cuò)。第二個(gè)原因是安全。如果你不知道管理員用戶的登錄信息,則系統(tǒng)更難被攻擊。擁有 root 的訪問權(quán)限意味著你已經(jīng)能夠進(jìn)行管理員身份下的一半工作任務(wù)。
4、rm
和 rm -rf
有什么區(qū)別?
rm
命令本身僅刪除指明的文件(而不刪除目錄)。使用-rf
標(biāo)志,你添加了兩個(gè)附加功能:-r
(或等價(jià)的-R
、--recursive
)標(biāo)志可以遞歸刪除目錄的內(nèi)容,包括隱藏的文件和子目錄;而-f
(或--force
)標(biāo)志使rm
忽略不存在的文件,并且從不提示你進(jìn)行確認(rèn)。
5、有一個(gè)大小約為 15GB 的 Compress.tgz
文件。你如何列出其內(nèi)容,以及如何僅提取出特定文件?
要列出文件的內(nèi)容:
tar tf archive.tgz
要提取特定文件:
tar xf archive.tgz filename
有點(diǎn)難度的問題
這是你可能會(huì)遇到的一些較難的問題,以及我的答案:
6、什么是 RAID?什么是 RAID 0、RAID 1、RAID 5、RAID 6 和 RAID 10?
RAID(廉價(jià)磁盤冗余陣列)是一種用于提高數(shù)據(jù)存儲(chǔ)性能和/或可靠性的技術(shù)。RAID 級(jí)別為:
- RAID 0:也稱為磁盤條帶化,這是一種分解文件并將數(shù)據(jù)分布在 RAID 組中所有磁盤驅(qū)動(dòng)器上的技術(shù)。它沒有防止磁盤失敗的保障。(引文)
- RAID 1:一種流行的磁盤子系統(tǒng),通過在兩個(gè)驅(qū)動(dòng)器上寫入相同的數(shù)據(jù)來提高安全性。RAID 1 被稱為鏡像,它不會(huì)提高寫入性能,但讀取性能可能會(huì)提高到每個(gè)磁盤性能的總和。另外,如果一個(gè)驅(qū)動(dòng)器發(fā)生故障,則會(huì)使用第二個(gè)驅(qū)動(dòng)器,發(fā)生故障的驅(qū)動(dòng)器需要手動(dòng)更換。更換后,RAID 控制器會(huì)將可工作的驅(qū)動(dòng)器的內(nèi)容復(fù)制到新驅(qū)動(dòng)器上。
- RAID 5:一種磁盤子系統(tǒng),可通過計(jì)算奇偶校驗(yàn)數(shù)據(jù)來提高安全性和提高速度。RAID 5 通過跨三個(gè)或更多驅(qū)動(dòng)器交錯(cuò)數(shù)據(jù)(條帶化)來實(shí)現(xiàn)此目的。在單個(gè)驅(qū)動(dòng)器發(fā)生故障時(shí),后續(xù)讀取可以從分布式奇偶校驗(yàn)計(jì)算出,從而不會(huì)丟失任何數(shù)據(jù)。
- RAID 6:通過添加另一個(gè)奇偶校驗(yàn)塊來擴(kuò)展 RAID 5。此級(jí)別至少需要四個(gè)磁盤,并且可以在任何兩個(gè)并發(fā)磁盤故障的情況下繼續(xù)執(zhí)行讀/寫操作。RAID 6 不會(huì)對(duì)讀取操作造成性能損失,但由于與奇偶校驗(yàn)計(jì)算相關(guān)的開銷,因此確實(shí)會(huì)對(duì)寫入操作造成性能損失。
- RAID 10:RAID 10 也稱為 RAID 1 + 0,它結(jié)合了磁盤鏡像和磁盤條帶化功能來保護(hù)數(shù)據(jù)。它至少需要四個(gè)磁盤,并且跨鏡像對(duì)對(duì)數(shù)據(jù)進(jìn)行條帶化。只要每個(gè)鏡像對(duì)中的一個(gè)磁盤起作用,就可以檢索數(shù)據(jù)。如果同一鏡像對(duì)中的兩個(gè)磁盤發(fā)生故障,則所有數(shù)據(jù)將丟失,因?yàn)閹^(qū)集中沒有奇偶校驗(yàn)。(引文)
7、ping
命令使用哪個(gè)端口?
ping
命令使用 ICMP。具體來說,它使用 ICMP 回顯請(qǐng)求和應(yīng)答包。ICMP 不使用 UDP 或 TCP 通信服務(wù):相反,它使用原始的 IP 通信服務(wù)。這意味著,ICMP 消息直接承載在 IP 數(shù)據(jù)報(bào)數(shù)據(jù)字段中。
8、路由器和網(wǎng)關(guān)之間有什么區(qū)別?什么是默認(rèn)網(wǎng)關(guān)?
路由器描述的是一種通用技術(shù)功能(第 3 層轉(zhuǎn)發(fā))或用于該目的的硬件設(shè)備,而網(wǎng)關(guān)描述的是本地網(wǎng)段的功能(提供到其他地方的連接性)。你還可以說“將路由器設(shè)置為網(wǎng)關(guān)”。另一個(gè)術(shù)語是“跳”,它描述了子網(wǎng)之間的轉(zhuǎn)發(fā)。
術(shù)語默認(rèn)網(wǎng)關(guān)表示局域網(wǎng)上的路由器,它的責(zé)任是作為對(duì)局域網(wǎng)外部的計(jì)算機(jī)通信的第一個(gè)聯(lián)系點(diǎn)。
9、解釋一下 Linux 的引導(dǎo)過程。
BIOS -> 主引導(dǎo)記錄(MBR) -> GRUB -> 內(nèi)核 -> 初始化 -> 運(yùn)行級(jí)
10、服務(wù)器啟動(dòng)時(shí)如何檢查錯(cuò)誤消息?
內(nèi)核消息始終存儲(chǔ)在 kmsg 緩沖區(qū)中,可通過
dmesg
命令查看。引導(dǎo)出現(xiàn)的問題和錯(cuò)誤要求系統(tǒng)管理員結(jié)合某些特定命令來查看某些重要文件,這些文件不同版本的 Linux 處理方式不同:
/var/log/boot.log
是系統(tǒng)引導(dǎo)日志,其中包含系統(tǒng)引導(dǎo)過程中展開的所有內(nèi)容。/var/log/messages
存儲(chǔ)全局系統(tǒng)消息,包括系統(tǒng)引導(dǎo)期間記錄的消息。/var/log/dmesg
包含內(nèi)核環(huán)形緩沖區(qū)信息。
11、符號(hào)鏈接和硬鏈接有什么區(qū)別?
符號(hào)鏈接(軟鏈接)實(shí)際是到原始文件的鏈接,而硬鏈接是原始文件的鏡像副本。如果刪除原始文件,則該軟鏈接就沒有用了,因?yàn)樗赶虻奈募淮嬖诹?。如果是硬鏈接,則完全相反。如果刪除原始文件,則硬鏈接仍然包含原始文件中的數(shù)據(jù)。(引文)
12、如何更改內(nèi)核參數(shù)?你可能需要調(diào)整哪些內(nèi)核選項(xiàng)?
要在類 Unix 系統(tǒng)中設(shè)置內(nèi)核參數(shù),請(qǐng)首先編輯文件
/etc/sysctl.conf
。進(jìn)行更改后,保存文件并運(yùn)行sysctl -p
命令。此命令使更改永久生效,而無需重新啟動(dòng)計(jì)算機(jī)
13、解釋一下 /proc
文件系統(tǒng)。
/proc
文件系統(tǒng)是虛擬的,并提供有關(guān)內(nèi)核、硬件和正在運(yùn)行的進(jìn)程的詳細(xì)信息。由于/proc
包含虛擬文件,因此稱為“虛擬文件系統(tǒng)”。這些虛擬文件具有獨(dú)特性。其中大多數(shù)顯示為零字節(jié)。虛擬文件,例如
/proc/interrupts
、/proc/meminfo
、/proc/mounts
和/proc/partitions
,提供了系統(tǒng)硬件的最新信息。其他諸如/proc/filesystems
和/proc/sys
目錄提供系統(tǒng)配置信息和接口。
14、如何在沒有密碼的情況下以其他用戶身份運(yùn)行腳本?
例如,如果你可以編輯 sudoers 文件(例如
/private/etc/sudoers
),則可以使用visudo
添加以下內(nèi)容:
user1 ALL =(user2)NOPASSWD:/opt/scripts/bin/generate.sh
15、什么是 UID 0 toor 帳戶?是被入侵了么?
toor
用戶是備用的超級(jí)用戶帳戶,其中toor
是root
反向拼寫。它預(yù)期與非標(biāo)準(zhǔn) shell 一起使用,因此root
的默認(rèn) shell 不需要更改。此用途很重要。這些 shell 不是基本發(fā)行版的一部分,而是從 ports 或軟件包安裝的,它們安裝在
/usr/local/bin
中,默認(rèn)情況下,位于其他文件系統(tǒng)上。如果 root 的 shell 位于/usr/local/bin
中,并且未掛載包含/usr/local/bin
的文件系統(tǒng),則 root 無法登錄以解決問題,并且系統(tǒng)管理員必須重新啟動(dòng)進(jìn)入單用戶模式來輸入 shell 程序的路徑。
更難的問題
這是你可能會(huì)遇到的甚至更困難的問題:
16、tracert
如何工作,使用什么協(xié)議?
命令
tracert
(或traceroute
,具體取決于操作系統(tǒng))使你可以準(zhǔn)確地看到在連接到最終目的地的連接鏈條中所觸及的路由器。如果你遇到無法連接或無法ping
通最終目的地的問題,則可以使用tracert
來幫助你確定連接鏈在何處停止。(引文)通過此信息,你可以聯(lián)系正確的人;無論是你自己的防火墻、ISP、目的地的 ISP 還是中間的某個(gè)位置。
tracert
命令像ping
一樣使用 ICMP 協(xié)議,但也可以使用 TCP 三步握手的第一步來發(fā)送 SYN 請(qǐng)求以進(jìn)行響應(yīng)。
17、使用 chroot
的主要優(yōu)點(diǎn)是什么?我們何時(shí)以及為什么使用它?在 chroot 環(huán)境中,mount /dev
、mount /proc
和 mount /sys
命令的作用是什么?
chroot 環(huán)境的優(yōu)點(diǎn)是文件系統(tǒng)與物理主機(jī)是隔離的,因?yàn)?chroot 在文件系統(tǒng)內(nèi)部有一個(gè)單獨(dú)的文件系統(tǒng)。區(qū)別在于
chroot
使用新創(chuàng)建的根目錄(/
)作為其根目錄。chroot 監(jiān)獄可讓你將進(jìn)程及其子進(jìn)程與系統(tǒng)其余部分隔離。它僅應(yīng)用于不以 root 身份運(yùn)行的進(jìn)程,因?yàn)?root 用戶可以輕松地脫離監(jiān)獄。
該思路是創(chuàng)建一個(gè)目錄樹,在其中復(fù)制或鏈接運(yùn)行該進(jìn)程所需的所有系統(tǒng)文件。然后,你可以使用
chroot()
系統(tǒng)調(diào)用來告訴它根目錄現(xiàn)在位于此新樹的基點(diǎn)上,然后啟動(dòng)在該 chroot 環(huán)境中運(yùn)行的進(jìn)程。由于該命令因此而無法引用修改后的根目錄之外的路徑,因此它無法在這些位置上執(zhí)行惡意操作(讀取、寫入等)。(引文)
18、如何保護(hù)你的系統(tǒng)免遭黑客攻擊?
遵循最低特權(quán)原則和這些做法:
- 使用公鑰加密,它可提供出色的安全性。
- 增強(qiáng)密碼復(fù)雜性。
- 了解為什么要對(duì)上述規(guī)則設(shè)置例外。
- 定期檢查你的例外情況。
- 讓具體的人對(duì)失敗負(fù)責(zé)。(它使你保持警惕。)(引文)
19、什么是 LVM,使用 LVM 有什么好處?
LVM(邏輯卷管理)是一種存儲(chǔ)設(shè)備管理技術(shù),該技術(shù)使用戶能夠合并和抽象化組件存儲(chǔ)設(shè)備的物理布局,從而可以更輕松、靈活地進(jìn)行管理。使用設(shè)備映射器的 Linux 內(nèi)核框架,當(dāng)前迭代(LVM2)可用于將現(xiàn)有存儲(chǔ)設(shè)備收集到組中,并根據(jù)需要從組合的空間分配邏輯單元。
20、什么是粘性端口?
粘性端口是網(wǎng)絡(luò)管理員最好的朋友,也是最頭痛的事情之一。它們?cè)试S你設(shè)置網(wǎng)絡(luò),以便通過將交換機(jī)上的每個(gè)端口鎖定到特定的 MAC 地址,僅允許一臺(tái)(或你指定的數(shù)字)計(jì)算機(jī)在該端口上進(jìn)行連接。
21、解釋一下端口轉(zhuǎn)發(fā)?
嘗試與安全的網(wǎng)絡(luò)內(nèi)部的系統(tǒng)進(jìn)行通信時(shí),從外部進(jìn)行通信可能非常困難,這是很顯然的。因此,在路由器本身或其他連接管理設(shè)備中使用端口轉(zhuǎn)發(fā)表可以使特定流量自動(dòng)轉(zhuǎn)發(fā)到特定目的地。例如,如果你的網(wǎng)絡(luò)上運(yùn)行著一臺(tái) Web 服務(wù)器,并且想從外部授予對(duì)該服務(wù)器的訪問權(quán)限,則可以將端口轉(zhuǎn)發(fā)設(shè)置為該服務(wù)器上的端口 80。這意味著在 Web 瀏覽器中輸入你的(外網(wǎng))IP 地址的任何人都將立即連接到該服務(wù)器的網(wǎng)站。
請(qǐng)注意,通常不建議允許從你的網(wǎng)絡(luò)外部直接訪問服務(wù)器。
22、對(duì)于 IDS,誤報(bào)和漏報(bào)是什么?
當(dāng)入侵檢測(cè)系統(tǒng)(IDS)設(shè)備為實(shí)際上沒有發(fā)生的入侵生成警報(bào)時(shí),這是誤報(bào)(假陽性)。如果設(shè)備未生成任何警報(bào),而入侵實(shí)際上已發(fā)生,則為漏報(bào)(假陰性)。
23、解釋一下 :(){ :|:& };:
,如果已經(jīng)登錄系統(tǒng),如何停止此代碼?
這是一枚復(fù)刻炸彈。它分解如下:
:()
定義了函數(shù),以:
作為函數(shù)名,并且空括號(hào)表示它不接受任何參數(shù)。{}
是函數(shù)定義的開始和結(jié)束。:|:
將函數(shù):
的副本加載到內(nèi)存中,并將其輸出通過管道傳遞給函數(shù):
的另一個(gè)副本,該副本也必須加載到內(nèi)存中。&
使前一個(gè)命令行成為后臺(tái)進(jìn)程,因此即使父進(jìn)程被自動(dòng)殺死,子進(jìn)程也不會(huì)被殺死。:
執(zhí)行該函數(shù),因此連鎖反應(yīng)開始。保護(hù)多用戶系統(tǒng)的最佳方法是使用特權(quán)訪問管理(PAM)來限制用戶可以使用的進(jìn)程數(shù)。
復(fù)刻炸彈的最大問題是它發(fā)起了太多進(jìn)程。因此,如果你已經(jīng)登錄系統(tǒng),我們有兩種嘗試解決此問題的方法。一種選擇是執(zhí)行一個(gè)
SIGSTOP
命令來停止進(jìn)程,例如:
killall -STOP -u user1
如果由于占用了所有進(jìn)程而無法使用命令行,則必須使用
exec
強(qiáng)制其運(yùn)行:
exec killall -STOP -u user1
對(duì)于復(fù)刻炸彈,最好的選擇是防患于未然。
24、什么是 OOM 殺手,它如何決定首先殺死哪個(gè)進(jìn)程?
如果內(nèi)存被進(jìn)程徹底耗盡,可能會(huì)威脅到系統(tǒng)的穩(wěn)定性,那么內(nèi)存不足(OOM)殺手就登場(chǎng)了。
OOM 殺手首先必須選擇要?dú)⑺赖淖罴堰M(jìn)程。最佳在這里指的是在被殺死時(shí)將釋放最大內(nèi)存的進(jìn)程,并且對(duì)系統(tǒng)來說最不重要。主要目標(biāo)是殺死最少數(shù)量的進(jìn)程,以最大程度地減少造成的損害,同時(shí)最大化釋放的內(nèi)存量。
為了實(shí)現(xiàn)此目標(biāo),內(nèi)核為每個(gè)進(jìn)程維護(hù)一個(gè)
oom_score
。你可以在/proc
文件系統(tǒng)中的pid
目錄下的看到每個(gè)進(jìn)程的oom_score
:
$ cat /proc/10292/oom_score
任何進(jìn)程的
oom_score
值越高,在內(nèi)存不足的情況下被 OOM 殺手殺死的可能性就越高。(引文)
總結(jié)
系統(tǒng)管理人員的薪水差別很大,有些網(wǎng)站上說年薪在 70,000 到 100,000 美元之間,具體取決于地點(diǎn)、組織的規(guī)模以及你的教育水平以及多年的工作經(jīng)驗(yàn)。系統(tǒng)管理的職業(yè)道路最終歸結(jié)為你對(duì)使用服務(wù)器和解決那些酷問題的興趣。現(xiàn)在,我要說,繼續(xù)前進(jìn),實(shí)現(xiàn)你的夢(mèng)想之路吧!