2016年3月24日 星期四

loopback具體作用

loopback具體作用


    此類介面是應用最為廣泛的一種虛介面,幾乎在每台路由器上都會使用。常
見於如下用途。
1 、作為一台路由器的管理地址
    系統管理員完成網路規劃之後,為了方便管理,會為每一台路由器創建一個
loopback 介面,並在該介面上單獨指定一個IP 位址作為管理位址,管理員會
使用該位址對路由器遠端登入(telnet ),該位址實際上起到了類似設備名稱
一類的功能。
    但是通常每台路由器上存在眾多介面和位址,為何不從當中隨便挑選一個呢?
原因如下:由於telnet 命令使用TCP 報文,會存在如下情況:路由器的某一個
介面由於故障down 掉了,但是其他的介面卻仍舊可以telnet ,也就是說,到
達這台路由器的TCP 連接依舊存在。所以選擇的telnet 位址必須是永遠也不會
down 掉的,而虛介面恰好滿足此類要求。由於此類介面沒有與對端互聯互通
的需求,所以為了節約位址資源,loopback 介面的位址通常指定為32 位元遮罩。
2 、使用該介面位址作為動態路由式通訊協定OSPF 、BGP 的router id
    動態路由式通訊協定OSPF 、BGP 在運行過程中需要為該協定指定一個Router id ,作
為此路由器的唯一標識,並要求在整個自治系統內唯一。由於router id 是一個
32 位的不帶正負號的整數,這一點與IP 地址十分相像。而且IP 地址是不會出現重複
現象的,所以通常將路由器的router id 指定為與該設備上的某個介面的位址相
同。由於loopback 介面的IP 位址通常被視為路由器的標識,所以也就成了
router id 的最佳選擇。
3、使用該介面位址作為BGP 建立TCP 連接的源位址
    在BGP 協議中,兩個運行BGP 的路由器之間建立鄰居關係是通過TCP 建立連
接完成的。
    在配置鄰居時通常指定loopback 介面為建立TCP 連接的源位址(通常只用於
IBGP ,原因同2.1 ,都是為了增強TCP 連接的健壯性)
配置命令如下:
router id 61.235.66.1
interface loopback 0
ip address 61.235.66.1 255.255.255.255
router bgp 100
neighbor 61.235.66.7 remote-as 200
neighbor 61.235.66.7 update-source LoopBack0

copy from 老陳獨白 ^_^


2015年9月23日 星期三

Linux 第六章

Linux 系統權限的程序控制

Linux系統檔案權限

權限                 對檔案的影響                         對目錄的影響

r(read)              可以讀取檔案的內容             可以列出目錄裡檔案的名稱

w(write)           可以改變檔案的內容             可以對目錄裡所有的檔案進行新增或刪除

x(execute)        可以藉由命令執行檔案         可以訪問目錄下的內容

命令系統檔案權限的管理

更改 當案/目錄 權限

方法象徵性的關鍵字:
#cmd whowhatwhich file|directory
who is     u,g,o,a (for user, group, other, all)
what is    +, -, = (for add, remove, set exactly)
which is  r, w, x (for read, write, executable)          
p.s,  如果r改成R並且是對目錄的話,將會對整個目錄包括裡面的目錄數進行權限更改
p.s.  如果x改成X將會對只個目錄,以及底下的檔案進行權限更改


#chmod

數字的方法:
#chmod ### file|directry
每個#符號代表一個訪問權限等級:user, group, other.
# is sum of  r = 4, w = 2, x = 1.

範例:
#chmod go-rw file1    //把file1的group and other的r(read) and w(write)權限都去掉
#chmod a+x file2        //把file2 的全部使等級的使用者都增加x(execute)
#chmod 750 sampledir //把sampledir的 user權限w,r,x都開啟,group權限只開啟r,x在other的部分都不開

#chown

ex. #chown student foofile    //將foofile的擁有者改變成student
ex. #chown - R student foodir  //將foodir包括裡面所有的檔案及目錄登更改成student使用者的
ex. #chown :admins foodir    //將foodir的群組權限改為admins
ex. #chown visitor:guests foodir  //將foodir的擁有者以及群組權限分別改為visitor and guests

p.s.只有root可以改變所有的使用權限,非root只可以改變屬於自己群組的權限

特殊檔案權限

特殊檔案權限    

u+s (suid)  
set user id
僅對檔案的影響>>  SUID 權限僅對二進位程式(binary program)有效;
                                  執行者對於該程式需要具有 x 的可執行權限;                                                                                      本權限僅在執行該程式的過程中有效 (run-time);                               
                                  執行者將具有該程式擁有者 (owner) 的權限;


g+s (sgid)                  
set group id    
  針對目錄時>>      使用者若對於此目錄具有 r 與 x 的權限時,該使用者能夠進入此目錄;
                                 使用者在此目錄下的有效群組(effective group)將會變成該目錄的群組;
                                 用途:若使用者在此目錄下具有 w 的權限(可以新建檔案),則使用者所建                                    立的新檔案,該新檔案的群組與此目錄的群組相同
針對檔案時>>         SGID 對二進位程式有用;
                                 程式執行者對於該程式來說,需具備 x 的權限;
                                 執行者在執行的過程中將會獲得該程式群組的支援;

o+t (sticky)
僅針對目錄>>         當使用者對於此目錄具有 w, x 權限,亦即具有寫入的權限時;
                                  當使用者在該目錄下建立檔案或目錄時,僅有自己與 root 才有權力刪除該                                   檔案
ex.當甲這個使用者於 A 目錄是具有群組或其他人的身份,並且擁有該目錄 w 的權限, 這表示『甲使用者對該目錄內任何人建立的目錄或檔案均可進行 "刪除/更名/搬移" 等動作。』 不過,如果將 A 目錄加上了 SBIT 的權限項目時, 則甲只能夠針對自己建立的檔案或目錄進行刪除/更名/移動等動作,而無法刪除他人的檔案。



  • SUID/SGID/SBIT 權限設定
前面介紹過 SUID 與 SGID 的功能,那麼如何設定檔案使成為具有 SUID 與 SGID 的權限呢? 這就需要第五章的數字更改權限的方法了! 現在你應該已經知道數字型態更改權限的方式為『三個數字』的組合, 那麼如果在這三個數字之前再加上一個數字的話,最前面的那個數字就代表這幾個權限了!
  • 4 為 SUID
  • 2 為 SGID
  • 1 為 SBIT

假設要將一個檔案權限改為『-rwsr-xr-x』時,由於 s 在使用者權限中,所以是 SUID ,因此, 在原先的 755 之前還要加上 4 ,也就是:『 chmod 4755 filename 』來設定!此外,還有大 S 與大 T 的產生喔!

[root@study ~]# cd /tmp
[root@study tmp]# touch test                  <==建立一個測試用空檔
[root@study tmp]# chmod 4755 test; ls -l test <==加入具有 SUID 的權限
-rwsr-xr-x 1 root root 0 Jun 16 02:53 test
[root@study tmp]# chmod 6755 test; ls -l test <==加入具有 SUID/SGID 的權限
-rwsr-sr-x 1 root root 0 Jun 16 02:53 test
[root@study tmp]# chmod 1755 test; ls -l test <==加入 SBIT 的功能!
-rwxr-xr-t 1 root root 0 Jun 16 02:53 test
[root@study tmp]# chmod 7666 test; ls -l test <==具有空的 SUID/SGID 權限
-rwSrwSrwT 1 root root 0 Jun 16 02:53 test

因為 s 與 t 都是取代 x 這個權限的,但是你有沒有發現阿,我們是下達 7666 喔!也就是說, user, group 以及 others 都沒有 x 這個可執行的標誌( 因為 666 嘛 ),所以,這個 S, T 代表的就是『空的』啦!怎麼說? SUID 是表示『該檔案在執行的時候,具有檔案擁有者的權限』,但是檔案 擁有者都無法執行了,哪裡來的權限給其他人使用?當然就是空的啦! ^_^


預設權限

當我們mkdir 的時候就會給予預設的權限,如何查看預設的權限呢?
就要使用
[root@study ~]# umask
0022             <==與一般權限有關的是後面三個數字!
[root@study ~]# umask -S
u=rwx,g=rx,o=rx

為什麼會顯示0022四個權限,是因為第一個是特殊權限,像是目錄的話,權限的前面會顯示d

因為 umask 為 022 ,所以 user 並沒有被拿掉任何權限,不過 group 與 others 的權限被拿掉了 2 (也就是 w 這個權限),那麼當使用者:
  • 建立檔案時:(-rw-rw-rw-) - (-----w--w-) ==> -rw-r--r--
  • 建立目錄時:(drwxrwxrwx) - (d----w--w-) ==> drwxr-xr-x
不相信嗎?我們就來測試看看吧!
[root@study ~]# umask
0022
[root@study ~]# touch test1
[root@study ~]# mkdir test2
[root@study ~]# ll -d test*
-rw-r--r--. 1 root root 0  6月 16 01:11 test1
drwxr-xr-x. 2 root root 6  6月 16 01:11 test2

可以用# umask 後面加002把權限w遮掉(暫時),也可以進到/etc/bashrc的.bashrc檔案,將預設權限遮罩改掉

2015年9月6日 星期日

Linux 第五章

管理Linux本地的使用者與群組

使用者與群組

#id  //可以顯示當下的使用者資訊
#ls -l /tmp //顯示檔案或目錄 與關聯的使用者資訊
#ps au //顯示shell當下執行的程序的使用者
#su <username>//可以切換使用者
#su - <username> //切換使用者,連同環境參數
#sudo //可以暫時得到root的特權,不過所有的動作被記錄在/var/log/secure,可以使用sudo的user是有被限定的,他的名單在/etc/sudoers

使用者id的資料會被記錄在/etc/passwd,格式如下
username:  password:  uid:  gid:  gecos:  /home/dir:  shell


使用者得密碼則會被記錄在/etc/shadow
群組的資訊會被記錄在/etc/group

使用者的新增,修改,刪除

#useradd
#userdel
#usermod

uid 0             一定是superuser,但是不一定是root
uid 1~200     由redhat自訂
uid 201~999 若使用者有系統帳號需求時,可以使用的帳號 UID
uid 1000+     給一般使用者用的


群組的新增,修改,刪除

#groupadd //-r option 會自動加上gid
#groupmod
#groupdel

Shadow 密碼以及密碼策略

如果打開shadow會看到一串看起來像亂碼的東西
他們是用:來分開的,欄位分別是
1.name  2.password  3.lastchange  4.minage  5.maxage  6.waring  7.inactive  8.expire  9.blank
1.帳號名稱 2.密碼 3.最近更動密碼的日期 4.密碼不可被更動的日期 5.密碼需要被更動的日期
6.密碼需被變更期限前的警告天數 7.密碼過期後的寬限天數 8.帳號失效日期 9.保留


可以用#chage 來更改 

-d = 更改最近更動密碼的日期,如果輸入0,那使用者將會在下次登入時強制要求變更密碼
-m = 更改密碼不可被更動的日期
-M = 更改密碼需要被更動的日期
-W = 更改密碼需被變更期限前的警告天數
-I= 更改密碼過期後的寬限天數
-E = 指定帳到的失效日期 YYYY-MM-DD
-l = 列出使用者的當下設定



2015年8月29日 星期六

Linux 第四章

重新導向輸出到檔案或程式

代碼0 stdin(標準輸入)      
代碼1 stdout(標準輸出)
代碼2 stderr(標準錯誤輸出)

用法            解釋
>file            重新導向stdout到檔案
>>file          重新導向stdout到檔案,並在當前檔案上增加內容
2>file          重新導向stderr到檔案
2>/dev/null 將stderr錯誤資訊重新導向到/dev/null,/dev/null可以吃掉任何導向這個裝                                       置的資訊!!
&>file          結合stderr and stdout 到同一個檔案
>>file 2>&   結合stdout and stderr增加到當下的檔案內容


Pipelines  管線指令(from鳥哥)

 其實這個管線命令『 | 』僅能處理經由前面一個指令傳來的正確資訊,也就是 standard output 的資訊,對於 stdandard error 並沒有直接處理的能力。那麼整體的管線命令可以使用下圖表示:
線命令的處理示意圖
圖10.6.1、管線命令的處理示意圖

在每個管線後面接的第一個資料必定是『指令』喔!而且這個指令必須要能夠接受 standard input 的資料才行,這樣的指令才可以是為『管線命令』,例如 less, more, head, tail 等都是可以接受 standard input 的管線命令啦。至於例如 ls, cp, mv 等就不是管線命令了!因為 ls, cp, mv 並不會接受來自 stdin 的資料。 也就是說,管線命令主要有兩個比較需要注意的地方:

  • 管線命令僅會處理 standard output,對於 standard error output 會予以忽略
  • 管線命令必須要能夠接受來自前一個指令的資料成為 standard input 繼續處理才行。

tee(from鳥哥)

想個簡單的東西,我們由前一節知道 > 會將資料流整個傳送給檔案或裝置,因此我們除非去讀取該檔案或裝置, 否則就無法繼續利用這個資料流。萬一我想要將這個資料流的處理過程中將某段訊息存下來,應該怎麼做? 利用 tee 就可以囉~我們可以這樣簡單的看一下:

tee 的工作流程示意圖
圖10.6.2、tee 的工作流程示意圖
tee 會同時將資料流分送到檔案去與螢幕 (screen);而輸出到螢幕的,其實就是 stdout ,那就可以讓下個指令繼續處理喔!
[dmtsai@study ~]$ tee [-a] file
選項與參數:
-a  :以累加 (append) 的方式,將資料加入 file 當中!

[dmtsai@study ~]$ last | tee last.list | cut -d " " -f1
# 這個範例可以讓我們將 last 的輸出存一份到 last.list 檔案中;

[dmtsai@study ~]$ ls -l /home | tee ~/homefile | more
# 這個範例則是將 ls 的資料存一份到 ~/homefile ,同時螢幕也有輸出訊息!

[dmtsai@study ~]$ ls -l / | tee -a ~/homefile | more
# 要注意! tee 後接的檔案會被覆蓋,若加上 -a 這個選項則能將訊息累加。
tee 可以讓 standard output 轉存一份到檔案內並將同樣的資料繼續送到螢幕去處理! 這樣除了可以讓我們同時分析一份資料並記錄下來之外,還可以作為處理一份資料的中間暫存檔記錄之用! tee 這傢伙在很多選擇/填充的認證考試中很容易考呢!




從shell提示下編輯文字文件

#vim
按V可以切換命令模式到視覺模式,或切換回來命令模式
按I可以切換到編輯模式,按ESC可以切換回來命令模式
按Shift + :可以切換到延伸命令模式,按ENTER可以切換回命令模式


#gedit
這個應用程式似乎只能字圖形介面下使用呢!
跟記事本很像的工具,滿好用的

P.S.  再呼叫gedit之類的程式,可以再命令後面加上&,這樣可以使程式跑完後回到terminal
#gedit file_name &

2015年8月26日 星期三

Linux 第三章

用man page 來查詢
ex.  #man date
最前面會顯示DATE(1)
以下解釋括號裡面的數字

(1):使用者在shell環境中可以操作的指令或執行檔
(2):系統核心可呼叫的函數與工具
(3):當用的函數(function)與函式庫(library),大部分為C的函式庫(libc)
(4):裝至檔案的說明,通常在/dev下的檔案
(5):設定檔或者是某些檔案格式
(6):遊戲
(7):慣例與協定等,例如Linux檔案系統、網路協定、ASCII code等等的說明
(8):系統管理員可用的管理指令
(9):跟kernel有關的文件

另外查詢文件的命令
#info  or  #pinfo
#firefox file:///usr/share/doc       //可以查詢道一些工具的說明
#redhat-support-tool

2015年8月20日 星期四

Linux第二章

Linux 的檔案結構
                   
                     /(根目錄)


┌─────────────────────────┼─────────────────────────┐
│   │    │   │   │     │   │   │   │   │      │
  bin      boot     dev       etc     home    root      run      sbin     tmp       usr   var
    X                 │                             X                │       │ 
                                  ┌────┬────┤                  ┌────┬────┬────┤     tmp
                                     │         │        │                  │     │        │         │    
         alice   bob   eve                   bin  local     sbin     tmp
                                            X


以上大至是Linux的重要目錄的樹狀圖
有畫XX的就是代表在新版本已經改掉位置的檔案
/bin   >> /usr/bin
/sbin  >> /usr/sbin
/tmp  >>/var/tmp
還有圖上所沒顯示的
/lib     >>/usr/lib
/lib64 >>/usr/lib64



相對路進與絕對路徑的差別:

絕對路徑:路徑寫法一定要從根目錄開始寫,例如:/var/log/message
相對路徑:路徑寫法:不是由根目路開始寫


解釋目錄的功能:
/usr :安裝軟體,共享庫,包括文件以及唯讀的靜態程式資料
/usr底下重要的子目錄:
/usr/bin:使用者命令
/usr/sbin:管理者命令
/usr/local:本地所制定的軟體
/etc :系統的配置特性檔案
/var:在開機期間將變量資料指定到這個系統,會動態變更的文件也可以在這底下找到
/run:從上次開始執行的地方開始運行程式程序,裡面包括ID檔案和Lock檔案......(重開機過後會重建此資料夾)
/root:管理者,home的直接"超級用戶"......
/tmp:暫存檔,超過十天的檔案會自動刪除,如果是在tmp下面的,沒有執行、更改或修改的檔案,會在三十天後被自動刪除
/boot:啟動時所需要的檔案程序
/dev :包含被系統執行過的硬體特別的裝置檔案

一些實用命令
#pwd   //顯示自己所在的資料夾路徑
#touch // 如果沒有檔案的情況下,就會建立新的檔案;如果有檔案,就會更改檔案的日期與時間
#cd    //變換目錄
#ls     //將目路裡的東西列出來
#echo  //顯示指定的字符......
#cp   //複製
#mv  //移動(更名)
#rm   //刪除
#mkdir //新增目錄
#rmdir  //刪除目錄

#ls a*    //列出a開頭的檔案
#ls *a*  //列出中間有a的檔案
#ls [a-c]*  //列出開頭a到c的檔案
#ls ???      //列出三個字元的字
#ls [!a]*    //列出不是a開頭的檔案
#ls ~/glob        //列出~/下的glob目錄內有什麼檔案
#echo ~/glob   //顯示到glob目錄的路徑
#echo file{1..3}.txt  //顯示名為file1~3的txt檔案
#echo file{a..c}.txt  //顯示名為filea~c的txt檔案
#echo file{1,2}{a,b}.txt  //顯示名為file1a file1b file2a  file2b的txt檔案
#echo file{a{1,2},b,c}.txr  //顯示名為filea1 filea2 fileb filec的txt檔案
#$(command) //可以在一串命令中 加入其他的命令
# host=$(hostname)  //這樣的使用法的話,可以將hostname得到的值給host這個,這樣host就變成變數了要使用的話要就用# echo $host

雙引號 " "   //是用來包住命令及字串的,如果裡面有$(hostname)的話就會顯示hostname的內容
,若是單引號則單純顯示$(hostname)。






2015年8月14日 星期五

Linux 第一章節

前置


$ = 使用者(user)
# = 管理者(root)

一些命令:

切換語言: 

使用者更改語言的方法:
$LANG="語言名稱代號" date  

全系統預設語言的更改方法
#localectl set-locale LANG="語言名稱代號"

常用的幾種語言~

英文English    = en_US.utf8
中文Chinese   = zh_TW.utf8
日文Japanese  = ja_JP.utf8

第一章

如何在純文字介面與圖形介面中互換
Ctrl + Alt + F2~F6,若是要切換回圖形介面則是Ctrl + Alt + F1


如果是在RED HAT  LINUX5之前的版本,則是Ctrl + Alt + F7切換回圖形介面

在shell 底下如何下命令:

#<Command> <Options> <Arguments>

Command:命令
Options:調整命令的行為
Arguments:命令的通常目標


Options的表現方式有 -a or --all都會是一樣的結果,不過這也是因命令而異。
如果想要在一行執行多個個命令,可以用分號";"把複數的命令分離。

當忘了如何下命令裡面的參數時可以用 --help來查詢,也有一個叫作man pages的方法

ex. #date --help    //--help的用法
ex. #man date      //man pages的用法



更改密碼的方法:

#passwd
之後只要照著指令輸入兩次密碼就可以更改密碼了~


一些實用的命令:

<Tab>按鍵,是我們最好的好朋友~
p.s. 記得要善用"TAB"鍵來補齊字元,命令、檔案名稱or選項名稱

#file          //會查看檔案內容的開頭並顯示檔案的類型
#head & #tail        //head & tail 性質是一樣的,分別是顯示檔案內容的頭、尾,在預設裡都是只顯示10行,並且都有選項-n可以指定顯示指定的行數

#wc     //word counts,就像字面上寫的一樣,計算行數、字數與字符數
#ls       //這就是常用到不行的命令了,用來顯示該目錄底下有哪一些檔案以及子目錄
#history    //顯示先前執行過的命令
#!"String"    // 驚嘆號後面如果加上字的話  像是#!ls的話,那將會顯示關於下過的ls的命令以及其結果,如果驚嘆號後面是數字,那就會呼叫#history所顯示出來的命令的代號

一些有用的快捷鍵:

Esc + .          //顯示上一次所使用的參數
ctrl + a          //跳到命令列的開端
ctrl + e          //跳掉命令列的尾端
ctrl + u          //清除從游標處到命令列的開端
ctrl + k          //清除從游標處到命令列的尾端
ctrl + r           //搜尋history list 裡的命令
ctrl + Left Arrow             //跳到命令的最前面
ctrl + Right Arrow          //跳到命令的最後面