wordpress 微软 centos mysql 程序员 Android java Python Ubuntu linux Firefox 开源 google nginx Windows 云计算 编程 apache php shell

linux基礎知識總結

  接觸Linux大概一個星期左右,自己對Linux也只是初識,只裝了Ubuntu,其他的還沒有試過,只是看了點書和視頻,因此總結讓知識稍微有些秩序。
1.用戶與用戶組
        Linux是多用戶,多任務的操作系統,這意味著多人可以同時使用一臺主機。因為每個用戶的個人喜好與隱私問題,文件的所有者就顯得尤為重要。將用戶分為不同的組別當然是為了方便管理。因此用戶與文件之間的關系就有三種:(1)User:表示該用戶是文件的所有者。(2)Group:表示該用戶和文件的所有者在同一用戶組。(3)Others:除了以上兩種的其他用戶。此外,Linux中還有一個特殊root賬戶,相當於Windows中的管理員賬戶,對所有文件具有所有權。

    由於只是自己一個人在自己的機器上使用,對這一部分就沒有深入了解。因為linux是針對多用戶的,所以權限尤為重要,重點說下文件權限。

2.文件權限

2.1 Linux文件屬性
         在終端下執行"ls -l"查看當前目錄的文件,l參數用於顯示文件的屬性,以下是一個例子及對應的屬性說明:

—————————————————————————————————————————————

  -rw-rw-r--          1             jerry         jerry             100       6 月 28 11:40   hello.c

【用戶權限】【連接數】【所有者】【用戶組】【文件大小】【修改日期】【文件名】

—————————————————————————————————————————————

註:文件大小的單位是B

        開頭的那一串"-rw-rw-r--"共有10個字符,第一個表示文件的類型,常見的有:[-]代表文件,[d]代表目錄,[l]代表鏈接文件, [b]代表設備等。後面的九個分為三組,分別代表User,Group,Other這三類用的權限,[r]代表讀權限,[w]代表寫權限,[x]代表執行權限,[-]就代表沒有權限。因此,上面這個例子代表文件的所有者jerry及同組的用戶對該文件可讀,可寫。其他用戶則只能讀。所有的用戶都沒有執行權限。

2.2 文件權限的意義
        如上所述,用戶對於文件有r(read),w(write),x(execute)這三種權限。在Linux中“一切皆文件”,因而有時候這是令人迷惑的,尤其是對目錄來說。以下對目錄的這三個權限再做具體的說明:

        r:表示用戶可以查看該目錄下的內容,即可以使用“ls”命令

        w:表示用戶可以修改該目錄下的內容,包括增加,刪除,重命名等

        x:表示用戶可以進入該目錄,即可以使用“cd”命令

        而對於我們通常所說的的“文件”來說,“r”和“w”容易明白,而“x”則令人費解,難道文本文件也可以執行嗎?在這一點上,Linux和Windows有很大的區別。在Windows下,可執行文件通常都是以“.exe”結尾的。而在Linux下,文件是否可執行與後綴名沒有關系,而僅與是否具有x權限有關。不過無論是Linux還是Windows,可執行的只能是二進制文件。因此,雖然在Linux下文本文件加上x權限也可以執行,不過系統只認識二進制的機器語言,因此只可能報錯而不會有任何效果。

        為了驗證這一點可以做一個簡單的實驗,用gcc編譯一個C語言文件,默認會得到一個“a.out”文件,將其重命名為“a.txt”,然後執行“./a.txt”,將會發現程序依然能夠執行。

2.3 文件權限的更改
        Linux下要更改文件的權限,可以用以下三個命令:

        改變所有者:chown      user      filename

        改變用戶組:chgrp       group   filename

        改變權限:chmod,有以下兩種用法:

       (1)數字法:

        三個權限對應的數字為r:4,w:2,x:1,三類用戶的權限分別就是這三個數字的和,比如說上面的那個例子“ -rw-rw-r-- ”化為數字即是:664,要給三個用戶都加上執行權限的話,就用“chmod 775 hello.c”

        (2)符號法:

        chmod        u/g/o/a       +/-/=          r/w/x        filename            

        以上“u”表示user,“g”表示group,“o”表示others,“a”表示all

        “+”表示增加權限,“-”表示去除權限,“=”表示設置權限為

        “rwx”當然就是文件的三個權限,可以只寫一個,也可以寫多個

        依舊是上面的那個例子,給hello.c所有用戶加上執行權限,那麽命令就是“chmod a+x hello.c”

        ps:以上命令可以加上“-R”參數來進行遞歸變更

2.4 文件的默認權限:umask
        以上已經說明了關於文件權限的基本知識,那麽當我們新建一個文件的時候,權限是怎樣的呢?這就涉及到文件的默認權限:umask。在終端下輸入umask,會得到一串數字,像在我的機器上是“0002”,後三個數字即是文件的默認權限,不過要註意的是,這是文件默認不具有的權限。亦即“002”代表others不具有w權限。還需要註意的是對於文件和目錄這裏仍是不同的。文件默認不具有x權限,即最大權限為“-rw-rw-rw-”,而目錄訪問需要x權限,因此默認最大權限為“-rwxrwxrwx”。所以在我的機器上umask為“002”,分別創建一個文件和一個目錄後,結果如下:

        drwxrwxr-x.            2         jerry     jerry          4096          8月 31 11:30               new

        -rw-rw-r--.               1         jerry     jerry             6             8月 31 11:29              new.txt

        若要設置umask,直接在後面加上設置的數字即可,比如“umask 022” 

        ps:umask加上“-S(大寫)”參數可以直接顯示文件權限,不過不區分文件與目錄,如我的機子上就顯示“u=rwx,g=rwx,o=rx”,仍需留意文件默認沒有x權限。

延伸阅读

评论