Unix/檔案指南
fstab(用於檔案系統表)檔案通常存在於Unix和類 Unix系統上,並且是系統配置的一部分。fstab 檔案通常列出所有使用的磁碟和磁碟分割槽,並指示如何使用它們或以其他方式將它們整合到整個系統的檔案系統中。
傳統上,fstab 僅被程式讀取,而不是寫入。但是,更多現代的系統管理工具可以自動構建和編輯 fstab,或充當它的圖形編輯器。系統管理員有責任正確建立和維護此檔案。
此檔案在給定的 Unix 變體上可能具有其他名稱;例如,它在Solaris上是/etc/vfstab。
示例
# device name mount point fs-type options dump-freq pass-num LABEL=/ / ext3 defaults 1 1 none /dev/pts devpts gid=5,mode=620 0 0 none /proc proc defaults 0 0 none /dev/shm tmpfs defaults 0 0 # my removable media /dev/cdrom /mnt/cdrom udf,iso9660 noauto,owner,kudzu,ro 0 0 /dev/fd0 /mnt/floppy auto noauto,owner,kudzu 0 0 # my NTFS Windows XP partition /dev/hda1 /mnt/WinXP ntfs ro,defaults 0 0 /dev/hda6 swap swap defaults 0 0 # my files partition shared by windows and linux /dev/hda7 /mnt/shared vfat umask=000 0 0
(kudzu 是紅帽和Fedora Core特有的選項)
第一列指示裝置名稱或定位分割槽或資料來源的其他方法。第二列指示資料將附加到檔案系統的位置。第三列指示檔案系統型別或用於解釋檔案系統的演算法。第四列提供選項,包括檔案系統是否應該在啟動時掛載。第五列調整分割槽的歸檔計劃(由 dump 使用)。第六列指示計算機開機時fsck實用程式掃描分割槽以查詢錯誤的順序。最後 2 列中的值為零將停用相應的功能 (http://www.humbug.org.au/talks/fstab/fstab_structure.html)。
要獲取有關 fstab 檔案的更多資訊,您可以閱讀有關它的手冊頁。
用於編輯 fstab 的Kfstab圖形配置實用程式可用於KDE。
另請參閱
/etc/group 儲存使用者組及其成員的最終列表。
典型的條目是
root::0:root,alice
它有四個部分,從左到右分別是:
- (root) 組名。
- () 以雜湊形式儲存的組密碼。通常不儲存。當儲存時,它允許任何知道密碼的使用者訪問該組,因此它降低了安全性。組密碼可以被隱藏並存儲在單獨的檔案中。
- (0) 分配給組的唯一 ID。小於 10 的組 ID 預留供系統使用。一些 unix(如 HP-UX)還保留其他組編號。
- (root,alice) 該組成員的使用者名稱列表。
/etc/passwd 是使用者身份驗證資料庫,它包含使用者列表及其關聯的內部使用者 ID 號。歷史上它還包含密碼,但由於此檔案需要對世界可讀(以便所有程式都可以使用它在使用者名稱和使用者 ID 之間進行轉換),因此將密碼儲存在此檔案中不再被認為是安全的。
此檔案中的條目採用以下形式
alice:*:134:20:Alice Monkey:/home/alice/:/bin/bash
它有七個部分,從左到右分別是:
- (alice) 使用者名稱。
- (*) 以雜湊形式儲存的密碼。在現代系統中,星號表示使用陰影,因此密碼可以在 /etc/shadow/ 中找到。
- (134) 分配給使用者的唯一 ID。一些唯一 ID 具有特殊用途。例如,使用者 ID 0 用於 root 使用者。
- (20) 使用者登入時分配給的組。
- (Alice Monkey) GCOS 欄位,可以用於任何內容或留空。通常用於有關使用者的個人資訊,例如全名。
- (/home/alice/) 使用者的主目錄。
- (/bin/bash) 使用者的預設 shell。
/etc/profile 包含使用 Bourne shell,“/bin/sh” 登入的使用者系統預設設定。當這些使用者登入時,Bourne shell 在向用戶提供 shell 提示符之前執行此檔案中的命令。這些命令中的大多數是變數賦值,它們配置 shell 的行為。
一些與 Bourne 相容的 shell 也使用此檔案,但其他 shell(例如 C shell)不使用。
/etc/shadow 包含使用陰影的系統中使用者的密碼。
alice:43SrweDe3F:621:5:30:10:100:900:
部分是
- (alice) 使用者名稱。
- (43SrweDe3F) 以雜湊形式儲存的密碼。
- (621) 上次密碼更改的日期。
- (5) 密碼可以更改之前最少的天數。
- (30) 使用者被迫更改密碼之前最多可以經過的天數。
- (10) 建議使用者更改密碼後最多可以經過的天數。
- (100) 帳戶可以處於非活動狀態的最長時間(以天為單位),超過此時間,帳戶將被暫停。
- (900) 帳戶到期日期,如果留空,帳戶將無限期保留。最常用於臨時帳戶。
/etc/sysctl.conf 配置正在執行的 Unix 核心的行為。在系統啟動期間,指令碼會讀取此檔案並使用“sysctl”來設定檔案中顯示的引數。更改檔案在下次重啟之前不會生效。
- /etc/aliases - 包含 sendmail 和其他 MTA(郵件傳輸代理)使用的別名。更新此檔案後,需要執行 newaliases 實用程式才能將更改傳遞到 sendmail。
- /etc/bashrc - bash shell 的系統範圍預設函式和別名
- /etc/conf.modules - 可配置模組的別名和選項
- /etc/crontab - 定期(每小時、每天、每週、每月等)執行不同命令的 shell 指令碼。
- /etc/DIR_COLORS - 用於在使用 ls 命令時儲存不同檔案型別的顏色。當用戶的主目錄中沒有 .dir_colors 檔案時,dircolors 命令會使用此檔案。與 eval 命令一起使用(見下文)。
- /etc/exports - 指定可以使用 NFS 匯出檔案系統的主機。Man exports 包含有關如何為遠端使用者設定此檔案的說明。
- /etc/fstab - 包含系統用於掛載目錄樹上不同分割槽和裝置的資訊
- /etc/HOSTNAME - 儲存主機計算機的名稱
- /etc/hosts - 包含主機名和絕對 IP 地址的列表。
- /etc/hosts.allow - 允許(由 tcpd 守護程序)訪問 Internet 服務的主機
- /etc/hosts.deny - 禁止(由 tcpd 守護程序)訪問 Internet 服務的主機
- /etc/group - 與 /etc/passwd 相似,但用於組
- /etc/inetd.conf - 配置 inetd 守護程序,告訴它提供哪些 TCP/IP 服務(在啟動時載入哪些守護程序)。為 Linux 系統安全做的一個好開頭就是關閉這些服務,除非它們是必需的。
- /etc/inittab - 在啟動時執行不同的程式和程序。這通常是負責(除其他事項外)設定預設執行級別、執行 /etc/rc.d 中包含的 rc.sysinit 指令碼、設定虛擬登入終端、響應時以有序方式關閉系統[Ctrl][Alt][Del],執行 /etc/rc.d 中的 rc 指令碼,以及為圖形登入提示執行 xdm(只有當預設執行級別設定為圖形登入時)。
- /etc/issue - 登入前訊息。這通常會被 /etc/rc.d/rc.S 指令碼(在 Slackware 中)或 /etc/rc.d/rc.local 指令碼(在 Mandrake 和 Red Hat 中,以及其他基於 rpm 的發行版中)覆蓋。如果需要自定義登入前訊息,則應在這些指令碼中註釋掉(或更改)相關行。
- /etc/lilo.conf - lilo 引導載入程式的配置檔案
- /etc/motd - 當天訊息檔案,在登入後立即列印。這通常會被 /etc/rc.d/rc.S(Slackware)或 /etc/rc.d/rc.local(Mandrake/Red Hat)在啟動時覆蓋。請參閱與 /etc/issue 有關的備註。
- /etc/mtab - 顯示當前掛載的裝置和分割槽及其狀態
- /etc/passwd - 包含註冊使用系統的使用者的密碼和其他資訊。出於明顯的安全原因,此檔案僅可由 root 讀取。root 可以直接修改它,但最好使用 passwd 等配置實用程式進行修改。損壞的 /etc/passwd 檔案很容易導致 Linux 系統無法使用。
- /etc/printcap - 顯示印表機的設定
- /etc/profile - 設定 bash shell 的系統範圍預設值。在 Slackware 中,正是這個檔案為彩色 ls 命令設定了 DIR_COLORS 環境變數。還設定其他系統範圍的 環境變數。
- /etc/resolv.conf - 包含本地機器使用的域名伺服器列表
- /etc/securetty - 包含允許 root 登入的終端列表。出於安全原因,這應該不包括撥號終端。
- /etc/termcap - ASCII 資料庫,定義不同控制檯、終端和印表機的功能和特性
- /etc/X11/XF86Config - X 配置檔案。Slackware 中的位置是 /etc/XF86Config。
- /proc/cpuinfo - cpu 資訊
- /proc/filesystems - 列印當前正在使用的檔案系統
- /proc/interrupts - 列印當前正在使用的中斷
- /proc/ioports - 包含連線到計算機的各種裝置使用的 I/O 地址列表
- /proc/kcore - 命令 ls -l /proc/kcore 將給出計算機上的 RAM 容量。也可以使用 free 命令來獲取相同的資訊(以及更多資訊)。
- /proc/version - 列印 Linux 版本和其他資訊
- /var/log/messages - 由 syslog 守護程序用於儲存核心啟動時訊息
- /var/log/lastlog - 由系統用於儲存有關上次啟動的資訊(可以使用 lastlog 閱讀)
- /var/log/wtmp - 包含二進位制資料,指示系統中每個使用者的登入時間和持續時間(可以使用 last 閱讀)
- /var/log/btmp - 包含二進位制資料,指示失敗的登入嘗試(可以使用 lastb 閱讀)
- /var/run/utmp - 包含二進位制資料,指示當前登入的使用者(可以使用 who 閱讀)
- /boot/vmlinuz - Linux 核心的典型位置和名稱。在 Slackware 發行版中,核心位於 /vmlinuz。
- /boot/grub/menu.lst - 為 GRUB 引導載入程式的使用者提供可用於繼續引導過程的可用核心和作業系統的配置設定。
/dev/cdrom 不是一個實際的裝置,但在許多系統上,它是一個指向實際 CD 裝置的符號連結。例如,一個 Linux 系統有/dev/hdb作為它的軟盤驅動器,可能有一個連結/dev/cdrom它重定向到/dev/hdb.
在 Linux 中,/dev/fd0是系統上的第一個軟盤驅動器。使用/dev/fd0H1440以高密度模式操作第一個軟盤驅動器。通常,在將軟盤驅動器格式化為特定密度時會呼叫它。Slackware 附帶的驅動程式允許將 3.5 英寸軟盤格式化為高達 1.7 MB 的空間。Red Hat 和 Mandrake 預設情況下不包含這些裝置驅動程式檔案。
同樣,/dev/fd1是第二個軟盤驅動器。
在 Linux 中,/dev/hda是第一個 IDE 硬碟。第二個驅動器是/dev/hdb或/dev/hdc,取決於硬體配置。某些 IDE 硬體允許最多四個驅動器,包括/dev/hdd.
許多機器有一個硬碟驅動器(hda)和一個 CD-ROM 驅動器(許多機器上的 hdc,但在某些機器上是 hdb)。通常,/dev/cdrom是 CD-ROM 驅動器的符號連結。
分割槽從 1 開始編號,例如/dev/hda1, /dev/hda2, ...
/dev/null 是一個不執行任何操作的裝置,在需要忽略或刪除程式輸出時使用。當程式希望儲存到檔案,但你不想儲存任何內容時,此檔案很有用。此檔案也可以用作程式的輸入,以表示空檔案。
沒有與/dev/null裝置相關的實際硬體。
示例
刪除名為“x”的檔案(命令 rm x)有時會導致錯誤,例如,如果檔案不存在
$ rm x rm: x: No such file or directory
可以透過將錯誤重定向到檔案來隱藏它。透過使用/dev/null作為檔案,錯誤永遠不會儲存到實際檔案。
Bourne shell: $ rm x > /dev/null 2>&1
在 Bourne shell 中,"2>&1" 將 "rm"(錯誤出現的地方)的標準錯誤重定向到標準輸出,然後 ">" 將標準輸出重定向到/dev/null.
建立名為 "y" 的空檔案的一種方法是
$ cat /dev/null > y
"cat" 命令將 "/dev/null" 檔案複製到標準輸出,shell 運算子 ">" 將此輸出重定向到 "y"。"/dev/null" 檔案在讀取時似乎為空,因此 "y" 檔案出現,但也是空的。(注意,在這種情況下,簡單地使用 ">" y" 會做同樣的事情。)
這些程式之間存在一些冗餘。例如,emacs 的外觀和行為可以透過使用 .emacs 檔案進行定製,也可以透過向 .Xdefaults 檔案新增適當的修改來進行定製。這些檔案的預設版本通常在軟體包使用它們的軟體包安裝時安裝在使用者的 home 目錄中。如果程式在其 home 目錄中找不到其配置檔案,它通常會回退到安裝在軟體包所在的子目錄之一中的系統範圍的預設配置檔案。
- .bash_logout - 在登出時由 bash shell 執行的檔案
- .bash_profile - bash shell 的初始化,僅在登入時執行。Bash 在啟動為登入 shell 或使用 -login 選項時,首先查詢 .bash_profile 檔案。如果找不到 .bash_profile,它會查詢 .bash_login。如果找不到,它會查詢 .profile。系統範圍的函式和別名位於 /etc/bashrc 中,預設環境變數位於 /etc/profile 中。
- .bashrc - 在 bash shell 啟動為非登入 shell 時執行的初始化命令
- .cshrc - 在啟動 C shell 時自動執行的初始化命令(類似於 autoexec.bat)
- .emacs - emacs 編輯器的配置檔案
- .fvwmrc - fvwm 視窗管理器的配置檔案
- .fvwm2rc - fvwm2 視窗管理器的配置檔案
- .jedrc - jed 文字編輯器的配置檔案
- .lessrc - 通常包含使用 less 命令進行游標移動的鍵繫結
- .login - 使用者登入時的初始化檔案
- .logout - 使用者登出時執行的命令
- .wm_style - 如果在 startx 中沒有指定視窗管理器,則提供預設視窗管理器的選擇
- .Xdefaults - 為單個使用者設定 X 資源。可以透過修改此檔案來更改許多不同應用程式程式的行為。
- .xinitrc - 執行 startx 時的初始化檔案。可用於啟用應用程式,執行給定的視窗管理器,以及修改根視窗的外觀。
- .xsession - xdm 的配置檔案
儘管有諸如 Linux 檔案系統層次結構標準 (FHS) 組織之類的標準化嘗試,但不同的發行版具有不同的目錄結構。
- /bin - 重要的 UNIX 命令,如 ls 等。應包含啟動系統或以單使用者模式執行系統所需的所有二進位制檔案
- /boot - 儲存引導過程中使用到的檔案,可能還有核心本身
- /dev - 包含系統上各種裝置的裝置檔案
- /etc - 由子系統(如網路、NFS 和郵件)使用的檔案。包括要掛載的磁碟表、啟動時要執行的程序等。
- /etc/profile.d - 包含登入後由 /etc/profile 執行的指令碼。
- /etc/rc.d - 包含在啟動時在不同執行級別執行的許多 shell 指令碼。通常還有一個 rc.inet1 指令碼用於設定網路(在 Slackwar 中)、一個 rc.modules 指令碼用於載入模組化裝置驅動程式,以及一個 rc.local 指令碼,可以對其進行編輯以執行管理員想要的命令,類似於 DOS 中的 autoexec.bat。
- /etc/rc.d/init.d - 在基於 rpm 的系統上包含大多數初始化指令碼本身。
- /etc/rc.d/rc*.d - 其中 "**" 是對應於預設執行級別的數字。包含在該執行級別啟動和停止的服務檔案。在基於 rpm 的系統上,這些檔案是到初始化指令碼本身的符號連結,這些指令碼位於 /etc/rc.d/init.d 中。
- /etc/skel - 包含幾個示例或骨架初始化 shell 的目錄。通常包含用於填充新使用者 home 目錄的子目錄和檔案。
- /etc/X11 - X 視窗系統的配置檔案
- /home - 每個使用者的 home 目錄
- /lib - 標準共享庫檔案
- /lib/modules - 模組化裝置驅動程式檔案,大多數以 .o 副檔名結尾
- /mnt - 許多使用者可掛載裝置(如軟盤驅動器、CD-ROM 驅動器等)的典型掛載點。每個裝置都掛載在 /mnt 的子目錄中。
- /proc - 提供許多系統統計資訊的虛擬檔案系統
- /root - root 的 home 目錄
- /sbin - 用於系統管理、配置和監控的二進位制檔案的位置
- /tmp - 專為程式和使用者儲存臨時檔案而設計的目錄。
- /usr - 包含許多子目錄的目錄,其中包含程式、庫、文件等。
- /usr/bin - 包含大多數使用者命令。不應包含啟動系統所需的二進位制檔案,這些檔案位於 /bin 中。/bin 目錄通常位於與 / 相同的磁碟分割槽上,該分割槽在引導過程中以只讀模式掛載。其他檔案系統只在啟動過程的後期階段掛載,因此將啟動所需的二進位制檔案放在這裡不是一個好主意。
- /usr/bin/X11 - 通常是到 /usr/X11R6/bin 的符號連結,其中包含與 X 視窗系統相關的可執行二進位制檔案
- /usr/doc - 各種文件的位置,以及 Slackware 下程式文件檔案的的主要位置
- /usr/include - C 程式中使用的包含檔案的標準位置,如 stdio.h
- /usr/info - GNU 資訊系統檔案的首要位置
- /usr/lib - 標準庫檔案,如 libc.a。在編譯程式時由連結器搜尋。
- /usr/lib/X11 - X 視窗系統發行版
- /usr/local/bin - 另一個尋找常見可執行檔案的地方
- /usr/man - 手冊頁檔案的位置
- /usr/sbin - 超級使用者用於系統管理的其他命令
- /usr/share - 包含許多已安裝程式的配置檔案、設定和輔助檔案的子目錄
- /usr/share/doc - Mandrake 和 Red Hat 下程式文件檔案的位置
- /usr/src - 用於構建系統的源程式的位置。各種型別的程式的原始碼通常解壓到此目錄中。
- /usr/src/linux - 通常是到子目錄的符號連結,子目錄的名稱對應於正在執行的 Linux 核心的精確版本。包含核心原始碼。
- /var - 管理檔案,如日誌檔案,由各種實用程式使用
- /var/log/packages - 包含檔案,每個檔案都包含有關 Slackware 中已安裝的軟體包的詳細資訊。相同的檔案也可以在 /var/adm/packages 中找到,因為 adm 子目錄是到 log 的符號連結。每個軟體包檔案都包含簡短說明以及所有已安裝檔案的列表。
- /var/log/scripts - Slackware 中的軟體包安裝指令碼儲存在此處。您可以檢查這些指令碼,以檢視單個軟體包中包含哪些特殊功能。
- /var/spool - 用於儲存正在列印的檔案、尚未提取的郵件等的臨時儲存區。
外部連結:修改後的目錄結構
