20199317 《網絡攻防實踐》假期做業

做業說明shell

這個做業屬於哪一個課程 網絡攻防實踐(https://edu.cnblogs.com/campus/besti/19attackdefense)
這個做業的要求在哪裏 https://edu.cnblogs.com/campus/besti/19attackdefense/homework/10228
我在這個課程的目標是 學習網絡攻防相關知識,並經過實踐深刻了解網絡攻防
這個做業在哪一個具體方面幫助我實現目標 複習鞏固Linux基礎知識

 

 

 

 

做業一安全

1.  你對網絡攻擊和防護瞭解多少?該課程須要計算機和網絡相關的基礎知識,你原專業是什麼專業,目前你掌握多少基礎知識?bash

●  上學期學習了《網絡系統安全》這門課,對網絡攻擊和防護的基礎知識有一些瞭解,並作過一些相關實踐。網絡攻擊分爲主動攻擊和被動攻擊,主動攻擊有假裝、重放、篡改和拒絕服務,被動攻擊有報文分析和流量分析,對於被動攻擊,重在防範,而不在於檢測。網絡

●  我原專業是網絡工程,對計算機網絡基礎知識較爲了解。less

2.  做業要使用Markdown格式,Markdown入門參考(需掌握)iphone

●  因上學期選修《Linux內核原理與分析》這門課,因此已掌握基本的Markdown語法。工具

做業二學習

你本身動手安裝過操做系統嗎?若是沒有話如今動手學一下吧。ui

1.  學習基於VirtualBox虛擬機安裝Ubuntu圖文教程在本身筆記本上安裝Linux操做系統(也可使用VMware安裝虛擬機,安裝方法本身百度)spa

●  因上學期選修《Linux內核原理與分析》這門課,已安裝虛擬機。

2.  經過實踐學習別出心裁的Linux命令學習法,掌握Linux命令的學習方法

●  因上學期選修《Linux內核原理與分析》這門課,已掌握Linux的基本命令。

3.  參考上面的學習方法經過實踐學習Linux基礎入門(新版)課程,掌握經常使用的Linux命令,重點是3/4/5/6/7/8節

實驗3  用戶及文件權限管理

        在 Linux 系統裏, root 帳戶擁有整個系統至高無上的權利,好比 新建/添加 用戶。咱們通常登陸系統時都是以普通帳戶的身份登陸的,要建立用戶須要 root 權限,這裏就要用到 sudo 這個命令了。不過使用這個命令有兩個大前提,一是你要知道當前登陸用戶的密碼,二是當前用戶必須在 sudo 用戶組。  

     ●  查看用戶:who am i 或者 who mom likes

     ●  su,su- 與 sudo

        su <user> 能夠切換到用戶 user,執行時須要輸入目標用戶的密碼。

    sudo <cmd> 能夠以特權級別運行 cmd 命令,須要當前用戶屬於 sudo 組,且須要輸入當前用戶的密碼。

    su - <user> 命令也是切換用戶,同時環境變量也會跟着改變成目標用戶的環境變量。

     ●  新建用戶:sudo adduser <user>,這個命令不但能夠添加用戶到系統,同時也會默認爲新用戶建立 home 目錄。

     ●  查看用戶屬於哪些用戶組:groups <user>

     ●  將其它用戶加入 sudo 用戶組

         默認狀況下新建立的用戶是不具備 root 權限的,也不在 sudo 用戶組,可讓其加入 sudo 用戶組從而獲取 root 權限。使用usermod命令能夠爲用戶添加用戶組,一樣使用該命令你必需有 root 權限,你能夠直接使用 root 用戶爲其它用戶添加用戶組,或者用其它已經在 sudo 用戶組的用戶使用 sudo 命令獲取權限來執行該命令。

$ su shiyanlou # 此處須要輸入 shiyanlou 用戶密碼,shiyanlou 的密碼能夠經過 `sudo passwd shiyanlou` 進行設置。 $ groups lilei $ sudo usermod -G sudo lilei $ groups lilei

      ●  刪除用戶: sudo deluser <user> --remove-home

      ●  查看文件權限:ls -l

          出現以下所示結果:

       

      ●  變動文件全部者

# 注意當前的用戶必須是 lilei # 若是是 shiyanlou 用戶須要切換到 lilei(若是以前已經刪除須要從新建立下) $ su lilei $ cd /home/lilei $ touch iphone6 # 更改文件全部者爲shiyanlou,須要切換到 shiyanlou 用戶執行如下操做 $ cd /home/lilei $ ls iphone6 $ sudo chown shiyanlou iphone6

      ●  修改文件權限

          方法一:二進制數字表示

     

         每一個文件的三組權限(擁有者,所屬用戶組,其餘用戶,記住這個順序是必定的)對應一個 " rwx ",也就是一個 「 7 」 ,因此若是我要將文件「 iphone6 」的權限改成只有我本身能夠用那麼就這樣:

$ chmod 600 iphone6

         方法二:加減賦值操做

$ chmod go-rw iphone6    // g、o 還有 u 分別表示 group、others 和 user,+ 和 - 分別表示增長和去掉相應的權限。      

    adduser 和 useradd 的區別

         useradd 只建立用戶,建立完了用 passwd lilei 去設置新用戶的密碼。adduser 會建立用戶,建立目錄,建立密碼(提示你設置),作這一系列的操做。其實 useradd、userdel 這類操做更像是一種命令,執行完了就返回。而 adduser 更像是一種程序,須要你輸入、肯定等一系列操做。

 

實驗4  Linux目錄結構及文件基本操做

      ●  FHS標準

         

         FHS 依據文件系統使用的頻繁與否以及是否容許用戶隨意改動,將目錄定義爲四種交互做用的形態,以下表所示:

     ●  進入上一級目錄:cd ..

         進入你的 home 目錄:cd ~   或者 cd /home/<你的用戶名>

         獲取當前路徑:pwd

     ●  絕對路徑與相對路徑

         絕對路徑:關於絕對路徑,簡單地說就是以根" / "目錄爲起點的完整路徑,以你所要到的目錄爲終點,表現形式如: /usr/local/bin,表示根目錄下的 usr 目錄中的 local 目錄中的 bin 目錄。

         相對路徑:也就是相對於你當前的目錄的路徑,相對路徑是以當前目錄 . 爲起點,以你所要到的目錄爲終點,表現形式如:usr/local/bin (這裏假設你當前目錄爲根目錄)。你可能注意到,咱們表示相對路徑實際並無加上表示當前目錄的那個 . ,而是直接以目錄名開頭,由於這個 usr 目錄爲 / 目錄下的子目錄,是能夠省略這個 . 的(之後會講到一個相似不能省略的狀況);若是是當前目錄的上一級目錄,則須要使用 .. ,好比你當前目錄爲 /home/shiyanlou 目錄下,根目錄就應該表示爲 ../../ ,表示上一級目錄( home 目錄)的上一級目錄( / 目錄)。

         下面咱們以你的 home目錄爲起點,分別以絕對路徑和相對路徑的方式進入 /usr/local/bin目錄:

# 絕對路徑 $ cd /usr/local/bin # 相對路徑 $ cd ../../usr/local/bin

     ●  新建空白文件:touch <文件名>

         新建目錄:mkdir <目錄名>

         同時建立一個多級目錄:mkdir -p father/son/grandson

     ●  複製文件:cp <文件> <指定目錄>,如:cp test father/son/grandson

         複製目錄:要成功複製目錄須要加上 -r 或者 -R 參數,表示遞歸複製

$ cd /home/shiyanlou $ mkdir family $ cp -r father family

     ●  刪除文件:rm <文件> 或 rm -f <文件>,表示強制刪除

         刪除目錄:跟複製目錄同樣,要刪除一個目錄,也須要加上 -r 或 -R 參數,rm -r <目錄>

     ●  移動文件:mv <源目錄文件> <目的目錄>

         重命名文件:mv <舊的文件名> <新的文件名>

         批量重命名:rename

     ●  查看文件

         使用 cattac 和 nl 命令查看文件:前兩個命令都是用來打印文件內容到標準輸出(終端),其中 cat 爲正序顯示,tac 爲倒序顯示。nl 命令,添加行號並打印。

         使用 more 和 less 命令分頁查看文件:若是說上面的 cat 是用來快速查看一個文件的內容的,那麼這個 more 和 less 就是天生用來"閱讀"一個文件的內容的。   

         使用 head 和 tail 命令查看文件:它們一個是隻查看文件的頭幾行(默認爲 10 行,不足 10 行則顯示所有)和尾幾行。

     ●  查看文件類型:file <文件>

 

實驗5  環境變量與文件查找

     ●  變量

$ declare tmp   // 建立變量,或也能夠不用 declare 預聲明一個變量,直接即用即建立
$ tmp=shiyanlou  // 使用 = 號賦值運算符,將變量 tmp 賦值爲 shiyanlou
$ echo $tmp  // 讀取變量的值,使用 echo 命令和 $ 符號($ 符號用於表示引用一個變量的值)

     ●  環境變量

         一般咱們會涉及到的變量類型有三種:  

         1)當前 Shell 進程私有用戶自定義變量,如上面咱們建立的 tmp 變量,只在當前 Shell 中有效。

         2)Shell 自己內建的變量。

         3)從自定義變量導出的環境變量。

        也有三個與上述三種環境變量相關的命令:setenvexport。這三個命令很類似,都是用於打印環境變量信息,區別在於涉及的變量範圍不一樣。

命 令 說 明
set 顯示當前 Shell 全部變量,包括其內建環境變量(與 Shell 外觀等相關),用戶自定義變量及導出的環境變量。
env 顯示與當前用戶相關的環境變量,還可讓命令在指定環境中運行。
export 顯示從 Shell 中導出成環境變量的變量,也能經過它將自定義變量導出爲環境變量。

          

     ●  咱們在 Shell 中輸入一個命令,Shell 經過環境變量 PATH來進行搜索的,而後執行。

          PATH 裏面的路徑是以 : 做爲分割符的,因此咱們能夠這樣添加自定義路徑:

$ PATH=$PATH:/home/shiyanlou/mybin   //注意這裏必定要使用絕對路徑。

         可是這樣只是給 PATH 環境變量追加了一個路徑,它也只是在當前 Shell 有效,我一旦退出終端,再打開就會發現又失效了。有沒有方法讓添加的環境變量全局有效?或者每次啓動 Shell 時自動執行上面添加自定義路徑到 PATH 的命令?下面咱們就來講說後一種方式——讓它自動執行。

         在每一個用戶的 home 目錄中有一個 Shell 每次啓動時會默認執行一個配置腳本,以初始化環境,包括添加一些用戶自定義環境變量等等。zsh 的配置文件是 .zshrc,相應 Bash 的配置文件爲 .bashrc 。它們在 etc下還都有一個或多個全局的配置文件,不過咱們通常只修改用戶目錄下的配置文件。

$ echo "PATH=$PATH:/home/shiyanlou/mybin" >> .zshrc

        上述命令中 >> 表示將標準輸出以追加的方式重定向到一個文件中,注意前面用到的 > 是以覆蓋的方式重定向到一個文件中,使用的時候必定要注意分辨。在指定文件不存在的狀況下都會建立新的文件。

      ●  前面咱們在 Shell 中修改了一個配置腳本文件以後(好比 zsh 的配置文件 home 目錄下的 .zshrc),每次都要退出終端從新打開甚至重啓主機以後其才能生效,非常麻煩,咱們可使用 source 命令來讓其當即生效,如:

$ cd /home/shiyanlou $ source .zshrc  

          source 命令還有一個別名就是 .,上面的命令若是替換成 . 的方式就該是:

$ . ./.zshrc

         在使用.的時候,須要注意與表示當前路徑的那個點區分開。注意第一個點後面有一個空格,並且後面的文件必須指定完整的絕對或相對路徑名,source 則不須要。

       ●  搜索文件

           whereis 簡單快速

           locate 快而全

           which 小而精

           find 精而細

 

實驗6  文件打包與解壓縮

       ●  zip

           打包 :zip something.zip something (目錄請加 -r 參數)

           解包:unzip something.zip

           指定路徑:-d 參數

       ●  tar

           打包:tar -cf something.tar something

           解包:tar -xf something.tar

           指定路徑:-C 參數

 

實驗7  文件系統操做與磁盤管理

     ●  查看磁盤和目錄的容量

          使用 df 命令查看磁盤的容量

 # 默認一樣以 塊 的大小展現 $ df # 加上`-h`參數,以更易讀的方式展現 $ df -h     
             使用 du 命令查看目錄的容量
 # 默認一樣以 塊 的大小展現 $ du # 加上`-h`參數,以更易讀的方式展現 $ du -h # 只查看1級目錄的信息 $ du -h -d 0 ~ # 查看2級 $ du -h -d 1 ~ du -h #同--human-readable 以K,M,G爲單位,提升信息的可讀性。 du -a #同--all 顯示目錄中全部文件的大小。 du -s #同--summarize 僅顯示總計,只列出最後加總的值。

      ●  dd命令用於轉換和複製文件,不過它的複製不一樣於cp。dd默認從標準輸入中讀取,並寫入到標準輸出中,但能夠用選項if(input file,輸入文件)和of(output file,輸出文件)改變。

          用dd命令從標準輸入讀入用戶的輸入到標準輸出或者一個文件中:

# 輸出到文件 $ dd of=test bs=10 count=1 # 或者 dd if=/dev/stdin of=test bs=10 count=1 # 輸出到標準輸出 $ dd if=/dev/stdin of=/dev/stdout bs=10 count=1 # 注 在打完了這個命令後,繼續在終端打字,做爲你的輸入

         上述命令從標準輸入設備讀入用戶輸入(缺省值,因此可省略)而後輸出到 test 文件,bs(block size)用於指定塊大小(缺省單位爲 Byte,也可爲其指定如'K','M','G'等單位),count用於指定塊數量。

         dd在拷貝的同時還能夠實現數據轉換,那下面就舉一個簡單的例子:將輸出的英文字符轉換爲大寫再寫入文件:

$ dd if=/dev/stdin of=test bs=10 count=1 conv=ucase

      ●  使用 dd 命令建立虛擬鏡像文件

          使用dd命令來完成建立虛擬磁盤的第一步。

# 從/dev/zero設備建立一個容量爲 256M 的空文件 $ dd if=/dev/zero of=virtual.img bs=1M count=256 $ du -h virtual.img

         而後咱們要將這個文件格式化(寫入文件系統),這裏使用 mkfs 命令格式化磁盤(咱們這裏是本身建立的虛擬磁盤鏡像)

# 將咱們的虛擬磁盤鏡像格式化爲ext4文件系統 $ sudo mkfs.ext4 virtual.img

 

實驗8  Linux下的幫助命令

      ●  內建命令與外部命令

         內建命令其實是 shell 程序的一部分,其中包含的是一些比較簡單的 Linux 系統命令,這些命令是寫在bash源碼的builtins裏面的,由 shell 程序識別並在 shell 程序內部完成運行,一般在 Linux 系統加載運行時 shell 就被加載並駐留在系統內存中。並且解析內部命令 shell 不須要建立子進程,所以其執行速度比外部命令快。好比:history、cd、exit 等等。

         外部命令是 Linux 系統中的實用程序部分,由於實用程序的功能一般都比較強大,因此其包含的程序量也會很大,在系統加載時並不隨系統一塊兒被加載到內存中,而是在須要時纔將其調入內存。雖然其不包含在 shell 中,可是其命令執行過程是由 shell 程序控制的。外部命令是在 Bash 以外額外安裝的,一般放在/bin,/usr/bin,/sbin,/usr/sbin等等。好比:ls、vi等。

      ●  幾個經常使用的幫助命令

          help 命令:只能用於顯示shell內建命令的幫助信息。外部命令基本上都有一個參數--help:ls --help

          man命令:獲得的內容比用 help 更多更詳細,並且man沒有內建與外部命令的區分,由於 man 工具是顯示系統手冊頁中的內容,也就是一本電子版的字典,這些內容大多數都是對命令的解釋信息,還有一些相關的描述。經過查看系統文檔中的 man 也能夠獲得程序的更多相關信息和 Linux 的更多特性。

         info命令:man 和 info 就像兩個集合,它們有一個交集部分,但與 man 相比,info 工具可顯示更完整的 GNU 工具信息。若 man 頁包含的某個工具的概要信息在 info 中也有介紹,那麼 man 頁中會有「請參考 info 頁更詳細內容」的字樣。

相關文章
相關標籤/搜索