天天看點

Linux檔案類型和權限

一、Linux檔案類型分類

Linux檔案一般是用一些相關的應用程式建立,比如圖像工具、文檔工具、歸檔工具... .... 或 cp工具等。linux檔案的删除方式是用rm 指令。

Linux檔案類型;

1 普通檔案

[root@localhost ~]# ls -lh install.log

-rw-r--r-- 1 root root 53K 03-16 08:54 install.log

我 們用 ls -lh 來檢視某個檔案的屬性,可以看到有類似 -rw-r--r-- ,值得注意的是第一個符号是 - ,這樣的檔案在Linux中就是普通檔案。這些檔案一般是用一些相關的應用程式建立,比如圖像工具、文檔工具、歸檔工具... .... 或 cp工具等。這類檔案的删除方式是用rm 指令;

2 目錄

[root@localhost ~]# ls -lh

總計 14M

-rw-r--r-- 1 root root     2 03-27 02:00 fonts.scale

-rw-r--r-- 1 root root   14M 03-16 07:53 kernel-6.15-1.2025_FC5.i686.rpm

drwxr-xr-x 2 1000 users 4.0K 04-04 23:30 mkuml-2004.07.17

當 我們在某個目錄下執行,看到有類似 drwxr-xr-x ,這樣的檔案就是目錄,目錄在Linux是一個比較特殊的檔案。注意它的第一個字元是d。建立目錄的指令可以用 mkdir 指令,或cp指令,cp可以把一個目錄複制為另一個目錄。删除用rm 或rmdir指令。

3 字元裝置或塊裝置檔案

如時您進入/dev目錄,列一下檔案,會看到類似如下的;

[root@localhost ~]# ls -la /dev/tty

crw-rw-rw- 1 root tty 5, 0 04-19 08:29 /dev/tty

[root@localhost ~]# ls -la /dev/hda1

brw-r----- 1 root disk 3, 1 2006-04-19 /dev/hda1

我們看到/dev/tty的屬性是 crw-rw-rw- ,注意前面第一個字元是 c ,這表示字元裝置檔案。比如貓等序列槽裝置

我們看到 /dev/hda1 的屬性是 brw-r----- ,注意前面的第一個字元是b,這表示塊裝置,比如硬碟,光驅等裝置;

這個種類的檔案,是用mknode來建立,用rm來删除。目前在最新的Linux發行版本中,我們一般不用自己來建立裝置檔案。因為這些檔案是和核心相關聯的。

4 套接口檔案

當我們啟動MySQL伺服器時,會産生一個mysql.sock的檔案。

[root@localhost ~]# ls -lh /var/lib/mysql/mysql.sock

srwxrwxrwx 1 mysql mysql 0 04-19 11:12 /var/lib/mysql/mysql.sock

注意這個檔案的屬性的第一個字元是 s。我們了解一下就行了。

5 符号連結檔案

[root@localhost ~]# ls -lh setup.log

lrwxrwxrwx 1 root root 11 04-19 11:18 setup.log -> install.log

當 我們檢視檔案屬性時,會看到有類似 lrwxrwxrwx,注意第一個字元是l,這類檔案是連結檔案。是通過ln -s 源檔案名 新檔案名。上面是一個例子,表示setup.log是install.log的軟連結檔案。怎麼了解呢?這和Windows作業系統中的快捷方式有點相 似。

二、Linux檔案權限

一般權限:                                                                                                                                                                    

在linux中的每一個檔案或目錄都包含有通路權限,這些通路權限決定了誰能通路和如何通路這些檔案和目錄。

第2~10個字元當中的每3個為一組,左邊三個字元表示所有者權限,中間3個字元表示與所有者同一組的使用者的權限,右邊3個字元是其他使用者的權限。這三個一組共9個字元,代表的意義如下:

r(Read,讀取):對檔案而言,具有讀取檔案内容的權限;對目錄來說,具有浏覽目錄的權限。

w(Write,寫入):對檔案而言,具有新增、修改檔案内容的權限;對目錄來說,具有删除、移動目錄内檔案的權限。

x(eXecute,執行):對檔案而言,具有執行檔案的權限;對目錄了來說該使用者具有進入目錄的權限。

-:表示不具有該項權限。

下面舉例說明:

-rwx------: 檔案所有者對檔案具有讀取、寫入和執行的權限。

-rwxr―r--: 檔案所有者具有讀、寫與執行的權限,其他使用者則具有讀取的權限。

-rw-rw-r-x: 檔案所有者與同組使用者對檔案具有讀寫的權限,而其他使用者僅具有讀取和執行的權限。

drwx--x--x: 目錄所有者具有讀寫與進入目錄的權限,其他使用者近能進入該目錄,卻無法讀取任何資料。

Drwx------: 除了目錄所有者具有完整的權限之外,其他使用者對該目錄完全沒有任何權限。

特殊權限:                                                                                                                                                                    其實檔案與目錄設定不止這些,還有所謂的特殊權限。由于特殊權限會擁有一些“特權”,因而使用者若無特殊需求,不應該啟用這些權限,避免安全方面出現嚴重漏洞,造成黑客入侵,甚至摧毀系統!!!

s或S(SUID,Set UID):可執行的檔案搭配這個權限,便能得到特權,任意存取該檔案的所有者能使用的全部系統資源。請注意具備SUID權限的檔案,黑客經常利用這種權限,以SUID配上root帳号擁有者,無聲無息地在系統中開扇後門,供日後進出使用。

s或S(SGID,Set GID):設定在檔案上面,其效果與SUID相同,隻不過将檔案所有者換成使用者組,該檔案就可以任意存取整個使用者組所能使用的系統資源。

T或T(Sticky):/tmp和 /var/tmp目錄供所有使用者暫時存取檔案,亦即每位使用者皆擁有完整的權限進入該目錄,去浏覽、删除和移動檔案。

因為SUID、SGID、Sticky占用x的位置來表示,是以在表示上會有大小寫之分。加入同時開啟執行權限和SUID、SGID、Sticky,則權限表示字元是小寫的:

-rwsr-sr-t 1 root root 4096 6月 23 08:17 conf

如果關閉執行權限,則表示字元會變成大寫:

-rwSr-Sr-T 1 root root 4096 6月 23 08:17 conf

使用檔案管理器來改變檔案或目錄的權限:                                                                                                                

如果使用者要改變一個檔案目錄的權限,右擊要改變權限的檔案或者目錄,在彈出的快捷菜單中選擇“屬性”,系統将打開屬性對話框

在“屬性”對話框中,單擊“權限”标簽,就會打開“權限”頁籤。

在這裡你可以修改檔案或者目錄的所有者、組群和其他使用者的權限,而且可以設定特殊權限

對于特殊權限,最好不要設定,不然會帶來很嚴重的安全問題。

當然,在這裡你也可以改變檔案和目錄的所有者和所屬組。

使用chmod和數字改變檔案或目錄的通路權限:                                                                                                        

檔案和目錄的權限表示,是用rwx這三個字元來代表所有者、使用者組和其他使用者的權限。有時候,字元似乎過于麻煩,是以還有另外一種方法是以數字來表示權限,而且僅需三個數字。

r: 對應數值4

w: 對應數值2

x:對應數值1

-:對應數值0

那麼,我們先根據上表得到權限串為:rw-rw-r--,那麼轉換成二進制數就是110 110 100,再每三位轉換成為一個十進制數,就得到664,是以我 們執行指令:

[root@localhost ~]# chmod 664 a.txt

按照上面的規則,rwx合起來就是4+2+1=7,一個rwxrwxrwx權限全開放的檔案,數值表示為777;而完全不開放權限的檔案“---------”其數字表示為000。下面舉幾個例子:

-rwx------:等于數字表示700。

-rwxr―r--:等于數字表示744。

-rw-rw-r-x:等于數字表示665。

drwx―x―x:等于數字表示711。

drwx------:等于數字表示700。

在文本模式下,可執行chmod指令去改變檔案和目錄的權限。我們先執行ls -l 看看目錄内的情況:

[root@localhost ~]# ls -l

-rw-r--r-- 1 root root 12172 8月 15 23:18 conkyrc.sample

可以看到當然檔案conkyrc.sample檔案的權限是644,然後把這個檔案的權限改成777。執行下面指令

[root@localhost ~]# chmod 777 conkyrc.sample

然後ls -l看一下執行後的結果:

-rwxrwxrwx 1 root root 12172 8月 15 23:18 conkyrc.sample

可以看到conkyrc.sample檔案的權限已經修改為rwxrwxrwx

如果要加上特殊權限,就必須使用4位數字才能表示。特殊權限的對應數值為:

s或 S (SUID):對應數值4。

s或 S (SGID):對應數值2。

t或 T :對應數值1。

用同樣的方法修改檔案權限就可以了

例如:

[root@localhost ~]# chmod 7600 conkyrc.sample

-rwS--S--T 1 root root 12172 8月 15 23:18 conkyrc.sample

加入想一次修改某個目錄下所有檔案的權限,包括子目錄中的檔案權限也要修改,要使用參數-R表示啟動遞歸處理。

[root@localhost ~]# chmod 777 /home/user 注:僅把/home/user目錄的權限設定為rwxrwxrwx

[root@localhost ~]# chmod -R 777 /home/user 注:表示将整個/home/user目錄與其中的檔案和子目錄的權限都設定為rwxrwxrwx

六、使用指令chown改變目錄或檔案的所有權

檔案與目錄不僅可以改變權限,其所有權及所屬使用者組也能修改,和設定權限類似,使用者可以通過圖形界面來設定,或執行chown指令來修改。

我們先執行ls -l看看目錄情況:

可以看到conkyrc.sample檔案的所屬使用者組為root,所有者為root。

執行下面指令,把conkyrc.sample檔案的所有權轉移到使用者user:

[root@localhost ~]# chown user conkyrc.sample

-rwxrwxrwx 1 user root 12172 8月 15 23:18 conkyrc.sample

要改變所屬組,可使用下面指令:

[root@localhost ~]# chown :users conkyrc.sample

-rwxrwxrwx 1 user users 12172 8月 15 23:18 conkyrc.sample

要修改目錄的權限,使用-R參數就可以了,方法和前面一樣。

本文轉自奔跑在路上部落格51CTO部落格,原文連結http://blog.51cto.com/qiangsh/1582363如需轉載請自行聯系原作者

qianghong000

繼續閱讀