附錄 A /etc 目錄下的檔案介紹

/etc 是 FreeBSD 系統主要設定檔所在,了解這個目錄下的檔案及其格式,對於我們管理及使用 FreeBSD 將有更深入的認識。因此,以下我們就分別說明一下這些檔案。

一個個讀這些設定檔的說明也許有點枯燥,因此,我們將這個章節放在附錄中,您可以在有需要時再來參考即可。

A.1 aliases:設定郵件收件者別名

/etc/aliases 是用以告知 sendmail 要將信轉給哪個使用者或是交由哪個程式處理。請注意,修改完這個檔案後,必須使用指令 newaliases 來讓所做的修改在 sendmail 中發生作用。這個檔案是用來設定郵件的別名,也就是可以設定要將某人的信件轉給其他地方(人員或程式)。你也可以將某人的信轉給很多人,這個檔案的位置是由 sendmail.cf 檔案中的 AliasFile 這個選項所決定的。當 sendmail 收到信時,會一行一行比對,當第一行符合後,就不會再繼續下去,所以應注意優先順序。

本檔案的語法開頭的 "#" 代表該行是註解,大小寫都視為一樣。以下為幾個設定的範例:

  1. root: alex
  2. webmanager: alex,jack,jim@other.hostname.com
  3. nobody: /dev/null
  4. homework: |/usr/local/bin/homework.sh
  5. olduser: :include: /usr/local/olduser_list

當設定了一堆複雜的別名之後,我們要看最後信會寄到哪裡時,可以使用下面指令來看寄給 username 的信最後寄給誰:

# sendmail -bv username

aliases 檔中將很多東西都轉向 root,因此你可以去讀 root 的信箱或是將 root 的信轉給別的地方,下面這一行是將 root 的信都轉給 my@my.domain:

root:	me@my.domain

當郵件無法送出被退回時給使用者時,都是以 MAILER-DEAMON 為帳號寄出。因為使用者可能會回覆那封被退回的信,所以這個別名是必備的。而 postmaster 則負責處理所有關於郵件問題的信件,因此也是必備的,一定要保留下面二行,這是必要的系統基本設定:

MAILER-DAEMON: postmaster
postmaster: root

在修改完 /etc/aliases 之後,我們必須執行下列指令來更新資料:

# newaliases

A.2 crontab:設定定時執行工作

在 UNIX 系統中,有一個背景程式會定時執行一些工作,系統管理者可以修改這個檔案以設定定期執行的工作。/etc/crontab 可以讓管理者設定要以什麼使用者的身份去執行定時工作,而一般使用者如果要設定定時執行工作時,可以使用指令 crontab -e 來 編輯自己的定時執行工作。

以下為 /etc/crontab 的內容說明:

# 設定使用的 shell, 路徑
SHELL=/bin/sh
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin
# 設定執行指令時的目錄
HOME=/var/log
# 當指令有輸出資料時,要將輸出的東西寄給誰。
MAILTO=""
#
# 分	小時	天	月	星期幾	身份	指令
#minute	hour	mday	month	wday	who	command
#
*/5	*	*	*	*	root	/usr/libexec/atrun

小時的欄位中如果是 *,表示每小時,天的欄位中如果是 *,表示每天,依此類推。欄位中也可以使用 "-" 來表示範圍。例如,在小時的欄位中填 8-11,表示執行的時間是 8,9,10,11,共四次。

欄位中也可以用逗點來表示,以分的欄位而言, 1,2,5,9 表示將在 1,2,5,9 分時各執行一次。我們也可以寫成像這樣 1-2,12-14 ,表示在 1,2,12,13,14 分各執行一次。

另外,也可以用 / 後面加數字表示每幾分鐘要執行一次。如在分的欄位填 0-23/2,表示 1-22 分之間,每隔二分鐘執行一次,也就是 0,2,4,6,8,10,12,14,16,18,20,22。如果在分的欄位是 */5,表示每五分鐘一次。

除此之外,也可以用一個開頭為 @ 的字串來表示各種意義:

字串 代表意義
@reboot 開機時跑一次。
@yearly 每年跑一次,等於 "0 0 1 1 *"。
@annually 和 @yearly 一樣。
@monthly 每月跑一次,等於 "0 0 1 * *",也就是每月一日半夜 12 點執行。
@weekly 每週跑一次,等於 "0 0 * * 0",也就是每個週日半夜 12 點執行。
@daily 每天跑一次,等於 "0 0 * * *",也就是每天半夜 12 點執行。
@midnight 和 @daily 一樣。
@hourly 每小時跑一次,等於 "0 * * * *"。

另外,我們還可以在檔案中以「key = value」的方式設定在執行指令時的環境變數。例如,一般指令有輸出執行結果時,會自動寄給 root,我們也可以設定「MAILTO = ""」表示不要將輸出結果寄出。以下為幾個時間設定的範例:

# 分	小時	天	月	星期幾	身份	指令
#minute	hour	mday	month	wday	who	command
#
# 設定每 5 分鐘執行一次atrun。
*/5	*	*	*	*	root	/usr/libexec/atrun

# 設定每天一點零一分時執行 /bin/check
1	1	*	*	*	root	/bin/check

# 設定每週一 3:11 分執行 week_check
11	3	*	*	1	root	/usr/local/week_check

# 設定每天一點及四點的零到二十三分中間,每二分鐘執行一次 something。
0-23/2	1,4	*	*	root	/bin/something

一般使用者的 crontab 會放在 /var/cron/tabs 目錄中,所以如果要備份或升級時,應該要注意這些檔案是否要備份。

小提示

我們在安排 crontab 時,應該要錯開每個程式的執行時間,才不會有一大堆程式同時執行,造成系統負荷過高。

A.3 csh.cshrc:Tcsh 使用者登入後的 shell 環境設定

這是給 Shell csh、tcsh 用的內定 .cshrc 檔案,也就是進入該 Shell 時會載入的設定。所有使用 csh 及 tcsh 的使用者登入後,系統都會自動載入這個檔案中的設定,若使用者自己的家目錄中的 .cshrc 和 csh.cshrc 有相同的設定,則會以使用者家目錄中的 .cshrc 為主。

# 檔案權限設定
umask 022

# 設定內定使用的文字編輯器為 ee
setenv  EDITOR  ee

# 設定當使用者打 ls 時,出來的結果是 ls -F 的結果
alias   ls      ls -F

# 設定當使用者打 cd.. 時,變成是打 cd ..
alias cd.. 'cd ..'

# 設定命令提示符號為 "主機名稱 [所在目錄] -使用者名稱->"
set prompt = "%B%m [%/] -%n-> "

這個檔案除了使用者登入時會載入外,如果使用者以 tcsh 或 csh 寫 shell scripts,在執行時也會載入這個檔案中的設定。

A.4 csh.login:Tcsh 使用者登入後的 shell 環境設定

這是給 csh、tcsh 用的內定 .login 檔案,使用者登入 shell 時會自動載入本檔中的設定。和 csh.cshrc 不同的時,這個檔案只有在使用者登入時才會載入,而執行 shell scripts 時不會使用這個檔。如果使用者家目錄中的 .login 設定和 csh.login 相衝突時,將以使用者家目錄中的 .login 設定為主。

# 要讀取系統訊息則將下面一行的 # 拿掉
# msgs -f

# 允許終端機訊息,設為 y 才可以使用 write 的指令,
# 傳送訊息給其他使用者
# mesg y

# 設定支援中文的終端機
setenv ENABLE_STARTUP_LOCALE zh_TW.Big5
setenv LC_CTYPE is_IS.ISO_8859-1
setenv LANG zh_TW.Big5

# 登入時顯示 FreeBSD Tip
[ -x /usr/games/fortune ] && /usr/games/fortune freebsd-tips

A.5 csh.logout:Tcsh 使用者登出時會執行的設定

這是給 Shell csh、tcsh 用的內定 .login 檔案,也就是離開該 Shell 時會執行這個檔案中的指令。在離開 Shell 時,Shell 會載入 /etc/csh.logout 及 ~/.logout 的設定。請 man csh。

A.6 defaults/periodic.conf:預設定時執行項目設定

這個檔定義了 /etc/periodic 目錄下哪些程式要定期執行。我們可以新增並編輯 /etc/periodic.conf 或 /etc/periodic.conf.local 來覆蓋這個檔案的設定。 您可以 man periodic.conf 來得到更多的資訊。

A.7 defaults/rc.conf:預設的系統設定檔

系統開機時會讀取這個設定檔以決定應該執行哪些工作,例如網路設定、該執行哪些系統服務等。 /etc/defaults 目錄下的 rc.conf 中所有設定都是預設值,如果我們要修改, 請新增 /etc/rc.conf 來加入你的設定,這樣在日後升級時我們的設定才不會覆蓋。如果 /etc/defaults/rc.conf 中的設定和 /etc/rc.conf 重覆時,會以 /etc/rc.conf 為主。 另外,當我們執行 sysinstall 後所做的設定,也會被寫入 /etc/rc.conf 中。 建議您可以讀一下 rc.conf 看看我們有哪些可以設定的項目。

 rc.conf 有很多設定,例如網路卡 IP、hostname、firewall、要啟動什麼系統服務等,幾乎所有的系統設定都放在這個檔案中。FreeBSD 在開機時,會讀取 /etc/rc.conf 以決定要不要啟動某些服務,而當我們從 ports 中安裝程式時,通常安裝完後,我們也要設定這個檔才能讓該程式在開機時執行。例如,安裝完 SNMP 時,我們要在 /etc/rc.conf 中加入「snmpd_enable="YES"」,這樣一來 SNMP 才會在開機時啟動。

A.8 fbtab:設定使用者登入時對系統裝置的存取權限

fbtab 用來設定使用者登入對於系統裝置的存取權限。大多數的人都是使用虛擬的終端機,我們登入系統時所使用的 tty 是虛擬的終端機 ttyv0、ttyv1 等 ,FreeBSD 將這些系統裝置視為檔案,放在 /dev/ 中。例如,console 就是 /dev/console 這個檔 ,但該檔的擁有者是 root,而有的應用程式用要求使用 /dev/console 的存取權限,fbtab 這個檔案是用來定義當你從虛擬的終端機登入時,能自動取得某個裝置的權限。詳細說明請 man fbtab。

A.9 fstab:檔案系統的載入設定

這個檔案用來定義開機時要掛入的檔案分割區及各分割區的參數設定,例如,要掛入哪一個目錄中、掛入時的參數、備份時是否要備份等。

# 裝置名稱	掛入點	      檔案系統	參數		Dump	Pass#
/dev/ad0s1b	none		swap	sw		0	0
/dev/ad0s1a	/		ufs	rw		1	1
/dev/ad1s1f	/home		ufs	rw		2	2
/dev/ad0s1e	/usr		ufs	rw		2	2
/dev/ad1s1e	/var		ufs	rw		2	2
/dev/acd0c	/cdrom		cd9660	ro,noauto	0	0
proc		/proc		procfs	rw		0

A.10 ftpusers:設定哪些使用者不可以使用 FTP 登入

這個檔案用來定義哪些使用者不可以使用 FTP 登入,只要將使用者登入的帳號加入這個檔案中,該使用者就不能使用 FTP 登入系統了。例如,我們要讓使用者 tom 無法使用 FTP 來登入系統,只要在 fupusers 檔案開頭加入該使用者名稱。ftpusers 中也可以加入群組名稱,如果您不希望某個群組的使用者使用 FTP 登入,只要在該檔案中加入 @groupname 即可。開頭為 "@" 表示該行的設定為群組名稱。

# $FreeBSD: src/etc/ftpusers,v 1.6 1999/08/27 23:23:41 peter Exp $
#
# list of users disallowed any ftp access.
# read by ftpd(8).
@noftp
tom
root
toor
daemon
operator
bin
tty
kmem
games
news
man
bind
uucp
xten
pop
nobody

A.11 ftpchroot:設定哪些使用者登入後要限制根目錄

FreeBSD 內附的 FTP daemon 還有一個重要的功能,就是可以讓使用者登入後,只看得到自己的家目錄。如果在 ftpchroot 這個檔案中有該使用者名稱或以 "@" 為開頭的群組名稱,使用者登入後,根目錄就會是自己的家目錄,而無法切換目錄到非家目錄的其他系統目錄中。 我們也可以設定將某個使用者或群組設定登入後只能在某一個固定的目錄中,詳細設定請參考「FTP 伺服器」一章的說明。

A.12 gettytab:終端機模式設定檔

這個檔案是終端機模式設定檔。在啟動終端機時 (例如,使用者登入系統時),系統會讀取這個檔案中關於終端機的設定值。例如,我們可以修改這個檔案以設定使用者登入前的提示訊息。 以下為該檔案 default 的部份:

# im= 就是別人連上你的機器時會看到的字串,其中 \r\n 表示換行
# 其中的%s %m %h %t 分別對應到 FreeBSD i386 alexwang.com ttyp0,
# 如果你不想顯示 FreeBSD ,就把 %s 拿掉。最後一行 if=/etc/issue
# 就是表如果沒有 issue 這個檔的話,就執行 default。
default:\
	:cb:ce:ck:lc:fd#1000:im=\r\n%s/%m (%h) (%t)\r\n\r\n:sp#1200:\
	:if=/etc/issue:

A.13 group:使用者群組設定檔

這個檔案記錄了系統中的使用者群組設定。詳細說明請參考「使用者管理」一章。我們要注意的是每一個群組的編號 (gid) 不可以重覆。另外,在 FreeBSD 中,如果使用者要具有 su 成 root 的權限,必須將該使用者加入 wheel 群組中。例如,我們要讓使用者 alex 可以 su 成 root 的權限,則在 group 檔中 wheel 群組後面加上 alex:

wheel:*:0:root,alex
daemon:*:1:
kmem:*:2:
sys:*:3:

A.14 host.conf:設定 DNS 查詢順序

這個檔案用來設定 DNS 查詢的順序。預設的查詢順序是先查詢 hosts 這個檔,再由 bind 向 DNS Server 查詢。如果有 NIS 的話,還要再加入 nis 那一行。

# $FreeBSD: src/etc/host.conf,v 1.6 1999/08/27 23:23:41 peter Exp $
# First try the /etc/hosts file
hosts
# Now try the nameserver next.
bind
# If you have YP/NIS configured, uncomment the next line
# nis

A.15 hosts:定義常用的機器名稱對映

我們可以將常用的機器名稱及 IP 對映寫在這個檔案中,以節省向 DNS Server 查詢的時間。如果你的主機有多個 domain name,將你最喜歡的放在最前面,這樣寄信時才會出現該 domain name。

在設定時,檔案中最少要有 localhost 和自己的 domain name。hosts 的格式如下:

IP 位址	正式的主機名稱	別名

別名的用意在於,使用時可以用比較簡單的名稱來連線到該機器。例如,我們設定了 bbs.ba.mgt.ncu.edu.tw 的別名為 bbs,則在使用 telnet、ssh、ping 等指令時,我們只要輸入 bbs 做為主機名稱即可,不必輸入其 IP 或是一長串的正式主機名稱。以下為設定範例:

127.0.0.1               localhost.com localhost
192.168.0.1             mydomain.com mydomain
192.168.0.1             mydomain.com.
192.168.0.2             mail.mydomain.com mail
140.115.83.240          bbs.mgt.ncu.edu.tw bbs.mgt
140.115.75.5            bbs.ba.mgt.ncu.edu.tw bbs

A.16 hosts.allow:設定允許或拒絕連線的主機

設定允許或拒絕使用本機服務、連線的主機來源。例如你可以在這裡加入拒絕某台電腦使用 telnet、ssh、ftp 等連線到你的機器。在「系統安全」一章詳細的說明了如何使用這個檔案來讓我們的主機更安全

A.17 hosts.equiv:設定遠端信任主機及使用者

設定遠端信任主機及使用者,這個檔案主要是給一些 "r" 系列的服務用,例如 rcp、rlogin、rsh 等。詳細說明請 man hosts.equiv。

A.18 hosts.lpd:設定可以使用本地列表機的主機

我們可以將 FreeBSD 設定成 LPR 網路列表機,而這個檔案是用來設定可以使用本地列表機的主機,只要加入主機名稱或 IP 即可。

A.19 inetd.conf:各項 inetd 服務設定檔

inetd 是 UNIX 系統中用來掌管許多服務的重要 daemon,我們可以修改這個檔來設定 inetd 所要提供的服務。它的格式如下:

#ftp	stream	tcp	nowait  root    /usr/libexec/ftpd       ftpd -l
#ftp	stream	tcp6	nowait  root    /usr/libexec/ftpd       ftpd -l
#ssh	stream	tcp	nowait  root    /usr/sbin/sshd          sshd -i -4
#ssh	stream	tcp6	nowait  root    /usr/sbin/sshd          sshd -i -6
telnet	stream	tcp	nowait  root    /usr/libexec/telnetd    telnetd
#telnet	stream	tcp6	nowait  root    /usr/libexec/telnetd    telnetd
    

第一個欄位是服務的名稱,要和 /etc/services 搭配設定。如果要開放某一項服務,只要將開頭的 # 符號移除即可。我們一般可以在這個檔案中設定的常用服務有 telnet、ftp、pop3等。當修改這個檔後,必須重跑 inetd 才會生效。

# kill -1 `cat /var/run/inetd.pid`

A.20 localtime:記錄所在時區設定

這個檔記載你所在的時區資料,你可以經由 sysinstall 來設定時區。該程式會自動將 /usr/share/zoneinfo 中合適的檔案複製一份成為 /etc/localtime。

A.21 locate.rc:快速搜尋檔案的名稱資料庫設定

FreeBSD 會自動依這檔案的內容來建立硬碟中檔案名稱資料庫,以利我們快速搜尋檔案名稱。詳細的說明請 man updatedb、man locate。

A.22 login.access:控制使用者登入權限

用來設定登入系統使用者的權限,我們可以在這裡設定是否允許使用者從 console 登入、從不同區域登入的權限等。

當某個使用者登入後,會先依本檔中的設定來控制使用者的登入來源。這裡所使用的規則是由上往下比對,先符合者優先,也就是 first match wins,來決定該使用者可以登入或是被拒絕。它的格式是以 ":" 分割成三個欄位:

permission : users : origins

我們也可以使用 EXCEPT 的運算符號寫出非常簡潔的規則。群組的設定只有在使用者名稱不符合規則時才會被用到,而且這個程式並不會去查使用者主要的群組是什麼。

A.23 login.conf:控制使用者可以使用的系統資源

這個檔案用來控制不同帳號可以使用的系統資源,它會依照使用者在密碼檔中的 login class 來尋找相對應的 class 設定,如果沒有分類則使用 default 的預設值。請參考「使用者管理」一章中的說明。

A.24 mail.rc:設定 mail 指令參數

用來設定 mail 的參數。當 mail 指令執行時,它會先讀 /usr/share/misc/mail.rc、/usr/local/etc/mail.rc 及 /etc/mail.rc,最後再讀使用者的 ~/mailrc 這個檔。請 man mail,您不必動到這個檔。

A.25 make.conf:設定 make 的參數

當我們在重新編譯 FreeBSD 內附的程式時 (例如使用 port 安裝軟體時),我們所使用的指令 make 會讀取 /etc/make.conf 來取得一些編譯時的參數。它可以讓你在 make 時覆蓋一些設定而不必去修改 source tree。make.conf檔案一定要使用有效的 Makefile 語法。一般而言,我們會修改一些關於下載檔案的 FTP 站台設定,以從 port 安裝軟體而言,當下達 make install 指令時,make 會去抓一些必要的檔案,如果要去國外抓的話實在太慢了,所以我們會將 FTP 站台設定為離我最近或最快的站台。只要在 make.conf 中最下方加入下列設定即可:

# 當使用 port 安裝軟體時,優先使用中央大學資工系及交大資工的 FTP
MASTER_SITE_BACKUP?=    \
	ftp://freebsd.csie.ncu.edu.tw/FreeBSD/ports/distfiles/${DIST_SUBDIR}/ \
	ftp://freebsd.csie.nctu.edu.tw/pub/distfiles/${DIST_SUBDIR}/
MASTER_SITE_OVERRIDE?=	${MASTER_SITE_BACKUP}

A.26 manpath.config:設定 man 文件所在位置

設定 man 指令的參數,如 man 的文件所在等。

A.27 master.passwd:使用者密碼檔

FreeBSD 使用 shadow password 的方式來保護密碼檔,只有 root 才可以讀取編碼後的密碼檔 /etc/master.passwd,而一般使用者只能看到 passwd 檔中的資料。但是這並不是系統用來驗証的檔案,為了加快速度,FreeBSD 將該檔做成資料庫 /etc/spwd.db 及 /etc/pwd.db, 因此在修改完 master.passwd 後,必須使用指令 pwd_mkdb 來將 master.passwd 做成資料庫檔案。不過一般而言,我會使用 vipw 這個指令來修改 master.passwd,vipw 會先將 master.passwd 以預設的文書編輯軟體打開,修改完存檔後,它會視需要自動更新資料庫。

它的格式是:

name:password:UID:GID:class:change:expire:fullname:home:shell
# expr `date +%s` + 86400 \* 30

A.28 motd:使用者登入後訊息

系統登入後,會自動秀出一段文字,稱為 Message Of The Day(motd)。這一段文字是可以修改的,你可以編輯 /etc/motd 來製作自己的畫面。如果您不希望 motd 內容出現 FreeBSD 的版本資訊,您可以在 rc.conf 中加入下面內容:

update_motd="YES"

如此一來,下次您更新 motd 的內容時,系統就不會自動將版本資訊加入 motd 中。

A.29 namedb/:DNS 伺服器設定檔

如果你有架 Name Server 的話,你必須設定該目錄下的檔案。詳細說明請參考「DNS伺服器」一章的說明。

A.30 netstart:啟動網路服務的程式

這個檔案並不會被其他程式所使用,它只是讓你在單人模式下執行,用以啟動網路。而多人模式的網路設定在於 /etc/rc.network。

A.31 networks:設定本地網路資訊

用來設定本地網路的資訊,我們通常不會需要修改這個檔案。

A.32 newsyslog.conf:設定定期壓縮備份檔案

這個檔主要用來定期檢查 /var/log/ 的檔案,設定當 log 到一定大小或是定期的將舊的檔案壓縮備份,並刪除太老舊的檔案。 除了 log 外,您也可以用它來設定定時要壓縮備份的檔案。

語法:

logfilename [owner:group] mode count size when [ZB] [/pid_file] [sig_num]
欄位 說明
logfilename log 檔名稱
[owner:group] log 檔擁有人:群組
mode 該 log 檔的權限(檔案屬性)
count 最多計算到多少,例如 cron 是 3 表示將有四個壓縮檔:cron.0.gz, cron.1.gz, cron.2.gz, cron.3.gz。
size 檔案最大到多少即壓縮備份,以 KB 計。
when 什麼時候做備份,請 man newsyslog 來看詳細說明。以 @ 為首代表用 ISO 8601 結構的時間格式。以 $ 為首代表使用每天、每週、每月。
一些例子:
$D0 每天半夜十二點
$D23 每天 23:00 時
$W0D23 每週日 23:00
$W5D16 每週五 16:00
$MLD0 每月最後一天半夜十二點
$M5D6 每月第五天 6:00
[ZB] Z 表示要將該檔以 gzip 壓縮起來,B 表示該檔是 binary 檔。
[/pid_file] pid 檔的絕對路徑,如果有設定,則會送出 sig_num 給該程式。
[sig_num] 要送給該 daemon 程的 signal number,預設是 SIGHUP。

A.33 nsmb.conf:設定 smbfs 資訊

我們可以在 FreeBSD 中使用 mount_smbfs 來掛入 Windows 網路芳鄰中所分享出來的共享資料夾。而 nsmb.conf 就是執行 mount_smbfs 所使用的設定檔。我們可以設定所要使用的 codepage、使用者名稱及密碼等,請 man nsmb.conf 以取得相關的設定說明。

A.34 nsswitch.conf:設定 nsswich 資訊

FreeBSD 中有所謂 name-server switch,用來控制名稱資訊轉換,例如,當系統要取得 password、group、host 等資訊時,會參考這個檔案以決定要從哪裡得到資訊。請 man nsswitch.conf 以取得相關的設定說明。

A.35 opiekeys:OPIE 設定檔

FreeBSD 內建一種密碼驗證的方法 OPIE (One Time Password In Everything),就是一種只能使用一次的密碼。而 opiekeys 這個檔案是用來存放使用 OPIE 的使用者設定。您可以 man opie 及 man opiepasswd 以取得更多資訊。

A.36 pam.d:PAM 設定檔

PAM 是 Pluggable Authentication Module 的縮寫。它是 FreeBSD 內建的一種極富彈性的認證機制,您可以參考這個網頁來取得更多關於 PAM 的資訊:http://www.freebsd.org/doc/en_US.ISO8859-1/articles/pam/;或者如果您安裝時有安裝 FreeBSD 文件,您也可以在下列目錄找到關於 PAM 的說明:

# ls /usr/share/doc/en_US.ISO8859-1/articles/pam

A.37 passwd:不含密碼的使用者資訊檔

FreeBSD 使用 shadow password 的方式來保護密碼檔,只有 root 才可以讀取編碼後的密碼檔 /etc/master.passwd,而一般使用者只能看到 passwd 檔中的資料。但是這並不是系統用來驗証的檔案,為了加快速度,FreeBSD 將該檔做成資料庫 /etc/spwd.db 及 /etc/pwd.db, 因此在修改完 master.passwd 後,必須使用指令 pwd_mkdb 來將 master.passwd 做成資料庫檔案。不過一般而言,我會使用 vipw 這個指令來修改 master.passwd,vipw 會先將 master.passwd 以預設的文書編輯軟體打開,修改完存檔後,它會視需要自動更新資料庫。你不需要改 passwd 的內容,只要改 master.passwd 即可。詳細說明請參考 man master.passwd 的說明。

A.38 pccard_ether:啟用及停用 PCCARD 網路設備

本檔用以啟動或停用 PCCARD 網路設備的執行檔。

A.39 periodic/daily:包含每天會定時執行的工作

設定每天要執行一次的程式。該目錄下放的是 shell script,如果你想自行增加的話,只需在該目錄下編輯新的 shell script 並將權限設為可執行即可,或者編輯 /etc/daily.local,加入想要執行的指令。在 /etc/defaults/periodic.conf 中定義了定期執行的設定,以下即為 daily 選項每個檔案所執行的動作:

檔案 動作 預設執行
100.clean-disks 清理磁碟,要清除的檔案類型可以在 periodic.conf 中設定。 否
110.clean-tmps 清除 /tmp。 否
120.clean-preserve 刪除 /var/preserve 中它舊的檔案。 是
130.clean-msgs 清除舊的系統訊息。 是
140.clean-rwho 清除 /var/rwho 中的舊資料。 是
150.clean-hoststat 清除 /var/spool/.hoststat。 是
200.backup-passwd 備份 /etc/master.passwd 及 /etc/group 並比對是否有更動。 是
210.backup-aliases 備份 /etc/mail/aliases。 是
300.calendar 執行 calendar -a。 否
310.accounting 移轉 /var/account/ 的檔案。 是
330.news 執行 /etc/news.expire。 是
400.status-disks 執行 df 及 dump -W。 是
405.status-ata-raid 檢查 ATA Raid 的狀態。 否
420.status-network 執行 netstat -i。 是
430.status-rwho 執行 uptime。 是
440.status-mailq 執行 mailq。 是
450.status-security 執行 /etc/security。 是
460.status-mail-rejects 統計/var/log/maillog 中記錄拒絕的信件數量。 是
470.status-named 統計 DNS 拒絕記錄。 是
500.queuerun 手動執行 mail queue。 是
999.local 執行 /etc/daily.local 中使用者自行定義的指令。  

A.40 periodic/weekly:包含每週會定時執行的工作

設定每週要執行一次的程式。該目錄下放的是 shell script,如果你想自行增加的話,只需在該目錄下編輯新的 shell script 並將權限設為可執行即可。在 /etc/defaults/periodic.conf 中定義了定期執行的設定,以下為每週會執行的工作:

檔案 動作 預設執行
120.clean_kvmdb 清除過期的 /var/db/kvm_*.db。 是
310.locate 執行 /usr/libexec/locate.updatedb。 是
320.whatis 執行 /usr/libexec/makewhatis.local。 是
330.catman 執行 /usr/libexec/catman.local。 否
340.noid 找出沒有擁有人或群組的檔案。 否
400.status_pkg 使用 pkg_version(1) 找出老舊的 package。 否
999.local 執行其它在 /etc/weekly.local 中使用者自行定義的指令。  

A.41 periodic/monthly:包含每月會定時執行的工作

設定每月要執行一次的程式。該目錄下放的是 shell script,如果你想自行增加的話,只需在該目錄下編輯新的 shell script 並將權限設為可執行即可。在 /etc/defaults/periodic.conf 中定義了定期執行的設定,以下為每月為執行的檔案:

檔案 動作 預設執行
200.accounting 執行 ac 指令,統計使用者登入時間。 是
999.local 執行其他 /etc/monthly.local 使用者自行定義的指令。  

A.42 periodic/security:包含每天會執行的安全檢查工作

periodic/security 中存放著每天會執行的 security check 檔案,這些檔案執行與否,同樣定義在 /etc/defaults/periodic.conf 中,以下為每日會執行的檔案:

檔案 動作 預設執行
100.setchksetuid 檢查是否有新增的 setuid 程式。 是
200.chkmounts 檢查掛入磁碟的改變。 是
300.chkuid0 列出所有 uid 為 0 的使用者。 是
400.passwdless 列出沒有密碼的使用者。 是
500.ipfwdenied 列出 ipfw 所拒絕的連線。 是
510.ipfdenied 列出 ipf 所拒絕的連線。 是
550.ipfwlimit 列出 ipfw log 中,超出限制的相同記錄。 是
600.ip6fwdenied 列出 ip6fw 所拒絕的連線。 是
650.ip6fwlimit 列出 ip6fw log 中,超出限制的相同記錄。 是
700.kernelmsg 列出 dmesg 的內容。 是
800.loginfail 列出登入失敗的資訊。 是
900.tcpwrap 列出 TCP Wrap 所拒絕的連線。 是

A.43 phones:遠端主機電話資料庫

用來設定遠端主機電話的資料庫,以供指令 tip 使用,詳情請 man tip。

A.44 ppp/:PPP 相關設定檔

設定 ppp 及 pppd 的設定檔。請參考「網路設定」一章中的 ADSL 及 modem 的設定。

A.45 printcap:列表機設定檔

這個檔案定義了列表機的設定,請參考 man lptcontrol。

A.46 profile:Shell 設定檔

這個檔案是當你使用 bash 為 shell 時,進入 shell 會讀取的設定。就像 tcsh 所使用的 csh.cshrc 一樣。

A.47 rc:開機時會執行的檔案

當系統開機時,kernel 會先去載入 /sbin/init ,然後 /sbin/init 會去執行 /etc/rc ,而 rc 會去執行 /etc/rc.d/* 及 etc/rc.* 的檔案。幾乎所有的設定都在 rc.conf 中,所以你只要去修改 rc.conf 就好了。

A.48 rc.d:所有開機時可能執行的服務

這個目錄下存放了所有開機時會自動執行的程式,這些程式會依我們在 rc.conf 中的設定決定需不需要被執行。

A.49 rc.firewall:防火牆設定檔

這個檔案是作防火牆的設定。你可以在該檔中加入你想要的設定,不過前提是你的系統已經準備好防火牆的相關設定了。詳情請參考防火牆設定一章的說明。

A.50 rc.local:使用者自行設定開機要執行的工作

這個檔案是讓你設定開機要執行的程式。你可以在該檔中加入啟動程式的指令,如果 rc.local 不存在,請自行新增。你也可以在 /etc/rc.d 的目錄中,放在你一開機想要執行的 shell script,並將權限改為可執行。

A.51 rc.*:其它開機時的相關執行檔

/etc/ 的其他 rc.* 的檔案,如 rc.i386、rc.network 等,你不必去更動它們。一般而言,你想做的設定都可以在 /etc/rc.conf 中達成。如果你想要知道更多它們的資訊,請 man rc。

A.52 resolv.conf:DNS 主機及網域設定

設定你 DNS 查詢的主機順序。例如下列範例中,我們設定我們的 domain 為 mydomain.com ,而 nameserver 的後面加上的 IP 就是 DNS Server 的位址。

domain  mydomain.com
nameserver      61.64.127.1
nameserver      168.95.1.1

A.53 services:定義網路服務的埠號

這個檔案定義了每個網路服務所使用的 port 及名稱。

A.54 shells:定義合法的 shell

這個檔案定義了使用者可以使用的 shell。只要是可以使用的 shell 都要在該檔案中加入。有些程式為去檢查使用者所使用的 shell 是否在 shells 中,例如 FTP 就不允許非使用 shells 中定義的 shell 的使用者登入。

A.55 ssh:SSH 相關設定及金鑰

這個目錄存放了 SSH daemon 所使用的金鑰及設定檔。

A.56 sysctl.conf:開機時會執行的 sysctl 內容

這個檔案的內容會在開機時被 sysctl 這個指令所執行,用來對系統進行一些參數的調校,請參考「系統調校」一章的說明。

A.57 syslog.conf:定義系統記錄檔位置及規則

這個檔案定義了系統記錄檔所儲存的位置及記錄的規則。

A.58 ttys:各種終端機權限設定

定義 tty 的形式及某些 tty 允不允許 root 登入。例入 root 就不能從 ttyp* 登入。有的 tty 後面有加 secure, 表示 root 可以從該 tty 登入。