歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux基礎知識總結

Linux基礎知識總結

日期:2017/2/28 16:06:37   编辑:Linux教程
接觸Linux約有半年的時間了,感到自己對Linux仍是一無所知,大多數時候只是在Ubuntu軟件中心中翻翻有什麼有意思的東西裝上玩玩,有的地方覺得不方便就又只好切換回Windows。系統出問題的時候完全沒轍,只能重裝了事。因此找了幾本相關的書,決定深入學習Linux。不定期整理一下學習筆記,發到Blog上來,方便自己查閱,也是對自己的督促。


1.用戶與用戶組

Linux是多用戶,多任務的操作系統,這意味著多人可以同時使用一台主機。考慮到每個用戶的個人喜好與隱私,文件的所有者就顯得尤為重要。將用戶分為不同的組別當然是為了方便管理。因此用戶與文件之間的關系就有三種:(1)User:表示該用戶是文件的所有者。(2)Group:表示該用戶和文件的所有者在同一用戶組。(3)Others:除了以上兩種的其他用戶。此外,Linux中還有一個特殊root賬戶,相當於Windows中的管理員賬戶,對所有文件具有所有權。

由於只是自己一個人在自己的機器上使用,對這一部分就沒有深入了解。重點在下面的文件權限。


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權限。

Copyright © Linux教程網 All Rights Reserved