歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux技術 >> linux學習日記三 文件權限與目錄配置

linux學習日記三 文件權限與目錄配置

日期:2017/3/1 18:03:46   编辑:Linux技術

===一個簡單的ls -al的例子:===

-rw-r–r–. 1 root root 57494 Oct 1 08:08 install.log

第一列表示文件的權限,共有10個字符組成。第一個字符表示文件類型:

d:表示目錄;-:表示是文件;l表示是鏈接文件linkfile;b表示塊設備文件(設備文件裡面的可供存儲的接口設備);c表示字符設備文件(設備文件中的串行端口設備,例如鍵盤、鼠標等一次性讀取設備),s表示套接字sockets文件,p表示管道FIFO文件。接下來三個一組,分別代表owner、group、other的權限。

第二列表示有多少文件名連接到此節點(inode)

第三列和第四列分別表示owner和group名稱

第五列表示文件大小,單位是字節bytes/B

第六列表示文件創建日期或者最近修改日期,如果修改日期離現在太久了,就只顯示年月日信息。可以用參數 ls -al –full-time顯示完整時間。

第七列就是文件名了,如果有個.前綴的話表示隱藏文件。

===修改文件屬性===

chown:改變文件的owner,隨便還可以修改group

用法:chown [-R] ownner:group dirname/filename,其中-R表示遞歸修改目錄以及該目錄下的所有文件屬性。

chgrp:修改文件的group

用法:chgrp [-R] group dirname/filename

===修改文件權限===

chmod:可以使用數字或者符號兩種方式進行權限的更改。

用法:注意,u代表owner,g代表group,o代表other,a代表all

數字形式:chmod [-R] 777 dirname/filename;

=號形式:chmod [-R] u=rwx,go=rx dir/file;

+-形式:chmod [-R] u-r,g+w,a-r dir/file

===目錄與文件的權限意義===

對文件的意義:

r:可讀取文件內容

w:可編輯、新增或者修改文件的內容,注意,是文件的內容。但不含刪除該文件

x:可被系統執行

對目錄的意義:

r:讀取該目錄結構列表的權限,當你具有r一個目錄的權限時,表示你可以查詢該目錄下的文件名數據,可以用ls命令列出目錄下文件名列表

w:這個可寫入權限對目錄來說很強大,具有更改目錄結構列表的權限,也就是可以在該目錄裡面新建新的文件和目錄,刪除該目錄下的文件和目錄(不論該文件的權限為何);將已存在的文件或目錄重命名;轉移該目錄內的文件、目錄的位置。

x:進入該目錄,使得該目錄成為當前工作目錄的權限。要想能查看某個目錄下文件內容, 必須對該目錄具備x權限才行。

===目錄配置標准FHS===

FHS標准建議:根目錄(/)所在的分區應該越小越好,且應用程序所安裝的軟件最好不要與根目錄放在同一個分區,保持根目錄越小越好。如此不但性能較好,根目錄所在的文件系統也不容易發生問題。有鑑於上述的說明,因此FHS定義出根目錄(/)底下應該要有底下這些次目錄的存在才好:

目錄 應該放置文件內容 /bin 系統有很多放置執行檔的目錄,但/bin比較特殊。因為/bin放置的是在單人維護模式下還能比操作的指令。在/bin地下的指令可以被root與一般賬號所使用,主要有:cat, chmod, chown, date, mv, mkdir, cp, bash等等常用的指令。 /boot 這個目錄主要放置開關機使用到的檔案,包括linux核心檔案以及開機選單與關機所需設定檔等。linux kerne常用的檔名為:vmlinuz,如果使用的是grub這個開機管理程序,則還會存在/boot/grub這個目錄。 /dev 在linux系統上,任何設備都是以檔案的形態存在於這個目錄中,比較重要的有/dev/null, /dev/zero, /dev/tty, /dev/lp*, /dev/hd*, /dev/sd*等等。 /etc 系統主要的配置文件幾乎都在這個目錄內,例如人員的賬號與密碼、 各種服務的啟動文件。一般來說,這個目錄下的文件一般用戶只能看,而只有root可以修改和執行。FHS建議不要放置可執行文件(binary)在這個目錄中。比較重要的文件有: /etc/inittab, /etc/init.d/, /etc/modprobe.conf, /etc/X11/, /etc/fstab, /etc/sysconfig/ 等等。另外,其下重要的目錄有:

  • /etc/init.d/:所有服務的預設啟動 script 都是放在這裡的,例如要啟動或者關閉 iptables 的話:『 /etc/init.d/iptables start』、『/etc/init.d/iptables stop』
  • /etc/xinetd.d/:這就是所謂的super daemon管理的各項服務的配置文件。
  • /etc/X11/:與 X Window 有關的各種配置文件都在這,尤其是 xorg.conf 這個 X Server 的配置文件。
/home 系統家目錄。比較重要的是,家目錄有兩種代號:
~:目前使用者的家目錄
~yidao:代表 yidao的家目錄! /lib 系統的函數庫非常的多,而/lib放的是開機要用到的函數庫, 以及在/bin或/sbin底下的指令會調用的函數庫。 尤其重要的是/lib/modules/這個目錄, 因為該目錄會放kernel相關的驅動程序模塊等! /media media是『媒體』的英文,顧名思義,這個/media底下放置的就是可移除的裝置啦! 包括軟盤、光盤、DVD等等裝置都暫時掛載於此。常見的有:/media/floppy, /media/cdrom等等。 /mnt 暫時掛載用,一般建議妳可以放置到這個目錄中。 在古早時候,這個目錄的用途與/media相同啦!只是有了/media之後,這個目錄就暫時掛載用 /opt 第三方軟件目錄。 舉例來說,KDE這個桌面管理系統是一個獨立的計劃,不過它可以安裝到Linux系統中,因此KDE的軟件就建議放置到此目錄下了。 另外,你想自行安裝額外的軟件(非原本的distribution提供的),那麼也能夠將你的軟件安裝到這裡來。不過,以前的Linux系統中,我們還是習慣放在在/usr/local目錄下呢! /root 系統管理員(root)的家目錄。之所以放在這裡,是因為如果進入單人維護模式而僅掛載根目錄時, 該目錄就能夠擁有root的家目錄,所以我們希望root的家目錄與根目錄放置在同一個分區中。 /sbin Linux有非常多指令是用來設定系統環境的,這些指令只有root才能夠利用來『設定』系統,其他使用者最多只能用來『查詢』而已。 放在/sbin底下的為開機過程中所需要的,裡面包括了開機、修復、還原系統所需要的指令。 至於某些服務器軟件,一般放置到/usr/sbin/中。至於本機自行安裝的軟件的系統執行文件(system binary), 放置到/usr/local/sbin/中了。常見的指令包括:fdisk, fsck, ifconfig, init, mkfs等等。 /srv srv可以視為『service』的縮寫,是一些網絡服務器啟動之後,這些服務所需要取用的資料目錄。 常見的服務例如WWW, FTP等等。舉例來說,WWW服務器需要的網頁資料就可以放置在/srv/www/裡面。 /tmp 讓一般使用者或者正在執行的程序放置文件的地方。 這個目錄是任何人都能夠存取的,所以你需要定期的清理一下。當然,重要資料不可放置在此目錄啊! 因為FHS甚至建議在開機時,刪除/tmp下所有文件!

事實上FHS針對根目錄的標准就僅有上面的咚咚,不過我們的Linux底下還有許多目錄你也需要了解一下的。 底下是幾個在Linux中也是非常重要的目錄喔:

目錄 應放置文件內容 /lost+found 這個目錄是使用標准的ext2/ext3文件系統格式才會產生的一個目錄,目的在於文件系統發生錯誤時, 將一些遺失的片段放置到這個目錄下。這個目錄通常在分隔槽的最頂端, 例如你加裝一顆硬盤在/disk中,那在這個系統下就會自動產生一一個這樣的目錄『/disk/lost+found』 /proc 這個目錄本事是一個『虛擬的文件系統(virtual filesystem)』喔!他放置的資料都在內存中, 例如系統核心、進程(process)、周邊裝置的狀態及網絡狀態等等。因為這個目錄下的資料都是在內存中, 所以本身不占任何硬盤空間啊!比較重要的文件例如:/proc/cpuinfo, /proc/dma, /proc/interrupts, /proc/ioports, /proc/net/* 等等。 /sys 這個目錄其實跟/proc非常類似,也是一個虛擬的文件系統,主要也是記錄與核心相關的資料。 包括目前已載入的核心模組與核心檢測到的硬件信息等等。這個目錄同樣不占硬盤空間

* /usr的意義和內容:

usr是Unix Software Resource的縮寫。根據FHS的基本定義,/usr裡面放置的數據屬於可分享的並且不可變的的(shareable,static),系統所有默認的軟件(distribution發布者提供的軟件)都會放置在/usr下面,因此這個目錄有點類似win中的C:\Program Files目錄。一般來講,/usr子目錄如下:

目錄 應該放置文件內容 /usr/X11R6/ 為X Window System重要資料所放置的目錄,之所以取名為X11R6是因為最後的X版本為第11版,且該版的第6次釋出之意。 /usr/bin/ 絕大部分的使用者可使用指令都放在這裡!請注意到他與/bin的不同之處。(是否與開機過程有關) /usr/include/ c/c++等程式語言的頭文件(header)與包含檔(include)放置處,當我們以tarball方式 (*.tar.gz 的方式安裝軟件)安裝某些資料時,會使用到裡頭的許多包含檔喔! /usr/lib/ 包含各應用程序的函數庫、目標文件(object file),以及不被一般使用者慣用的執行文件或腳本(script)。 某些軟件會提供一些特殊的指令來進行服務器的設定,這些指令也不會經常被系統管理員操作, 那就會被擺放到這個目錄下啦。要注意的是,如果你使用的是X86_64的Linux系統, 那可能會有/usr/lib64/目錄產生喔! /usr/local/ 系統管理員在本機自行安裝自己下載的軟件(非distribution預設提供者),建議安裝到此目錄, 這樣便於管理。舉例來說,你的distribution提供的軟件較舊,你想安裝較新的軟件但又不想移除舊版, 此時你可以將新版軟件安裝於/usr/local/目錄下,可與原先的舊版軟件有分別啦! 你可以自行到/usr/local去看看,該目錄下也是具有bin, etc, include, lib…的次目錄喔! /usr/sbin/ 非系統正常運作所需要的系統指令。最常見的就是某些網絡服務器軟件的服務指令(daemon)! /usr/share/ 放置共享文件的地方,在這個目錄下放置的資料幾乎是不分硬件架構均可讀取的資料, 因為幾乎都是文字文件嘛!在此目錄下常見的還有這些次目錄:

  • /usr/share/man:線上說明文件
  • /usr/share/doc:軟件雜項的文件說明
  • /usr/share/zoneinfo:與時區有關的時區文件
/usr/src/ 一般原始碼建議放這裡,src有source的意思。至於核心原始碼則建議放置到/usr/src/linux/目錄下。

* /var的意義與內容:

如果/usr是安裝時會占用較大硬盤的目錄,那麼/var就是在系統運行後才會漸漸占用硬盤容量的目錄。因為/var目錄主要針對常態性變動文件,包括緩存cache、登陸文件日子log file以及某些軟件運行所產生的文件,包括程序文件(lock file,run file),或者例如mysql數據庫的文件。常見的子目錄為:

目錄 應放置文件內容 /var/cache/ 應用程序本身運作過程中會產生的臨時文件; /var/lib/ 程序本身執行過程中,需要使用的資料文件放在這個目錄。在此目錄下各自的軟件應該要有各自的目錄。舉例來說,MySQL的資料庫放置到/var/lib/mysql/而rpm的資料庫則放到/var/lib/rpm去! /var/lock/ 某些裝置或者是文件資源一次只能被一個應用程序所使用,如果同時有兩個程式使用該裝置時, 就可能產生一些錯誤的狀況,因此就得要將該裝置上鎖(lock),以確保該裝置只會給單一軟件所使用。 舉例來說,刻錄機正在刻錄一張光盤,你想一下,會不會有兩個人同時在使用一個刻錄機刻盤? 如果兩個人同時刻錄,那片子寫入的是誰的資料?所以當第一個人在刻錄時該刻錄機會上鎖, 第二個人就得要該裝置被解除鎖定(就是前一個人用完了)才能夠繼續使用。 /var/log/ 重要到不行!登錄日志文件放置的目錄!裡面比較重要的如/var/log/messages, /var/log/wtmp(記錄登錄者的訊息)等。 /var/mail/ 放置個人email信箱的目錄,不過這個目錄也被放置到/var/spool/mail/目錄中! 通常這兩個目錄是互為連接檔啦! /var/run/ 某些程式或者是服務啟動後,會將他們的PID放置在這個目錄下喔! 至於PID的意義我們會在後續提到的。 /var/spool/ 這個目錄通常放置一些隊列資料,所謂的『隊列』就是排隊等待其他程式使用的資料啦!這些資料被使用後通常都會被刪除。舉例來說,系統收到新信會放置到/var/spool/mail/中, 但使用者收下該信件後該封信原則上就會被刪除。信件如果暫時寄不出去會被放到/var/spool/mqueue/中, 等到被送出後就被刪除。如果是工作排程資料(crontab),就會被放置到/var/spool/cron/目錄中!

=========END========

Copyright © Linux教程網 All Rights Reserved