Linux 的檔案管理
Linux的檔案系統 單一樹狀結構 只有一個最高的節點-根目錄 / 所有檔案或目錄都是由根目錄往下延伸
Linux的檔案系統 檔案與目錄名稱的大小寫不同 如/usr/local/與/usr/Local不同 /tmp/testfile與/tmp/TestFile指的是不同的檔案 指令為LANG=C,要避免打成lang=c
Linux的主要目錄 遵循「檔案系統樹狀標準FHS(Filesystem Hierarchy Standard)」的統一規範 Linux/UNIX的目錄結構的共同標準 使用ls /bin可列出/bin目錄的內容
Linux的主要目錄 /bin bin→binary (0/1)代表機器碼 ,執行檔 只要檔案的屬性為可執行,這個檔案即為可執行檔 /sbin 系統管理指令或工具 系統管理者專用的執行檔 只提供管理者執行 如格式化硬碟分割區指令mke2fs
Linux的主要目錄 /usr /usr/bin /home /root 套件軟體(packages)安裝目錄 通常占很大比例的系統磁碟空間 一般執行檔,提供給一般使用者的工具或指令 /home 一般使用者的家目錄(home directory) 使用者成功登入後,會直接在該目錄中 /root 系統管理者(超級使用者, super user) root的家目錄
Linux的主要目錄 /etc Linux系統最重要的目錄之一 放置所有系統設定檔,大都是純文字檔 只有系統管理員可以修改這些檔案 如inittab、resolv.conf、fstab、rc.d目錄等 需要定期備份 /boot 核心檔案目錄 放置系統開機必須使用的核心檔案
Linux的主要目錄 /dev 系統設備目錄 所有裝置與設備(device)在Linux中,都以檔案或目錄方式存在於/dev/目錄 如軟碟機/dev/fd0、印表機/dev/lp0、SCSI硬碟/dev/sd1、光碟機為/dev/cdrom /tmp 暫時存放檔案目錄
Linux的主要目錄 /lib 系統的共用函式庫檔案(.o, .so) /var 變動性與系統等待排隊處理的檔案 記錄檔(log)放置於/var/log/目錄 Email等待送出目錄/var/spool/mail MySQL資料庫目錄/var/db/mysql
Linux指令規格(P 3-8) Linux指令規格 大部份的Linux指令都有選項及參數的設計 不同的參數可讓指令有多種的功能與變化 指令是使用者想要執行的工作 有特別的需求,才加入選項,選項會影響指令的執行結果 指令的選項大都未限定只能使用一個
常用的指令選項 -h:Help,顯示簡單指令用法 -l:Long,以詳細方式顯示指令結果 -a:All,以全部方式顯示指令結果 -r:Recursive,指令適用於所有的子目錄及檔案 -v:Verbose,詳細方式顯示指令執行過程
目錄相關指令(P 4-5) 列出目前在那個目錄下-pwd 目前目錄下的檔案清單-ls ls指令(list)是用來列出檔案資訊的重要指令
列出目錄內容 (P 4-5) ls:列出簡單的目錄內容 ls -l:列出詳細的目錄內容 ls -a:列出目錄的所有檔案,包括以"."開頭的檔案 ls -F:列出目錄內容,並在檔名的後面加下列的特殊字元"*/=@|"來區別檔案的屬性。*(綠色):可執行檔、/(藍色):目錄、無(白色):一般檔案、@(水藍色):symbolic link
列出檔案清單的 ls 指令 (P 4-6) 以較詳細的格式顯示檔案: 檔案權限 擁有者 檔案大小 檔案名稱 子目錄數目 連結數 擁有群組 更動時間
權限的意義 (P 4-6) 執行 ls -l 或 ls -al 指令時, 第一欄共 10 個字元用來標示該檔案的屬性及權限: 由上圖中可以看出, 除了第一個字元標明檔案的屬性外, 每個檔案的權限, 都可以分別對該檔案的擁有者、同群組的使用者, 以及其他使用者這 3 種類別的人加以設定。
檔案屬性 (P 4-6) 上述 10 個字元中的第 1 個字元, 用於標示 檔案屬性: d:表示這是一個目錄。在 ext2/ext3 中, 目錄被視為一種特殊的檔案。 -:表示這是一個普通的檔案。 l:表示這是一個符號連結的檔案, 實際上指向另一個檔案。 b、c:分別代表區塊設備和其他的周邊設備, 是特殊型態的檔案。 s、p:這些檔案關係到系統的資料結構和管線, 通常很少見到。
一般權限 (P 4-6) 第 2〜10 字元當中每 3 個為一組, 分別標示不同使用者的權限。關於這 3 個一組共 9 個字元, 其代表意義如下: r (Read, 讀取):對檔案而言, 使用者具有讀取檔案內容的權限;對目錄而言, 使用者擁有瀏覽目錄內容的權限 (但不一定可以讀取該目錄下的檔案, 是否可讀取, 仍取決於要讀取 "檔案" 的 "r" 讀取權限)。
一般權限(P4-6) w (Write, 寫入):對檔案而言, 使用者具有修改檔案內容的權限;對目錄而言, 使用者具有刪除、或移動目錄內檔案的權限。 x (eXecute, 執行):對檔案而言, 使用者具有執行檔案的權限;對目錄而言, 使用者具進入目錄的權限 (但不一定可以瀏覽目錄, 是否可瀏覽, 取決於該目錄的 "r" 讀取權限)。 -:表示不具有該項權限。
一般權限(P4-6) 我們舉些範例說明會更清楚: -rwx------:檔案擁有者對檔案具有讀取、寫入與執行的權限。 -rwxr--r--:檔案擁有者具有讀、寫與執行的權限, 同群組及其他使用者則具有讀取的權限。 -rw-rw-r--:檔案擁有者與同群組的使用者對檔案具有讀寫的權限, 而其他使用者僅具有讀取的權限。
一般權限(P4-6) drwx--x--x:目錄擁有者具有讀、寫與進入目錄的權限, 同群組及其他使用者僅能進入該目錄, 卻無法讀取檔案列表。
目錄相關指令(P 4-9) 隱藏檔 隱藏檔就是檔案或目錄名稱以 . 開頭 如.bashrc或.ssh/ ls指令加上-a選項,則可列出所有檔名
變更所在目錄 (P 4-10) cd 路徑名稱:變更到指定目錄 cd ~, cd:回到使用者的Home Directory 可設定CDPATH環境變數 pwd :顯示目前所在目錄
目錄相關指令(P 4-11) 「相對路徑」與「絕對路徑」 「相對路徑」是指以目前目錄所在的位置來做切換。 cd ..、cd ../.. 、cd ../../../home/jack 「絕對路徑」係指以/(根目錄)開始的路徑切換方式 cd /var/log、cd /home/jack cd /home/jack
目錄相關指令(P 4-11) 複製檔案 cp(copy的簡寫)拷貝檔案或目錄至所需位置 例如複製檔案/etc/fstab至目前目錄下 cp /etc/fstab . 複製檔案aa至/tmp目錄下 cp aa /tmp 複製檔案aa至/tmp目錄下,並更名為bb cp aa /tmp/bb 將一個目錄全部複製至目的地,此時加上參數-r cp -r dir1 /tmp/
目錄相關指令(P 4-12) mv移動檔案 mv(move)將現在的檔案移動到其他目錄內 將檔案aa移動至/tmp目錄下 mv aa /tmp/ 將/tmp/aa檔案搬移至/home目錄下 mv /tmp/aa /home/ 更改檔案名稱 mv aa ab
目錄相關指令(P 4-13) rm刪除檔案 刪除檔案指令為rm (remove) 刪除檔案aa 不想顯示詢問對話框,能加上參數-f,直接刪除檔案 rm –f aa 刪除/tmp/dir1目錄內的所有檔案,且不用詢問 rm -rf /tmp/dir1
線上協助文件 眾多的指令與複雜的選項與參數,很難全部完整背下來 忘了某個指令的用法或參數或選項時,可以查閱線上操作手冊 分為操作手冊(man)與說明文件(info)兩種
線上協助文件(P 4-13) man (manual pages) 指令操作手冊 man 指令名稱 例如:man ls apropos 關鍵字:用關鍵字搜尋所有 manual pages
線上協助文件 man使用的功能 功能 說明 空白鍵 往下翻頁 PageDown 往下翻頁,與空白鍵相同 PageUp 往上翻頁 /欲搜尋字串 搜尋字串,如/list代表搜尋list字串 N 往下繼續搜尋下一個 n 往前繼續搜尋上一個 q 離開man
檔案相關指令(P 4-17) 觀看檔案內容-cat cat指令加上欲觀看的檔名 觀看/root/install.log檔案內容 想要觀看/var/log/messages檔案內容時 cat /var/log/message 檔案內容輸出時加上行號,使用-n選項
檔案相關指令(P 4-18) 輸出檔案內容並分頁顯示-more more /root/install.log
檔案相關指令(P 4-19) less指令觀看檔案內容 less指令與more類似,但less功能更多 less除了能往後分頁外亦能往前移動 能在文字檔案內搜尋、並移動到特定的位置
檔案相關指令(P 4-20) 觀看檔案最後與最前面的內容-tail與head 觀看檔案尾端的指令tail tail /var/log/dmesg 選項-n 列數 顯示檔案尾端最後列數, 例如tail -n 3 /var/log/dmesg -f 追縱選項 「隨時」監控或觀察記錄檔有無新的訊息 tail -n 3 -f /var/log/messages 觀看檔案前端的指令head
檔案相關指令(P 4-23) 產生空白檔案-touch 改變檔案的更動時間指令-touch 改變特定檔案的更動時間
檔案權限設定(P 7-12) chmod {421}{777}:依照選項執行權限更改 chmod {a,u,g,o}{+-=}{rwxst}:依照選項執行權限更改 chown 新的擁有者 檔案:將檔案的擁有者改變 chgrp 新的群組 檔案:將檔案的所屬群組改變
特殊權限 其實檔案與目錄的權限設定不只如此, 還有所謂的特殊權限存在。由於特殊權限會擁有一些 『特權』 , 因而使用者若無特殊需求, 不應該去開啟這些權限, 避免安全方面出現嚴重漏洞, 讓怪客入侵。 SUID (Set UID):可執行的檔案若搭配這個權限, 該檔案便能得到特權, 可以任意存取該檔案擁有者能使用的全部系統資源。例如:passwd
特殊權限 SGID (Set GID):套用在檔案上面, 其效果和 SUID 相同, 只不過將範圍由檔案擁有者擴大成群組。也就是說, 擁有此權限的檔案, 可以任意存取整個群組所能使用的系統資源。
特殊權限 T (Sticky):Linux開放 /tmp 和 /var/tmp 兩個目錄, 供所有使用者暫時存放檔案,亦即每位使用者皆擁有完整的權限進入該目錄,去瀏覽、刪除與移動檔案。假使碰到某位使用者存心搞鬼,恣意亂刪其他使用者放置的檔案,暫存目錄將形同危險地帶,造成沒有任何使用者能夠安心利用這些目錄。因此我們可以把暫存目錄的 Sticky 權限打開,則存放在該目錄的檔案, 僅准許其擁有者及管理者去刪除與搬移,避免不守法的使用者無故騷擾。