天天看點

Linux的檔案權限和目錄配置

2.1、Linux的檔案權限和目錄配置

2.1.1、Linux檔案屬性

以root身份登入後,執行“ls–al”将會出現如下内容:

<span style="font-size:10px;">[[email protected] ~]# ls -al

總用量 44

dr-xr-x---.  5 root root 4096 8月   6 14:44 .

dr-xr-xr-x. 17 root root 4096 7月  25 05:33 ..

-rw-------.  1 root root 1426 7月  25 05:35 anaconda-ks.cfg

-rw-------.  1 root root  431 8月   6 11:13 .bash_history

-rw-r--r--.  1 root root   18 12月 29 2013 .bash_logout

-rw-r--r--.  1 root root  176 12月 29 2013 .bash_profile

-rw-r--r--.  1 root root  176 12月 29 2013 .bashrc

drwx------.  4 root root   29 8月   6 10:23 .cache

drwxr-xr-x.  3 root root   17 8月   6 10:23 .config

-rw-r--r--.  1 root root  100 12月 29 2013 .cshrc

drwx------.  3 root root   24 7月  24 21:39 .dbus

-rw-r--r--.  1 root root 1474 7月  24 21:53 initial-setup-ks.cfg

-rw-r--r--.  1 root root  129 12月 29 2013 .tcshrc

-rw-------.  1 root root   66 8月   6 14:44 .xauthqxoZZ4</span>
           

從上述可以看出,共有七列資料,下面将一一講述

  •   第一列代表檔案的類型與權限

               第一列共有10個字元,第一列代表這個檔案是“目錄、檔案或連結檔案等”

  •  若是[d]則表示目錄
  •  若是[-]則表示檔案
  •  若是[l]則表示連結檔案
  •  若是[ b ]則表示為裝置檔案裡面的可供儲存的接口裝置
  • 若是[ c ]則表示為裝置檔案裡面的串行端口裝置,例如鍵盤、滑鼠(一次性讀取裝置)
   接下來的字元中,以三個為一組,且均為[rwx]的三個參數的組合, [r ]代表可讀(read)、[ w ]代表可寫(write)、[ x ]代表可執行(execute)要注意的是,這三個權限的位置不會改變,如果沒有權限,就會出現減号[ - ]。
  •   第一組:檔案擁有者的權限
  •   第二組:同群組的權限
  •   第三組:其他非本使用者組的權限
  •   第二清單示有多少個檔案名連結到此節點

    記錄有多少不同的檔名連結到相同的一個i-node,一般來說,若是檔案則為1,若是檔案夾(目錄)則表示其下檔案和目錄的個數.

  •  第三清單示檔案(或目錄)的擁有者
  •  第四清單示檔案的所屬群組
  •  第五清單示檔案的容量大小(預設機關為bytes)
  •  第六清單示檔案的建檔日期或者是最近的修改日期
  • 第七清單示檔案的全路徑及其檔案名

2.1.2、檔案屬性和權限更改

Linux檔案屬性和權限的更改主要通過以下幾個指令來實作:

(1)chgrp:更改檔案所屬使用者組

(2)chown:更改檔案擁有者

(3)chmod:改變檔案的權限

  •   改變所屬使用者組:chgrp

[[email protected] tmp]# ls -al dir

總用量 4

drwxrwxr-x.  3 www1234  www1234   32  8月   6 15:14  .

drwxrwxrwt. 25 root       root      4096  8月   6 15:14  ..

drwxrwxr-x.  3 www1234  www1234   17  8月   6 15:13  dir2

-rwxrw-rw-.  1 www1234  www1234    0  8月   6 15:13  file.txt
           

從上可以看出,dir2和file.txt檔案是屬于www1234使用者組。

[[email protected] tmp]# chgrp user -R dir

[[email protected] tmp]# ls -al dir

總用量 4

drwxrwxr-x.  3 www1234  user   32    8月   6 15:14  .

drwxrwxrwt. 25 root       root  4096   8月   6 15:15  ..

drwxrwxr-x.  3 www1234  user   17    8月   6 15:13  dir2

-rwxrw-rw-.  1 www1234  user    0    8月   6 15:13  file.txt

  • 改變檔案所有者:chown

[[email protected] tmp]# chown user1 -R dir

[[email protected] tmp]# ls -al dir

總用量 4

drwxrwxr-x.  3 user1  user   32   8月   6 15:14  .

drwxrwxrwt. 25 root   root  4096  8月   6 15:22  ..

drwxrwxr-x.  3 user1  user   17   8月   6 15:13  dir2

-rwxrw-rw-.  1 user1  user    0   8月   6 15:13  file.txt

關于檔案的複制cp

複制行為會複制執行者的屬性與權限,通過以下例子可以了解:

[[email protected] tmp]# ls -al /home/www1234/file.txt

-rwxrw-r--. 1 www1234 www1234 0 8月   6 15:13 /home/www1234/file.txt

[[email protected] tmp]# cp /home/www1234/file.txt /home/user1/file.txt

[[email protected] tmp]# su user1

[[email protected] tmp]$ ls -al /home/user1/file.txt

-rwxr--r--. 1 root root 0  8月   6 15:36  /home/user1/file.txt

從上表看出,使用者www1234檔案file.txt的使用者所有者,所屬使用者組均為www1234,而執行複制的操作的執行者是root使用者,是以複制的檔案屬于root使用者所有,檔案的讀寫屬性也發生了變化。

  •  改變權限:chmod

數字類型改變權限:r:4,w:2,x:1

每種身份(owner、group、others)各自的三個權限(r、w、x)分數是需要累加的。

例如:[-rwxr-x---]

owner:rwx=4+2+1=7

group:r-x=4+1=5

others:---=0+0+0=0

改變main.c的權限:

chmod 777 main.c  權限變為[-rwxrwxrwx]

  •  權限對檔案的意義:
  •  r (read):可讀取此一檔案的實際内容,如讀取文本檔案的文字内容等;
  • w (write):可以編輯、新增或者是修改該檔案的内容(但不含删除該檔案);
  •  x (execute):該檔案具有可以被系統執行的權限.

在Windows底下一個檔案是否具有執行的能力是藉由擴充名來判斷的, 例如:.exe, .bat, .com 等等

在Linux底下,我們的檔案是否能被執行,則是藉由是否具由x這個權限來決定的!跟檔名是沒有絕對的關系的。

  •   權限對目錄的意義:
  •  r (read contents in directory):

    表示具有讀取目錄結構清單的權限,是以當你具有讀取(r)一個目錄的權限時,表示你可以查詢該目錄下的檔案名資料. 是以你就可以利用 ls 這個指令将該目錄的内容清單顯示出來!

  • w (modify contents of directory):

    建立新的檔案與目錄;

    删除已經存在的檔案與目錄(不論該檔案的權限為何)

    将已存在的檔案或目錄進行更名;

    搬移該目錄内的檔案、目錄位置.

  • x (access directory):

    使用者具備進入該目錄成為工作目錄的權限

2.1.3、Linux目錄配置

Linux的檔案權限和目錄配置

Linux目錄結構

目錄 應存放檔案内容
/bin 系統啟動時需要的執行檔案(二進制)
/boot 這個目錄主要放置開機時會使用到的檔案,包括Linux核心檔案以及開機菜單與開機所需配置檔案等
/dev 在Linux系統上任何裝置和接口裝置都是以檔案的形式存放在系統目錄的。隻要通過通路目錄下的某個檔案就等于通路某個裝置。
/etc 系統的主要配置檔案幾乎都放置在這個目錄内,例如人員的賬号密碼檔案、各種服務的起始檔案等。一般來說,這個目錄下的各檔案屬性是可以讓一般使用者查閱的,但隻有root使用者有修改權力。
/home 這是系統預設的使用者主檔案夾。在你建立一個一般使用者賬戶時,預設的主檔案夾都會規範到這裡。~:代表目前這個使用者的主檔案夾,~dmtsal:代表dmtsal使用者的主檔案夾
/lib 系統的函數庫非常多,而/lib放置則是開機時會用到的函數庫,以及/bin或/sbin下面的指令或調用的函數庫
/media /media下面放置的是可删除的裝置,包括軟碟、 CD光牒、DVD等裝置都挂載于此。常見的檔案名有/media/floppy,/media/cdrom等。
/mnt 如果你想暫時挂載某些額外裝置,一般可以放置到這個目錄中。
/opt 給主機額外安裝軟體所擺放的目錄,第三方軟體安放的目錄。以前的 Linux 系統中,習慣放置在 /usr/local 目錄下
/root 系統管理者的主檔案夾
/sbin 可執行程式的目錄,但大多存放涉及系統管理的指令。隻有root權限才能執行
/svr 服務啟動之後需要通路的資料目錄,如www服務需要通路的網頁資料存放在/srv/www内
/tmp 這是讓一般使用者或者是正在執行的程式暫時放置檔案的地方。這個目錄是任何人都能通路的,但一般開機後都會對/tmp下的資料進行删除。
/proc 此目錄的資料都在記憶體中,如系統核心,外部裝置,網絡狀态,由于資料都存放于記憶體中,是以不占用磁盤空間,比較重要的目錄有/proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/*等
/lost+fount 統異常産生錯誤時,會将一些遺失的片段放置于此目錄下,通常這個目錄會自動出現在裝置目錄下。如加載硬碟于/disk 中,此目錄下就會自動産生目錄/disk/lost+found
/sys 這個目錄和/proc非常相似,也是一個虛拟檔案系統,主要記錄與核心相關的資訊。包括目前已加載的核心子產品與記憶體檢測到的硬體裝置資訊等。這個目錄同樣不占硬碟容量。

/usr:應用程式存放目錄,是以系統預設的軟體都會放到/usr目錄下,這個目錄有點類似于windows系統中的“C:\Windows\”和“C:\Program files\”這兩個目錄的綜合體,系統剛安裝完畢,系統會占用最多的硬碟容量。

目錄 應存放檔案内容
/usr/X11R6 該目錄用于儲存運作X-Window所需的所有檔案。該目錄中還包含用于運作GUI要的配置檔案和二進制檔案。
/usr/bin/ 這個目錄是可執行程式的目錄,普通使用者就有權限執行; 當我們從系統自帶的軟體包安裝一個程式時,他的可執行檔案大多會放在這個目錄
/usr/sbin/ 非系統正常運作所需要的系統指令。最常見的就是某些網絡伺服器軟體的指令
/usr/include/ C/C++等程式語言的頭檔案與包含檔案的放置處,當我們以tarball方式(*.tar.gz的安裝方式安裝軟體)安裝某些資料時,會使用到裡面的很多頭檔案。
/usr/lib/ 包含各應用軟體的函數庫、目标檔案,以及不被使用者慣用的執行文本或腳本
/usr/local/ 系統管理者在本機自行安裝自己下載下傳的軟體時,建議安裝到此目錄,這樣比較友善管理。
/usr/share/ 系統共用的東西存放地,比如 /usr/share/fonts 是字型目錄,是使用者都共用的。
/usr/src 是核心源碼存放的目錄

/var:

/usr是安裝時會占用較大硬碟容量的目錄,/var是在系統運作後才會逐漸占用硬碟容量的目錄。/var目錄主要針對常态性變動的檔案,包括緩存(cache)、登入檔案(logfile)以及某些軟體運作所産生的檔案,包括程式檔案(lock file,run file)或者mysql資料庫檔案。

目錄 應存放檔案内容
/var/cache 應用程式本身運作過程中會産生的一些緩存檔案
/var/lock/ 某些裝置或者某些檔案資源一次隻能被一個應用程式所使用,如果同時兩個應用程式使用裝置時,就有可能産生一些錯誤的狀況,就需要對裝置進行上鎖。
/var/log/ 随時更改的日志檔案
/var/mail/ 放置個人電子郵件的目錄,不過這個目錄也被放置到/var/spool/mail目錄中,通常這兩個目錄互為連接配接檔案
/var/run 某些程式啟動後,它會将它們的PID放置在這個目錄
/var/spool/ 這個目錄通常放置一些隊列資料

2.1.4、絕對路徑與相對路徑

  •  絕對路徑:由跟目錄(/)開始寫起的檔案名或目錄名稱
  • 相對路徑:相對于目前路徑檔案名的寫法
  • . :表示目前目錄,也可以使用./代替
  •   ..:表示上一層目錄,也可以用../來表

繼續閱讀