歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux基礎知識 >> 基礎知識 - 目錄結構

基礎知識 - 目錄結構

日期:2017/2/27 10:14:56   编辑:Linux基礎知識
目錄結構
2004-04-23 15:18 pm
來自:Linux文檔
現載:Www.8s8s.coM
地址:無名

linux的目錄結構比DOS復雜多了,讓我們來看看它的目錄裡有些什麼東西吧.
/bin (binary)
這個目錄包含著所有的標准命令和應用程序.

/boot
這裡存放給lilo使用的一些文件.

/dev (device)
這個目錄包含著與終端和外設的文件接口,在linux下,文件和設備是用同種方法訪問
的.系統上的每個設備都應該在這裡有一個對應的設備文件.
考察一下這個宏:
#define putchar(ch) fputc(ch,stdout)
其中fputs就是把ch輸出到stdout去樂,這裡的stdout就是被當成樂文件.

/etc (etcetera)
這個目錄包含著系統設置文件和其他的系統文件,它在linux下極為重要,讓我們看看
它的子目錄裝些什麼:

/etc/DIR_COLORS
設定在用 ls 時,各種不同檔案型態所用的顏色,但是不能用pipe 再導向輸出,
否則就沒有各種顏色樂. 由檔案的內容可以很輕易的了解,如 default 的
directory 是藍色,具有可執行檔權限的是綠色,而壓縮檔是紅色...... 這些都可
依個人喜好來加以更改. 這個檔案內容寫得很清楚,想必大家一眼也就可以看得出來
,在顏色的組成方面,我們常用 RGB 三原色的成份值來組合出各種不同的顏色. 由
R,G,B 這個bit 是 0 或是 1 三個值組合出顏色這個道理雖淺顯,但假如我們更了解
R,G,B 的加權值分別是 1,2,4 的話,那就再也不用翻書查顏色樂...... 選擇自
己的調色盤來取代預設的調色盤,是經常會做的事.


/etc/HOSTNAME
設定用戶的節點名.記錄完整的hostname與domain name,這個檔案在須要hostname
的場合會用得到,如 /etc/rc.d/rc.M 等......

/etc/NETWORKING
裡面只有一行YES,表明網絡是存在的,沒有任何作用.

/etc/X11
link 到 /var/X11/lib/X11

/etc/aliases
這個文件是給sendmail的使用設置別名.

/etc/at.deny
在這個檔案中可記載那些人不能使用at這個命令來做一些later job,假如at.deny
是空的,而且 at.allow 也不存在的話. 那就是每個人都可以用 at 這個命令.
(at命令是讓系統在特定的時間執行某個作業,會樂這個指令,可以在工作的執行上會
更有彈性)

/etc/at.allow
相對於at.deny,這個檔案記載那些人可以使用at.而關於at.deny與at.allow,at會
先去找at.allow,假如存在而且有記錄一些人的話,那就只有這些人能使用at這個
指令,但假如at.allow並不存在的話,那at就會去找at.deny,沒有在at.deny中的人
都可以使用at這個指令樂! 特別要說明的是,at的執行時間也許會不如你所預期的,比
如說明明一個檔你叫它在 7:02 執行,但它卻會等到 7:05 才執行,這是因為 crond
是每五分鐘才去看看 at 的 queue 中是否有要執行的 job. 當然,你也可以改成每
分鐘都去 check,但這樣似乎沒有很大的意義,除非你對時間的准確度要求的很嚴格
,否則應該沒有必要去動才是. 大家可去看看 /var/spool/cron/crontabs/root 中
就有詳細記載,每五分鐘 run 一次 atrun,所以 at 命令的執行可看成以每五分鐘
為一單位.

/var/spool/atjobs: 當你使用 at 來安排一件工作時,系統會把你目前的環境變
數及所要用 at 執行的工作抄一份到這個目錄下的檔案中.

/var/spool/atspool:使用 at 命令之後所得到的一些訊息,會被記錄在這裡.可
能是 at 所要執行的命令傳回的錯誤訊息,或傳回執行成功的訊息.

/etc/bootptab
這是用來設置無盤工作站的遠端守護進程/user/net/in.bootpd的.用戶不用設置.


/etc/csh.cshrc

/etc/csh.login

這兩個檔案應該很熟悉羅!它就是大家常見到的.cshrc及.login,不過大家通常只注
意到自己的home directory有這兩個檔,但/etc下也有這兩個檔,不過/etc下的這兩個
檔絕大部份的情況下都是由 system administrator 在 maintain(維護),一般user不
應該有權力去改. 順便一提的是,系統會先去找 /etc 下這兩個檔,接著才加上自己
home directory中那兩個檔的設定.當然,有樂.login也有.logout,.logout中可以寫
一些 message,或執行一些命令,當你下達 logout 之後,.logout 就會被執行.

/etc/devinfo
用來給makedev這個程序設定各種不同的設備驅動文件的格式.用戶不用設置.
makedev是在/dev目錄下創建設備文件的程序.

/etc/diphosts
用來設置撥號服務器的用戶名和密碼.

/etc/disktab(disk parameter table)
假如你在剛開機有 pass 磁碟機的一些參數給 kernel 的話(通常是你的硬碟比較奇
怪,需要 pass cylinders,heads,sectors 給 kernel 才抓的到,或者是 SCSI 的硬
碟有時有時也要用到一些參數 ) 那這些參數就會被記錄在這裡.

/etc/exports
這個檔案記錄著你要給別人mount的檔案系統,這就是典型NFS系統所存在的檔案
,TCP/IP for OS/2 若要使用 network file system 而要把自己的 filesystem 讓
別人 mount 的話,這個檔案也是不可或缺的.

/etc/fastboot
這個檔案是使用 shutdown -f 所產生的,-f means "fastboot".在重新 reboot
之後,系統會去檢查這個檔是否存在,以決定是否要 run fsck.

/etc/fdprm(floppy disk parameter table)
設定格式化軟盤的參數,一般情況下是不須要更動的,除非你有很奇怪格式的軟碟,
或者你想做出不符合一 般格式的磁碟片.

/etc/fstab(file system table)
記錄開機要 mount 上來的 filesystem,這個檔案相當重要! 大家可以在
/etc/rc.d/rc.S 中找到 /sbin/mount -avt nonfs 這一列,當執行到這一列時,
mount 就依據 /etc/fstab 中的記載,自動的將檔案系統mount上來.假如你一開機
就想自動mount一些 filesystems,而不要等到開機後再以手動 mount 的話那把這些
filesystems 及相關資訊寫在這個檔.在檔案格式方面,每一列有六個欄位,不過後
面兩個欄位常被省略所以我們只看到有四個欄位.其它的兩欄分別為dump-freq及
pass-number.dump-freq 預設值為 0;而pass-number是 fsck 所會參考到的地方,數
字可為 0,1,2...... 1 表示這個 filesystem 將首先被 fsck check,2 表其次,
馀類推......
如我們的服務器:
# Device Mountpoint FStype Options Dump Pass#
/dev/wd0s1b none swap sw 0 0
/dev/wd0s1a / ufs rw 1 1
/dev/wd0s1h /home ufs rw,async 2 2
/dev/wd0s1g /tmp ufs rw,async 2 2
/dev/wd0s1f /usr ufs rw,async 2 2
/dev/wd0s1e /var ufs rw,async 2 2
proc /proc procfs rw 0 0
/dev/wcd0c /cdrom cd9660 ro,noauto 0 0

/etc/ftpacces
設定ftp服務器的一些配置,包括匿名服務器的設置.

/etc/ftpconversions
設定在ftp時使用的過濾器的位置.例如"get dirname.tar"就可以將ftp服務器上
的目錄先tar再傳回來,這個文件就是設定這些打包或壓縮程序的目錄和參數的.

/etc/ftpusers
這個檔案記錄那些人不可以 ftp 簽入系統,預設值有 root,uucp,news.這些都是為
樂security方面的考慮,你可以在這裡加入不可 ftp 進來的 user id.

/etc/gateways
顧名思義,這個檔案記錄一些 gateways 的 information.
這個檔案的格式如下:
<net|host> name1 gateway name2 metric value <passive|active|external>
當 routed 啟動時,它會去讀 /etc/gateways 這個檔. 若一個 gateway並不做
routing information 交換的話,那它就會被標示成 passive,假如有做routing
information 的交換 ( 這台機器上有 run routed ),那就會標示成 active net 或
host 這個關鍵字是指出 route 是到網路或是到一台特定的機器上. name1 就是目
地網路或目地機器的名字.這個名字可用 /etc/hosts 或是 /etc/networks 中的
symbolic host name. name2 就是訊息將被送往之gateway的name或IP address.

/etc/gettydefs
getty_ps的定義文件.

/etc/group
如同 /etc/passwd 列出樂系統中所有的使用者名字,/etc/group 定義系統中所
有的 group name 與相關訊息. 格式為:
group_name:passwd:GID:user_list
如:wheel:*:0:root,hua,yzr,cyt
上面的例子表示root,hua,yzr,cyt都是屬於wheel這個 group.通常 passwd 那欄是空
白的,表示不用密碼.或放一個*號.
這個檔案只能為 superuser 所讀寫,一個 superuser 可使用 groupadd,
groupdel,groupmod 來管理 /etc/group 這個檔,要手動管理也是可以.下面是這三個
指令的用法 :

groupadd [ -g gid [ -o ] ] group_name

groupdel group_name

groupmod [ -g gid [ -o ] ] [ -n new_group_name ] group_name


/etc/hostid
系統獨有的一個硬件id,許多商業程序利用這個來做license的管理,在其他工作站
上這個參數是無法更改的,只有linux可以用hostid這個參數來更改.

/etc/hosts
這個檔案記錄著 IP address 至hostname的mapping.如我們想把 202.38.248.1 取
個別名叫:bbs.那我們就可以在這個檔案裡寫如下的敘述 :
202.38.248.1 bbs
如此一來,以後我們 telnet bbs 就等於 telnet 202.38.248.1.在這個檔案中,至
少會有兩列,一列為 loopback,這是為樂偵錯目的而設的,另一列為 local host,就是
你自己的機器.

/etc/host.conf
這個文件會說明用戶的系統會如何查詢節點名,它應該包括至少以下兩行:
order hosts,bind
multi on
這兩行通知先檢查/etc/hosts文件,然後去查DNS,而且可以使用多個DNS.

/etc/host.equiv
在裡面可以設定一些 remote machine,而從這些 remote machine 利用 rsh 或
rlogin 連回 local machine 的話便不用輸入密碼..rhosts的作用也是類似的.不過
這東西最好不要亂設,以信得過的hosts為主,才不會造成security上的困擾.

/etc/host.deny
設定那些 remote hosts 不可以使用 inetd.

/etc/host.allow
設定那些remote hosts可以使用inetd.如ALL:202.38.248.就是202.38.248.上
的所有機器都可以用樂.

/etc/host.lpd
記錄可 access printer 的 hosts.假如一台 printer可被網路上的許多台主機
所共用,那 printcap 這個檔案必須得描述完整的網路設定資訊. 在比較嚴密控制
的情況下,有兩個條件必須符合首先,local machine 必須在 remote machine 的
/etc/hosts.eqiuv 中,或者,在 remote machine 的 /etc/hosts.lpd 中被記載第
二,使用者必須有 remote machine 的帳號.

/etc/inetd.conf
設定系統的網絡守護進程inetd的配置,格式如下:
service_name sock_type proto flags user server_path args
服務名稱 包類型 協議 參數 用戶 服務器路徑 參數
例如:
ftp stream tcp nowait root /usr/local/libexec/ftpd ftpd -a
telnet stream tcp nowait root /usr/libexec/telnetd telnetd
#shell stream tcp nowait root /usr/libexec/rshd rshd
#login stream tcp nowait root /usr/libexec/rlogind rlogind
#finger stream tcp nowait nobody /usr/libexec/fingerd fingerd -s
#exec stream tcp nowait root /usr/libexec/rexecd rexecd
#uucpd stream tcp nowait root /usr/libexec/uucpd uucpd
#nntp stream tcp nowait usenet /usr/libexec/nntpd nntpd
#comsat dgram udp wait root /usr/libexec/comsat comsat
#ntalk dgram udp wait root /usr/libexec/ntalkd ntalkd
#tftp dgram udp wait nobody /usr/libexec/tftpd tftpd /tftpboot
#bootps dgram udp wait root /usr/libexec/bootpd bootpd

/etc/inetd.pid(inetd process id)
inetd這個進程的進程id.

/etc/inittab
設定系統啟動時init進程將把系統設置成什麼樣的runlevel,用戶不需要設置.

/etc/issue
這個檔案被記錄著 login prompt 前所要 echo 的 message,特別要注意的是
/etc/rc.d/rc.S下面的四行若沒有mark,則每次開機 issue 及 motd 都會被重建.

/etc/klogd.pid(klogd process id)

!!!!!!

/etc/ld.so.cache
查找系統動態鏈接共享庫的緩存,如果損壞用ldconfig可以重新產生.

/etc/ld.so.conf
系統動態鏈接共享庫的路徑,記錄一些 library 所在的目錄,應用程序從這個文件
去查找相應的lib文件.例如:
/usr/local/lib
/usr/X11R6/lib
/usr/i486-linuxaout/lib
/usr/openwin/lib

/etc/lilo.conf
配置多重啟動程序lilo的配置文件,每次更改之後一定要重新運行lilo才有效.

/etc/login.defs
這是所有用戶登陸時的缺省配置文件,這個文件中有大量的定義,許多原先在profile
和login文件中的定義都挪到這裡樂.如用戶缺省路徑,登陸時間限制,最多錯誤登陸次
數等.是系統管理員應該經常修改的地方.

/etc/magic
這個檔案記載樂許多檔案格式的識別字串或方法.那這個檔在那裡會用的到呢?用在
file 這個指令上.file 這個指令的命令格式為:
file [ -c ] [ -z ] [ -L ] [ -f namefile ] [ -m magicfile ] file
file 這個指令可以告訴你某一個檔案的格式,如它是一個 text 檔,或是一個
shell script 或 DOS 可執行檔等...... 而 file這個指令,就是去參考/etc/magic
這個資料庫.假如你知道某一檔案的識別字,而原來 magic 這個資料庫沒有記錄,那
你可以把識別方法加到資料庫中,或乾脆建立自己的資料庫算樂.

/etc/mail.rc;/etc/mailcap;/etc/sendmail.cf;/etc/sendmail.st
這幾個文件都是為了設置sendmail的.

/etc/makedev.cfg
同devinfo一樣是給makedev使用的設置文件.用戶不必設置.

/etc/motd(message of the day)
在這個檔裡面可以寫一些 message ,而這些 message 會在 login shell 之前被顯
示出來.通常都是 system administrator 要告知 user 的一些訊息. 而關於每次都
會改變的問題,在前面/etc/issue時已提出過,記得 mark 起來就是樂.

/etc/mtab
記錄目前mount的filesystem.大家可以用mount指令來看這個檔的變化的.每mount
一個filesystem,在這個文件就可以立刻反映出來樂.也就是說,這個文件是動態更新
的,可以參見/proc/mounts這個文件.

/etc/mtools
這裡面記錄的是給 /usr/bin/mtools 參考用的 parameter.mtools就是一群操作
MSDOS檔案的命令集合,可用的命令如下:
mattrib - change MSDOS file attribute flags
mcd - change MSDOS directory
mcopy - copy MSDOS files to/from Unix
mdel - delete an MSDOS file
mdir - display an MSDOS directory
mformat - add an MSDOS filesystem to a low-level formatted diskette
mlabel - make an MSDOS volume label
mmd - make an MSDOS subdirectory
mrd - remove an MSDOS subdirectory
mread - low level read (copy) an MSDOS file to Unix
mren - rename an existing MSDOS file
mtype - display contents of an MSDOS file
mwrite - low level write (copy) a Unix file to MSDOS
這些都被 link 到 mtools.

/etc/named.boot
假如你要建立 name server 的話,那這個檔就是你要修改的地方詳細的情況可以
去看 named 的 manual.

/etc/named.pid(named process id)
本機上運行DNS的進程id.

/etc/networks
這個檔與 hosts 有點像,都是在 boot 的時候會用到的東西,在這裡可以定義一
個子網路與其 IP address 的資訊.

/etc/NNTP_INEWS_DOMAIN
設置新聞服務器的配置文件.

/etc/nntpserver
設置用戶使用的新聞服務器的地址.
這個檔案記錄著 news server,當我們使用 tin -r (read news remotely) 時,
這個檔案會被參考到,或者若這個檔案不存在的話,那環境變數 NNTPSERVER 所指定
的 server 就會被當成要去取得 news 的 server. 譬如說,你要將 202.38.248.1
當成 news server,那 /etc/nntpserver 中就可寫: 202.38.248.1

/etc/nologin
你也許會感到奇怪,我的 /etc 這個 directory 下並沒有這個檔啊?沒錯,它平常是
不存在的,通常會看到這個檔的話,那表示系統大概要 shutdown 樂,因為系統要
shutdown 樂,自然不希望有人又login 進來,所以在我們執行 shutdown時,nologin
這個檔會自動的被 create,裡面放著 shutdown message.實際上,當我們在login 時,
系統會去檢查有沒有這個檔,假如有的話,那就會印出這個檔案中的 message,然後不
讓你 login.nologin 也有可能是為樂某種理由被制造的,比如說系統在 maintain
暫時不希望有人 login.無論如何 nologin 若存在,就不能 login.

/etc/organization
存放用戶的名字和組織,沒什麼用.

/etc/passwd
呵呵,這個檔案可重要樂.一個 system administrator 最初要學的常常就是這個
檔案的內容! 這個檔案記錄著系統可以認得的user,也包括一些非人的 login name,
但這是有特殊用途的. 檔案內容每列的格式如下:
Login Name:Encrypted Password:UID:GID:GCOS:Home Directory:Login Shell

(1)login name
在 login name 方面,每個 login name 必須是唯一的,而且不能超過 8 個字符,
一般說來,login name 雖然可以大小寫混合,但平常的情況下都用小寫.

(2)Encrypted Password
這欄是編碼過的密碼,在新增一個 new user 時,應該在這欄填上*,更改 password
可用 passwd 這個指令. passwd 這是一個 setuid 的指令.

(3)UID(user id)
每個"人"都要不一樣,習慣上,100 以前被保留做為特殊的 user id,而root總是0.

(4)GID(group id)
在比較早期的系統,一個user同時只能在一個group,不過現在就沒有這種限制樂.

(5)GCOS
這欄基本上沒有特殊格式限制,在這裡可以寫上你的 full name家中電話,住址等.
愛寫什麼就寫什麼.
finger 這個指令會去讀這地方的資訊.用chfn 可改變這欄.

(6)Home Directory
這欄沒什麼,就是記錄 user 的 home directory 而已,利用 cd 或 cd~ 都可回到
home directory.

(7)Login Shell
設定使用者所使用的 shell,預設值是 /bin/bash.當然,你也可以自己改成 csh
或 tcsh,zsh 也是不錯,假如有 free 版的 korn Shell 也可拿來用用.用 chsh可改
變你的 login shell.
為樂 security 方面的考慮,可以安裝 shadow,將 passwd 這個檔完全的與一般
user 隔絕開來,連讀也沒有辦法讀 passwd 這個檔.


/etc/pnpdevices
列出樂支持的plug&play設備.


/etc/profile
profile 這個檔是 bash 這個 shell 所用的,profile 之於bash就好像 cshrc 之於
csh. 同樣的,/etc 下的 profile 也是 SA 在維護的,主要是放著全域的設定(Global
Setting)而每個 user 在自己的 Home Directory 都可以有各人的.profile.


/etc/protocols

假如你為樂某些目地,而寫樂自己的 protocol,那你就必須把它列在這個檔案中,這
樣 inetd 才會管理一些 daemons 去用它這個檔案每列的格式如下,# 之後的是注解:
Protolcol Name Portocol Number Aliases

協議名 代碼 別名

ip 0 IP # internet protocol,pseudo protocol number
icmp 1 ICMP # internet control message protocol
igmp 2 IGMP # internet group multicast protocol
ggp 3 GGP # gateway-gateway protocol
tcp 6 TCP # transmission control protocol
pup 12 PUP # PARC universal packet protocol
udp 17 UDP # user datagram protocol
idp 22 IDP # WhatsThis?
raw 255 RAW # RAW IP interface


/etc/psdatabase
這個檔案是被 psupdate 所用到,psupdate 主要的功能就是更新
/etc/psdatabase 這個檔,以符合目前的 kernel image system map file.一般的預設
檔是 /usr/src/linux/tools/zSystem.


/etc/resolv.conf
這裡面記載著你機器的 domain name 及 name server 的 IP address,name server
可以自己加入.name server 可不要隨便就去掉,否則,就會地址沒有辦法被解譯,故會
有 Host name lookup failure 的信息.


/etc/rpc
!!!!!!!!!


/etc/securetty
假如你要以 root login 的話,實際上是有限制的,這個檔案就列出樂 root 可以
login 的 ttys,假如你把每一列都 mark 起來那就沒有任何一個 terminal 可供root
login 樂,就會出現以下的情況 :
login: root
root login refused on this terminal.
仔細的在這個檔案列出可用的 terminal,可使從 modem 連的使用者或經由網絡來的
其它的使用者比較不容易取得 superuser 的權力.


/etc/services
設定系統的端口與協議類型和提供的服務.


/etc/shadow
這個文件對一般用戶是不可讀的,加密後的密碼就放在這個文件中.


/etc/shells
這個檔案裡面就記錄著可以用的 login shell.還有一點,那就是這個檔的記錄會在
使用 chsh 時做為參考,唯有被列在這裡的 shell,使用 chsh 時才會出現這些 shell
可選.實際上如果強行直接修改passwd文件,也可以使用不在列表中的shell程序,但會
造成在ftp的時候,無法登陸.


/etc/slip.hosts;/etc/slip.login
這兩個文件是設定SLIP的配置文件.


/etc/snooptab
如果系統管理員用ttysnoops替換樂login這個程序,就可以用snooptty這個程序來
監控用戶的屏幕,這個文件就是能監聽的終端列表.


/etc/sudoers

在一個不是很復雜的系統中,也許一個 System Administrator 就可以管理所有的
事情.但一但系統提供的服務變多,系統管理的工作也隨之變得沉重,這時候,sudo 就
派上用場樂,sudo 可以讓一個普通的 user 變成 superuser,這樣一來,一個系統的某
些工作,就可以分配給這些 superusers 來做.以減輕負擔.
當然,並不是每個 user 都可以變成 superuser.所以/etc/sudoers 就是記錄著那
些人可以用 superuser 的身份來執行一些工作.
這個檔案有一個專屬的 editor 叫 visudo 可來編輯 /etc/sudoer.而關於使用
sudo.bin有一個記錄檔,在 /var/adm/sudo.log,裡面記錄著誰在什麼時候利用sudo
下樂那些指令.順便一提的是:利用下面這個命令可抓出那些人轉換成 superuser 但
卻沒有成功:grep "FAILED SU" /var/adm/messages

/etc/syslog.conf
系統記錄程序syslogd的配置文件,格式如下:
*.=info;*.=notice /usr/adm/messages
*.=debug /usr/adm/debug
*.=warn /usr/adm/syslog
即所有的info和notice信息都存在/usr/adm/messages下,debug信息在/usr/adm/debug
下,警告信息在/usr/adm/syslog下.


/etc/ttys
設定系統的終端類型.


/etc/utmp
從 utmp 中可以知道現在有誰正在用系統.當使用者logout之後,init就去把logout
的使用者從 /etc/utmp 中去掉.實際上,utmp 每個 record 是像這樣的一個結構:

struct utmp {
short ut_type; /* 登陸類型 */
pid_t ut_pid; /* 進程id */
char ut_line[12]; /* 使用終端 */
char ut_id[2]; /* 初始化id */
time_t ut_time; /* 登陸時間 */
char ut_user[8]; /* 用戶名 */
char ut_host[16]; /* 遠程登陸機器名 */
long ut_addr; /* 遠程登陸機器的ip */
};
了解這個檔案,進而去修改,可以做出許多有趣的事......icon_razz.gif

/etc/wtmp
簡而言之,wtmp 是一個 login data base,有許多的指令會用到這個檔,像 last,
sessreg,who 等......這個檔案格式與 utmp 大致相同,只是多樂shutdown及reboot
這個記錄,指出系統的 shutdown 或 reboot,及一個空的 user name指出在相關
terminal 的 logout.還有,不像 /etc/utmp,/etc/wtmp 的記錄是慢慢的附加上去的,
也就是說,這個檔案會越變越大,雖然變大的速度並不會太快,但一但到樂某種程度大小
的話,System Administrator 可以隔一段時間就刪除這個文件,?

Copyright © Linux教程網 All Rights Reserved