系統簡介,發展歷程,主要特性,基本思想,完全免費,兼容POSIX,多用戶、多任務,良好的界面,支持多種平台,系統優勢,代碼開源,網路功能強大,系統工具鏈完整,系統功能,開發工具,嵌入式,伺服器,Linux貢獻,使用說明,安全加固,安全認證,檔案系統安全,系統軟體安全,
系統簡介
Linux,Linux Is Not UniX 的
遞歸縮寫,一般指GNU/Linux,是一套免費使用和自由傳播的類Unix作業系統,是一個遵循POSIX的多用戶、多任務、支持多執行緒和多
CPU的作業系統。
伴隨著
網際網路的發展,Linux得到了來自全世界軟體愛好者、組織、公司的支持。它除了在
伺服器方面保持著強勁的發展勢頭以外,在個人電腦、
嵌入式系統上都有著長足的進步。使用者不僅可以直觀地獲取該作業系統的實現機制,而且可以根據自身的需要來修改完善Linux,使其最大化地適套用戶的需要。
Linux不僅系統性能穩定,而且是
開源軟體。其核心
防火牆組件性能高效、配置簡單,保證了系統的安全。在很多企業網路中,為了追求速度和安全,Linux不僅僅是被網路運維人員當作伺服器使用,甚至當作網路防火牆,這是Linux的一大亮點。
Linux具有
開放源碼、沒有著作權、技術社區用戶多等特點,開放源碼使得用戶可以自由裁剪,靈活性高,功能強大,成本低。尤其系統中內嵌網路協定棧,經過適當的配置就可實現
路由器的功能。這些特點使得Linux成為開發路由交換設備的理想開發平台。
發展歷程
20世紀80年代,
計算機硬體的性能不斷提高,PC的市場不斷擴大,當時可供計算機選用的作業系統主要有Unix、
DOS和MacOS這幾種。
Unix價格昂貴,不能運行於
PC;
DOS顯得簡陋,且
原始碼被軟體廠商嚴格保密;
MacOS是一種專門用於蘋果計算機的作業系統。
此時,計算機科學領域迫切需要一個更加完善、強大、廉價和完全開放的作業系統。由於供教學使用的典型作業系統很少,因此當時在
荷蘭當教授的美國人AndrewS.Tanenbaum編寫了一個
作業系統,名為
MINIX,為了向學生講述作業系統內部工作原理。
MINIX雖然很好,但只是一個用於教學目的的簡單作業系統,而不是一個強有力的實用作業系統,然而最大的好處就是公開原始碼。全世界學計算機的學生都通過鑽研MINIX原始碼來了解電腦里運行的MINIX作業系統,
芬蘭赫爾辛基大學大學二年級的學生Linus Torvalds就是其中一個。在吸收了MINIX精華的基礎上,Linus於1991年寫出了屬於自己的Linux作業系統,版本為Linux0.01,是Linux時代開始的標誌。他利用Unix的核心,去除繁雜的核心程式,改寫成適用於一般計算機的x86系統,並放在網路上供大家下載,1994年推出完整的核心Version1.0。至此,Linux逐漸成為功能完善、穩定的作業系統,並被廣泛使用。
2021年6月,根據Linux 5.14剛剛進入合併佇列的char-misc-next提交,Linux 5.14正式移除了RAW驅動。
2022年6月,基於 Ubuntu 22.04 的 Linux Lite 6.0 正式版發布,提供最新的
瀏覽器,最新的辦公套件,最新的定製軟體,代號“Fluorite”。
2022年11月6日訊息,微軟將為 Linux 帶來嵌套式
虛擬化支持,可運行多個 Windows。
2022年11 月,微軟在 GitHub 上線了 WSL 1.0.0 版本,宣布 Windows 11/10 的 Linux 子系統刪除 Preview 標籤,迎來正式版。
2022年11月,在本周的 platform-drivers-x86 提交合併中,Linux 6.1 新增支持了微軟 Surface Pro 9 和 Surface Laptop 5 兩款設備。
2022年12月12日,Linus Torvalds 搶在聖誕假期之前發布了最新的 Linux 6.1 核心穩定版,從此開啟了 Linux 6.2 合併視窗。截止到2023年初大家可以在核心
官網找到相應的檔案。
2022年12月14日,Linux 6.2 合併視窗擴展了對 Arm SoC 的支持並更新了 DeviceTree。本次更新在核心中新增了對 7 款高通驍龍處理器的支持,還在 Mainline 中初步支持蘋果的 M1 Pro / M1 Ultra / M1 Max 型號
處理器。
2022年12月15日,Linux 6.2 合併視窗期內已經確認將會合併大量網路子系統更新。和以往版本相同,Linux 6.2 核心更新周期在網路功能上有大量的改進,更多的細節可以訪問這條 pull。
2022年12月 28 日訊息,在 Linux 6.2 合併視窗期,英特爾工程師提交的
線性地址掩碼(Linear Address Masking,簡稱 LAM)提案遭到了 Linus Torvalds 的拒絕。英特爾工程師2023年初再次提交第 13 個版本,希望在 Linux 6.3 或者更高版本中合併該功能。
2023年1月9日訊息,Linus Torvalds 推出了 Linux Kernel 6.2 的第 3 個候選版本更新。
2023年3月27日訊息,Linus Torvalds 發布了 Linux Kernel 6.3 的第 4 個維護版本更新,這意味著 6.3 的開發周期已經走過了一半路程。
2023年5月3日,IT之家訊息:Uri Herrera於4月底發布了 Nitrux 2.8 系統,這是基於 Debian 和 systemd-free 的 GNU / Linux 發行版,重點是 KDE 軟體和 Plasma 桌面。
2023年5月29日,MX Linux 開發人員宣布,MX Linux 23“Libretto”版本 Beta 版公開測試已全面推出。
2023年6月26日,Linux 6.4 核心已正式發布,這次更新帶來了許多改進,比如對蘋果 M2 晶片的初步支持、存儲性能的提升、
感測器監控的改善,以及更多的 Rust 代碼。
2024年2月3日訊息,開源社區“Linux 中國”官方公眾號發文宣布,該社區主網、公眾號、視頻號及下屬的《硬核觀察》欄目將無限期停止更新、運營。
主要特性
基本思想
Linux的基本思想有兩點:第一,一切都是檔案;第二,每個檔案都有確定的用途。其中第一條詳細來講就是系統中的所有都歸結為一個檔案,包括
命令、
硬體和
軟體設備、
作業系統、
進程等等對於作業系統
核心而言,都被視為擁有各自特性或類型的檔案。至於說Linux是基於Unix的,很大程度上也是因為這兩者的基本思想十分相近。
完全免費
Linux是一款免費的作業系統,用戶可以通過網路或其他途徑免費獲得,並可以任意修改其
原始碼。這是其他的作業系統所做不到的。正是由於這一點,來自全世界的無數
程式設計師參與了Linux的修改、編寫工作,
程式設計師可以根據自己的興趣和靈感對其進行改變,這讓Linux吸收了無數程式設計師的精華,不斷壯大。
兼容POSIX
這使得可以在Linux下通過相應的
模擬器運行常見的
DOS、Windows的程式。這為用戶從Windows轉到Linux奠定了基礎。許多用戶在考慮使用Linux時,就想到以前在Windows下常見的程式是否能正常運行,這一點就消除了他們的疑慮。
多用戶、多任務
Linux支持多用戶,各個用戶對於自己的檔案設備有自己特殊的權利,保證了各用戶之間互不影響。
多任務則是現代電腦最主要的一個特點,Linux可以使多個程式同時並獨立地運行。
良好的界面
Linux同時具有字元界面和
圖形界面。在字元界面用戶可以通過鍵盤輸入相應的
指令來進行操作。它同時也提供了類似Windows圖形界面的X-Window系統,用戶可以使用滑鼠對其進行操作。在X-Window環境中就和在Windows中相似,可以說是一個Linux版的Windows。
支持多種平台
Linux可以運行在多種
硬體平台上,如具有
x86、680x0、SPARC、Alpha等處理器的平台。此外Linux還是一種嵌入式作業系統,可以運行在掌上電腦、機頂盒或遊戲機上。2001年1月份發布的Linux 2.4版核心已經能夠完全支持
Intel64位晶片架構。同時Linux也支持多處理器技術。多個處理器同時工作,使系統性能大大提高。
系統優勢
代碼開源
網路功能強大
Linux繼承了
Unix的特性,具有非常強大的網路功能,其支持所有的網際網路協定,包括TCP/
IPv4、
TCP/IPv6和鏈路層拓撲程式等,且可以利用Unix的網路特性開發出新的協定棧;
系統工具鏈完整
Linux系統工具鏈完整,簡單操作就可以配置出合適的開發環境,可以簡化開發過程,減少開發中仿真工具的障礙,使
系統具有較強的移植性;
系統功能
系統核心的路由轉發
Linux作業系統嵌入了
TCP/IP協定棧,協定軟體具有路由轉發功能。路由轉發依賴作為路由器的主機中安裝多塊
網卡,當某一塊網卡接收到
數據包後,系統核心會根據數據包的目的IP位址,查詢
路由表,然後根據查詢結果將數據包傳送到另外一塊網卡,最後通過此網卡把數據包傳送出去。此主機的處理過程就是路由器完成的核心功能。
通過修改Linux系統核心參數ip_forward的方式實現路由功能,系統使用sysctl命令配置與顯示在/proc/sys目錄中的核心參數。首先在命令行輸入:cat /proc/sys/net/
ipv4/ip_forwad,檢查Linux核心是不是開啟IP轉發功能。如果結果為1,表明路由轉發功能已經開啟;如果結果為0,表明沒有開啟。出於安全考慮,Linux核心默認是禁止數據包路由轉發的。在linux系統中,有臨時和永久兩種方法啟用轉發功能。
臨時啟用:此種方法只對當前會話起作用,系統重啟後不再啟用。臨時開啟的命令格式:sysctl–wnet.ipv4.ip_forward=1。
永久啟用:此種永久性的啟用IP轉發功能,通過更改配置檔案/etc/sysctl.conf中的語句行“net.ipv4.ip_forward=0”,修改為“net.ipv4.ip_forward=1”,保存配置檔案後執行命令sysctl–p/etc/sysctl.conf,配置便立即啟用。
開發工具
Linux已經成為工作、娛樂和個人生活等多個領域的支柱,人們已經越來越離不開它。在Linux的幫助下,技術的變革速度超出了人們的想像,Linux開發的速度也以指數規模增長。因此,越來越多的開發者也不斷地加入開源和學習Linux開發的潮流當中。在這個過程之中,合適的工具是必不可少的,可喜的是,隨著Linux的發展,大量適用於Linux的開發工具也不斷成熟。
容器
放眼現實,如今已經是容器的時代了。容器既極其容易部署,又可以方便地構建開發環境。如果針對的是特定的平台的開發,將開發流程所需要的各種工具都創建到容器映像中是一種很好的方法,只要使用這一個容器映像,就能夠快速啟動大量運行所需服務的實例。
版本控制工具
如果正在開發一個大型項目,又或者參與團隊開發,版本控制工具是必不可少的,它可以用於記錄
代碼變更、提交代碼以及合併代碼。如果沒有這樣的工具,項目幾乎無法妥善管理。
文本編輯器
如果沒有
文本編輯器,在Linux上開發將會變得異常艱難。當然,
文本編輯器之間孰優孰劣,具體還是要取決於開發者的需求。
集成開發環境
集成開發環境(Integrated Development Environment,
IDE) 是包含一整套全面的工具、可以實現一站式功能的開發環境。
文本比較工具
有時候會需要比較兩個檔案的內容來找到它們之間的不同之處,它們可能是同一檔案的兩個不同副本(例如有一個經過編譯,而另一個沒有)。這種情況下,肯定不想要憑藉肉眼來找出差異,而是想要使用像
Med這樣的工具。
嵌入式
對Linux進行適當的修改和刪減,並且能夠在
嵌入式系統上使用的系統,就是嵌入式Linux作業系統。具有如下的特點:
Linux系統是完全開放、免費的。正是開放性,它才能和其他系統互相兼容,進而實現信息的互聯。而且它可以任意修改原始碼,這是其他系統所不具備的。
Linux作業系統的顯著優勢是多用戶和多任務。保證了多個用戶使用互不影響;多任務獨立開後,互不干擾,使得效率方面大大提高,可以充分把性能發揮出來。
設備是獨立的。只要安裝驅動程式,在
驅動程式的支持和幫助下,任何用戶都可以像使用檔案一樣,對任意設備進行使用和操作,這使得人們完全不用考慮設備存在的具體形式。
伺服器
Linux伺服器是設計出來進行業務處理套用的,在網路和計算機系統當中有廣泛的套用,可以提供資料庫管理和網路服務等內容,是一種性能非常高的和開源的
伺服器,在中國的
計算機系統的
客戶端當中,有很多採用的就是Linux系統,其使用的範圍非常廣泛,用戶體驗反應較好。但是對於一些希望計算機套用性能比較高的單位而言,
windows系統需要經常進行資源整合和碎片化管理,系統在配置的時候經常需要重新啟動,這就無法避免產生停機的問題。同時,由於Linux系統的處理能力非常強悍,具備不可比擬的
穩定性特徵,因而Linux系統就不用經常進行重啟,Linux系統的變化可以在配置的過程中實現,所以Linux伺服器出現故障的機率比較小,所以很多企業組織在計算機配置的過程中經常使用Linux系統,從而降低
伺服器發生崩潰的可能性,很多企業在配置Linux系統的時候,都是通過減少伺服器的故障發生率,實現企業業務的高效運轉。
Linux貢獻
核心開發者採用的是一種鬆散的基於時間的發布流程,每次發行都嚴格遵循關於合併補丁的規則。在每個開發周期的開始,稱之為“合併視窗”打開。此時,被視為足夠穩定且被開發社區接受的代碼會被合併進主線核心。新開發周期的大部分改動(以及所有主要的改動)都將在此期間併入,在高峰期,這個速度接近每天1000項改動(“補丁”或“變更集”)。
合併視窗大約持續兩周時間。在此期間結束後,Linus Torvalds會宣布視窗關閉,並發布第一個“rc”核心。例如,預定為5.6的核心,結束合併視窗後的版本發布將被稱為5.6-rc1. 這個-rc1版本的發布標記著新特性的合併時間已經過去,下個核心的穩定階段已經開始。
在接下來的六至十周內,主要提交給主線的補丁應該是修復問題的補丁。偶爾會允許進入一些更重大的改動,但這種情況極為罕見;那些嘗試在合併視窗之外合併新特性的開發者通常會受到不友好的接待。一般規則是,如果錯過了某個特性的合併視窗,最好的辦法是等待下個開發周期。(硬體驅動的情況有時是一個例外,對於沒有得到支持的硬體驅動,如果它們沒有接觸到任何tree內的代碼,那么它們就不可能引起回歸,應該在任何時候都安全添加。)
有且只有一個人能將補丁合併到主線核心庫:Linus Torvalds 。但以2.6.38核心為例,超過9500的補丁只有112個(約占1.3%)是由Linus自己直接選擇的。核心項目早已發展到一個規模,在這個規模下沒有任何單個開發者可能完全自主地審核和選擇每一個補丁。核心開發者處理這種生長的方式是通過建立基於信任鏈的中尉系統。
核心代碼庫按照邏輯被分解成一系列的子系統:網路、具體的架構支持、記憶體管理、視頻設備等等。每個子系統都有一個指定的維護者,這個開發者負責該子系統內的所有代碼。這些子系統的維護者在某種程度上可以看做是他們管理的核心部分的守門人;他們是將會(通常)接受一個補丁並將其包含到主線核心的人。
子系統維護者各自管理著他們的核心原始碼樹,大多數情況(但肯定不是總是)使用git原始碼管理工具。像git這樣的工具(以及其他相關的工具,如quilt或mercurial)允許維護者跟蹤一系列的補丁,包括作者信息和其他元數據。在任何特定時間,維護者可以識別出在他或她的倉庫中未被找到在主線中的哪些補丁。
當合併視窗打開時,頂層維護者會要求Linus從他們的倉庫中“拉取”他們為合併選擇的補丁。如果Linus同意,這些補丁將流入他的倉庫,成為主線核心的一部分。Linus對於在拉取操作中接收到的特定補丁給予多大的注意力是不定的。很明顯,有時候,他會仔細查看。但一般來說,Linus相信子系統維護者不會傳送不好的補丁。
反過來,子系統維護者可以從其他維護者那裡拉取補丁。例如,網路樹是從專門用於網路設備驅動,無線網路等樹中累積的補丁構建的。這個倉庫鏈可以任意長,儘管它很少超過兩到三個環節。由於鏈中的每個維護者信任那些管理更低等級樹的人,所以這個過程被稱為“信任鏈”。
顯然,在這樣的系統中,將補丁合併到核心取決於找到正確的維護者。直接向Linus傳送補丁通常並不是正確的做法。
使用說明
常用命令及技巧
1、date:列印或者設定系統的日期和時間
2、stty-a:可以查看或者列印控制字元(Ctrl-C、Ctrl-D、Ctrl-Z等)
3、passwd:用passwd-h查看
4、login、 logout : shell的登錄和註銷命令
5、more,less,head tail:顯示或部分顯示檔案內容
6、lp/lpstat/cancel,lpr/lpq/lprm:列印檔案
7、chmod u+x:更改檔案許可權
8、rm -fr dir:刪除非空目錄
9、cp -R dir:拷貝目錄
10、fg jobid:可以將一個
後台進程放到前台
11、kill的作用:send a signal to a process、eg:kill-9傳送的是SIG_KILL信號,具體傳送什麼信號可以通過man kill查看、
12、ps的用法,ps-e或ps-o pid,ppid,session,tpgid,comm(其中session顯示的sessionid,tpgid顯示前台進程組id,comm顯示命令名稱)
13 ip a 查看ip地址信息的命令
14 zcat /proc/config.gz (尖號) config 到核心配置檔案
安全加固
用戶賬戶以及登錄安全
刪除多餘用戶和用戶組。Linux是多用戶作業系統,存在很多種不一樣的角色系統賬號,當安裝完成作業系統之後,系統會默認為未添加許用戶組及用戶,若是部分用戶或是用戶組不需要,應當立即刪除它們,否則黑客很有可能利用這些賬號,對伺服器實施攻擊。具體保留哪些賬號,可以依據伺服器的用途來決定。
關閉不需要的
系統服務。作業系統安裝完成之後,其會在安裝的過程當中,會自主的啟動各種類型的服務程式內容,對於長時間運行的伺服器而言,其運行的
服務程式越多,則系統的安全性就越低。所以,用戶或是用戶組就需要將一些套用不到的服務程式進行關閉,這對提升系統的安全性能,有著極大的幫助。
密碼安全策略。在Linux之下,遠程的登錄系統具備兩種認證的形式:即
密鑰與密碼認證。其中,密鑰認證的形式,主要是將
公鑰儲存在遠程的伺服器之上,
私鑰存儲在本地。當進行系統登錄的時候,再通過本地的私鑰,以及遠程的伺服器公鑰,進行配對認證的操作,若是認證的匹配度一致,則用戶便能夠暢通無阻的登錄系統。此類認證的方式,並不會受到暴力破解的威脅。與此同時,只需要確保本地私鑰的安全,使其不會被黑客所盜取即可,攻擊者便不能夠通過此類認證方式登錄到系統中。所以,推薦使用密鑰方式進行系統登錄。
有效套用su、
sudo命令。su命令的作用的是對用戶進行切換。當管理員登錄到系統之後,使用su命令切換到超級用戶角色來執行一些需要超級許可權的命令。但是由於超級用戶的許可權過大,同時,需要管理人員知道
超級用戶密碼,因此su命令具有很嚴重的管理風險。
sudo命令允許系統賦予普通用戶一些超級許可權,並且不需普通用戶切換到超級用戶。因此,在管理上應當細化許可權分配機制,使用sudo命令為每一位管理員服務其特定的管理許可權。
安全認證
遠程登錄套用
SSH登錄方式。telnet是一類存在安全隱患的登錄認證服務,其在網路之上利用明文傳輸內容,黑客很容易通過截獲telnet數據包,獲得用戶的登錄口令。並且telnet服務程式的安全驗證方式存在較大的安全隱患,使其成為黑客攻擊的目標。SSH服務則會將數據進行加密傳輸,能夠防止
DNS欺騙以及IP欺騙,並且傳輸的數據是經過壓縮,在一定程度上保證了伺服器遠程連線的安全。
檔案系統安全
加固系統重要檔案。在Linux系統中,如果黑客取得超級許可權,那么他在作業系統裡面就不會再有任何的限制地做任何事情。在這種情況下,一個加固的檔案系統將會是保護系統安全的最後一道防線。管理員可通過
chattr命令鎖定系統一些重要檔案或目錄。
檔案許可權檢查與修改。如果作業系統當中的重要檔案的許可權設定不合理,則會對作業系統的安全性,產生最為直接的影響。所以,系統的運行維護人員需要及時的察覺到許可權配置不合理的檔案和目錄,並及時修正,以防安全事件發生。
安全設定/tmp、/var/tmp、/dev/shm。在該
作業系統當中,其用於存放
臨時檔案的目錄,主要有兩個,分別為/tmp與/var/tmp。它們有個共同特點,就是所有的用戶可讀可寫和執行,這樣就對系統產生了安全隱患。針對這兩個目錄進行設定,不允許這兩個目錄下執行
應用程式。
系統軟體安全
絕大多數的伺服器遭受攻擊是因為系統軟體或者應用程式有重大漏洞。黑客通過這些漏洞,可以輕鬆地侵入伺服器。管理員應定期檢查並修復漏洞。最常見的做法是升級軟體,將軟體保持在最新版本狀態。這樣就可以在一定程度上降低系統被入侵的可能性。