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