簡介,Linux簡史,主要特性,優點,常用命令及技巧,Linux伺服器,系統核心的路由轉發,安全隱患及加固措施,用戶賬戶以及登錄安全,遠程訪問及登入認證安全,檔案系統的安全,系統軟體安全,開發工具,容器,版本控制工具,文本編輯器,集成開發環境,文本比較工具,嵌入式Linux,
簡介
Linux是一套免費使用和自由傳播的類Unix作業系統,是一個基於POSIX和Unix的多用戶、多任務、支持多執行緒和多
CPU的作業系統。伴隨著網際網路的發展,Linux得到了來自全世界軟體愛好者、組織、公司的支持。它除了在伺服器作業系統方面保持著強勁的發展勢頭以外,在個人電腦、
嵌入式系統上都有著長足的進步。使用者不僅可以直觀地獲取該作業系統的實現機制,而且可以根據自身的需要來修改完善這個作業系統,使其最大化地適套用戶的需要。
Linux不僅系統性能穩定,而且是開源軟體。其核心防火牆組件性能高效、配置簡單,保證了系統的安全。在很多企業網路中,為了追求速度和安全,Linux作業系統不僅僅是被網路運維人員當作伺服器使用,Linux既可以當作
伺服器,又可以當作網路防火牆是Linux的 一大亮點。
Linux與其他作業系統相比 ,具有
開放源碼、沒有著作權、技術社區用戶多等特點 ,開放源碼使得用戶可以自由裁剪,靈活性高,功能強大,成本低。尤其系統中內嵌網路協定棧 ,經過適當的配置就可實現路由器的功能。這些特點使得Linux成為開發路由交換設備的理想開發平台。
Linux簡史
Linux作業系統的誕生、發展和成長過程始終依賴著五個重要支柱:Unix作業系統、
MINIX作業系統、
GNU計畫、
POSIX標準和Internet網路。
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逐漸成為功能完善、穩定的作業系統,並被廣泛使用。
主要特性
基本思想
Linux的基本思想有兩點:第一,一切都是檔案;第二,每個軟體都有確定的用途。其中第一條詳細來講就是系統中的所有都歸結為一個檔案,包括
命令、
硬體和
軟體設備、
作業系統、
進程等等對於作業系統
核心而言,都被視為擁有各自特性或類型的檔案。至於說Linux是基於Unix的,很大程度上也是因為這兩者的基本思想十分相近。
完全免費
Linux是一款免費的作業系統,用戶可以通過網路或其他途徑免費獲得,並可以任意修改其
原始碼。這是其他的作業系統所做不到的。正是由於這一點,來自全世界的無數
程式設計師參與了Linux的修改、編寫工作,程式設計師可以根據自己的興趣和靈感對其進行改變,這讓Linux吸收了無數程式設計師的精華,不斷壯大。
完全兼容POSIX1.0標準
這使得可以在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也支持多處理器技術。多個處理器同時工作,使系統性能大大提高。
優點
1)Linux由眾多微核心組成,其原始碼完全開源;
2)Linux繼承了Unix的特性,具有非常強大的網路功能,其支持所有的網際網路協定,包括TCP/
IPv4、
TCP/IPv6和鏈路層拓撲程式等,且可以利用Unix的網路特性開發成出新的協定棧;
3)Linux系統工具鏈完整,簡單操作就可以配置出合適的開發環境,可以簡化開發過程,減少開發中仿真工具的障礙,使系統具有較強的移植性;
常用命令及技巧
一、 通用命令
1、date :列印或者設定系統的日期和時間
2、 stty -a:可以查看或者列印控制字元(Ctrl-C、Ctrl-D、 Ctrl-Z等)
3、 passwd:用passwd -h查看
4、logout,login: 登錄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顯示命令名稱)
二 、ubuntu常用命令:
1、 dpkg: package manager for Debian
* 安裝: dpkg -i package
* 卸載: dpkg -r package
* 卸載並刪除配置檔案: dpkg -P |--purge package
* 如果安裝一個包時、說依賴某些庫、 可以先 apt-get install somelib
* 查看軟體包安裝內容 :dpkg -L package
* 查看檔案由哪個軟體包提供: dpkg -S filename
* 另外 dpkg還有 dselect和aptitude 兩個frontend
2、 apt
* 安裝: apt-get install packs
* 更新源:apt-get update
* 升級系統:apt-get upgrade
* 智慧型升級、安裝新軟體包,刪除廢棄的軟體包:apt-get dist-upgrade
* f --fix broken 修復依賴:apt-get -f install
* 自動刪除無用的軟體:apt-get autoremove
* 刪除軟體:apt-get remove packages
* 刪除包並清除配置檔案:apt-get remove package --purge
* 清除所以刪除包的殘餘配置檔案: dpkg -l |grep ^rc|awk '{print $2}' |tr ["/n"] [" "]|sudo xargs dpkg -P
* 安裝軟體時候包的臨時存放目錄 : /var/cache/apt/archives
* 清除該目錄: apt-get clean
* 清除該目錄的舊版本的軟體快取: apt-get autoclean
* 查詢軟體some的依賴包: apt-cache depends some
* 查詢軟體some被哪些包依賴: apt-get rdepends some
* 搜尋軟體: apt-cache search name|regexp
* 查看軟體包的作用:apt-cache show package
* 查看一個軟體的編譯依賴庫: apt-cache showsrc packagename|grep Build-Depends
* 下載軟體的原始碼 : apt-get source packagename (註: sources、list 中應該有 deb-src 源)
* 安裝軟體包源碼的同時, 安裝其編譯環境 :apt-get build-dep packagename (有deb-src源)
* 如何將本地光碟加入安裝源列表: apt-cdrom add
3、 系統命令:
* 查看核心版本:uname -a
* 查看ubuntu 版本:cat /etc/issue
* 查看網卡狀態 :ethtool eth0
* 查看記憶體,cpu的信息:cat /proc/meminfo ; cat /proc/cpuinfo
* 列印檔案系統空間使用情況:df -h
* 查看硬碟分區情況:fdisk
* 產看檔案大小:du -h filename;
* 查看目錄大小:du -hs dirname ; du -h dirname是查看目錄下所有檔案的大小
* 查看記憶體的使用:free -m/-g/-k
* 查看進程:ps -e 或ps -aux -->顯示用戶
* 殺掉進程:kill pid
* 強制殺掉:killall -9 processname
4、 網路相關:
* 配置 ADSL: sudo pppoeconf
* ADSL手工撥號: sudo pon dsl-provider
* 激活 ADSL : sudo /etc/ppp/pppoe_on_boot
* 斷開 ADSL: sudo poff
* 根據IP查網卡地址: arping IP位址
* 產看本地網路信息(包括ip等): ifconfig | ifconfig eth0
* 查看路由信息: netstat -r
* 關閉網卡: sudo ifconfig eth0 down
* 啟用網卡: sudo ifconfig eth0 up
* 添加一個服務: sudo update-rc、d 服務名 defaults 99
* 刪除一個服務: sudo update-rc、d 服務名 remove
* 臨時重啟一個服務: /etc/init、d/服務名 restart
* 臨時關閉一個服務: /etc/init、d/服務名 stop
* 臨時啟動一個服務: /etc/init、d/服務名 start
* 控制台下顯示中文: sudo apt-get install zhcon
* 查找某個檔案: whereis filename 或 find 目錄 -name 檔案名稱
*通過ssh傳輸檔案
5、 壓縮:
*解壓縮 a、tar、gz: tar zxvf a、tar、gz
*解壓縮 a、tar、bz2: tar jxvf a、tar、bz2
*壓縮aaa bbb目錄為xxx、tar、gz: tar zcvf xxx、tar、gz aaa bbb
*壓縮aaa bbb目錄為xxx、tar、bz2: tar jcvf xxx、tar、bz2 aaa bbb
6、 Nautilus:
特殊 URI 地址
* computer:/// - 全部掛載的設備和網路
* network:/// - 瀏覽可用的網路
* burn:/// - 一個刻錄 CDs/DVDs 的數據虛擬目錄
* smb:/// - 可用的 windows/samba 網路資源
* x-nautilus-desktop:/// - 桌面項目和圖示
* file:/// - 本地檔案
* trash:/// - 本地資源回收筒目錄
* ftp:// - FTP 資料夾
* ssh:// - SSH 資料夾
* fonts:/// - 字型檔夾,可將字型檔拖到此處以完成安裝
* themes:/// - 系統主題資料夾
7、補充部分:
* 查看本地所有的tpc,udp監聽連線埠: netstat -tupln (t=tcp, u=udp, p=program, l=listen, n=numric)
* 通過man搜說相關命令: man -k keyword 、 eg: man -k user
* 或者用 apropos
* 統計檔案所占用的實際磁碟空間: du (du - estimate file space usage)
* 統計檔案中的字元,位元組數: wc -c/-l/-w (wc - print the number of newlines, words, and bytes in files)
* 查看檔案的內容: od -x/-c/ (od - dump files in octal and other formats)
查看檔案的 Ascii 碼形式: od -t c filename (其中統計信息最左邊的是: 位元組數)
* 查找命令所在檔案的位置: which od 輸出: /usr/bin/od
查看該檔案由哪個包提供: dpkg -S /usr/bin/od 輸出: coreutils: /usr/bin/od
再查看coreutils包的全部內容就知道了linux的核心命令: dpkg -L coreutils
* 快速貼上:先在一個地方選中文字,在欲貼上的地方按滑鼠 中鍵 即可、
* 等效中鍵:a 、按下滑輪等效於中鍵、b、同時按下滑鼠 左右鍵,等效於中鍵
* 快速重啟X服務: 同時按下: Alt + Ctrl + Backspace 三個鍵、
* 打開"運行"視窗: 同時按下 Alt + F2 鍵
* 截屏:
a、全螢幕:直接按下 PrtScr 鍵
b、當前視窗:同時按下 Alt + PrtScr 鍵
c、延時截屏:在 終端 或 "運行"視窗中輸入命令: gnome-screenshot --delay 3 ,將延時 3 秒後截屏、
8、ulimit
ulimit:顯示(或設定)用戶可以使用的資源的限制(limit),這限制分為軟限制(當前限制)和硬限制(上限),其中硬限制是軟限制的上限值,應用程式在運行過程中使用的系統資源不超過相應的軟限制,任何的超越都導致進程的終止
ulimited 不限制用戶可以使用的資源,但本設定對可打開的最大檔案數(max open files)和可同時運行的最大進程數(max user processes)無效
-a 列出所有當前資源極限
-c 設定core檔案的最大值、單位:blocks
-d 設定一個進程的數據段的最大值、單位:kbytes
-f Shell 創建檔案的檔案大小的最大值,單位:blocks
-h 指定設定某個給定資源的硬極限、如果用戶擁有 root 用戶許可權,可以增大硬極限、任何用戶均可減少硬極限
-l 可以鎖住的物理記憶體的最大值
-m 可以使用的常駐記憶體的最大值,單位:kbytes
-n 每個進程可以同時打開的最大檔案數
-p 設定管道的最大值,單位為block,1block=512bytes
-s 指定堆疊的最大值:單位:kbytes
-S 指定為給定的資源設定軟極限、軟極限可增大到硬極限的值、如果 -H 和 -S 標誌均未指定,極限適用於以上二者
-t 指定每個進程所使用的秒數,單位:seconds
-u 可以運行的最大並發進程數
-v Shell可使用的最大的虛擬記憶體,單位:kbytes
eg: ulimit -c 1000(可以先通過ulimit -c 查看原來的值)
Linux伺服器
Linux伺服器是設計出來進行業務處理套用的,在網路和計算機系統當中有廣泛的套用,可以提供資料庫管理和網路服務等內容,是一種性能非常高的和開源的伺服器,在我國的計算機系統的客戶端當中,有很多採用的就是Linux系統,其使用的範圍非常廣泛,用戶體驗反應較好。但是對於一些希望計算機套用性能比較高的單位而言,
windows系統需要經常進行資源整合和碎片化管理,系統在配置的時候經常需要重新啟動,這就無法避免產生停機的問題。同時,由於Linux系統的處理能力非常強悍,具備不可比擬的穩定性特徵,因而Linux系統就不用經常進行重啟,Linux系統的變化可以在配置的過程中實現,所以Linux伺服器出現故障的機率比較小,所以很多企業組織在計算機配置的過程中經常使用Linux系統,從而降低
伺服器發生崩潰的可能性,很多企業在配置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之下,遠程的登錄系統具備兩種認證的形式:即
密鑰與密碼認證。其中,密鑰認證的形式,主要是將
公鑰儲存在遠程的伺服器之上,
私鑰存儲在本地。當進行系統登入的時候,再通過本地的私鑰,以及遠程的伺服器公鑰,進行配對認證的操作,若是認證的匹配度一致,則用戶便能夠暢通無阻的登錄系統。此類認證的方式,並不會受到暴力破解的威脅。與此同時,只需要確保本地私鑰的安全,使其不會被黑客所盜取即可,攻擊者便不能夠通過此類認證方式登入到系統中。所以,推薦使用密鑰方式進行系統登入。
有效套用su、
sudo命令。su命令的作用的是對用戶進行切換。當管理員登錄到系統之後,使用su命令切換到超級用戶角色來執行一些需要超級許可權的命令。但是由於超級用戶的許可權過大,同時,需要管理人員知道超級用戶密碼,因此su命令具有很嚴重的管理風險。
sudo命令允許系統賦予普通用戶一些超級許可權,並且不需普通用戶切換到超級用戶。因此,在管理上應當細化許可權分配機制,使用sudo命令為每一位管理員服務其特定的管理許可權。
遠程訪問及登入認證安全
遠程登錄套用
SSH登入方式。telnet是一類存在安全隱患的登錄認證服務,其在網路之上利用明文傳輸內容,黑客很容易通過結果telnet數據包,獲得用戶的登入口令。並且telnet服務程式的安全驗證方式存在較大的安全隱患,使其成為黑客攻擊的目標。SSH服務則會將數據進行加密傳輸,能夠防止
DNS欺騙以及IP欺騙,並且傳輸的數據是經過壓縮,在一定程度上保證了伺服器遠程連線的安全。
檔案系統的安全
加固系統重要檔案。在Linux系統中,如果黑客取得超級許可權,那么他在作業系統裡面就不會再有任何的限制地做任何事情。在這種情況下,一個加固的檔案系統將會是保護系統安全的最後一道防線。管理員可通過
chattr命令鎖定系統一些重要檔案或目錄。
檔案許可權檢查與修改。如果作業系統當中的重要檔案的許可權設定不合理,則會對作業系統的安全性,產生最為直接的影響。所以,系統的運行維護人員需要及時的察覺到許可權配置不合理的檔案和目錄,並及時修正,以防安全事件發生。
安全設定/tmp、/var/tmp、/dev/shm。在該作業系統當中,其用於存放臨時檔案的目錄,主要有兩個,分別為/tmp與/var/tmp。它們有個共同特點,就是所有的用戶可讀可寫和執行,這樣就對系統產生了安全隱患。針對這兩個目錄進行設定,不允許這兩個目錄下執行應用程式。
系統軟體安全
絕大多數的伺服器遭受攻擊是因為系統軟體或者應用程式有重大漏洞。黑客通過這些漏洞,可以輕鬆地侵入伺服器。管理員應定期檢查並修復漏洞。最常見的做法是升級軟體,將軟體保持在最新版本狀態。這樣就可以在一定程度上降低系統被入侵的可能性。
開發工具
Linux已經成為工作、娛樂和個人生活等多個領域的支柱,人們已經越來越離不開它。在Linux的幫助下,技術的變革速度超出了人們的想像,Linux開發的速度也以指數規模增長。因此,越來越多的開發者也不斷地加入開源和學習Linux開發地潮流當中。在這個過程之中,合適的工具是必不可少的,可喜的是,隨著Linux的發展,大量適用於Linux的開發工具也不斷成熟。
容器
放眼現實,現在已經是容器的時代了。容器既及其容易部署,又可以方便地構建開發環境。如果針對的是特定的平台的開發,將開發流程所需要的各種工具都創建到容器映像中是一種很好的方法,只要使用這一個容器映像,就能夠快速啟動大量運行所需服務的實例。
版本控制工具
如果正在開發一個大型項目,又或者參與團隊開發,版本控制工具是必不可少的,它可以用於記錄代碼變更、提交代碼以及合併代碼。如果沒有這樣的工具,項目幾乎無法妥善管理。
文本編輯器
如果沒有文本編輯器,在Linux上開發將會變得異常艱難。當然,文本編輯器之間孰優孰劣,具體還是要取決於開發者的需求。
集成開發環境
集成開發環境(Integrated Developmem Envimnment,
IDE) 是包含一整套全面的工具、可以實現一站式功能的開發環境。
文本比較工具
有時候會需要比較兩個檔案的內容來找到它們之間的不同之處,它們可能是同一檔案的兩個不同副本(例如有一個經過編譯,而另一個沒有)。這種情況下,肯定不想要憑藉肉眼來找出差異,而是想要使用像
Med這樣的工具。
嵌入式Linux
對Linux進行適當的修改和刪減,並且能夠在嵌入式系統上使用的系統,就是嵌入式Linux作業系統。具有如下的特點:
Linux系統是完全開放、免費的。正是開放性,它才能和其他系統互相兼容,進而實現信息的互朕。而且它可以任意修改原始碼,這是其他系統所不具備的。
Linux作業系統的顯著優勢是多用戶和多任務。保證了多個用戶使用互不影響;多任務獨立開後,互不干擾,使得效率方面大大提高,可以充分把性能發揮出來。
設備是獨立的。只要安裝驅動程式,在驅動程式的支持和幫助下,任何用戶都可以像使用檔案一樣,對任意設備進行使用和操作,這使得人們完全不用考慮設備存在的具體形式。