本章講述了基本的基于指令行界面的系統配置方法。在學習本章前,你需要先閱讀 ubuntu 系統安裝提示, 第 3 章.
如是你很關心安全方面的資訊,你應該閱讀 securing debian manual,它在 harden-doc 軟體包中。
ubuntu 使用 system v 的 init 腳本系統。參閱 init程式, 第 2.4.1 節的介紹。
最簡單的控制 init 腳本的方法是改變 /etc/default 目錄下,與 init 腳本同名的檔案裡的環境變量設定。 例如,/etc/default/hotplug 可以控制 /etc/init.d/hotplug 的行為。檔案 /etc/default/rcs 可以用來定制 motd、sulogin 等為預設啟動。
如果你不能通過設定這些變量來得到你所需要的行為,你可以去修改 init 腳本:它們都是配置檔案。
可通過 /etc/syslog.conf 配置系統日志記錄方式。如果想為日志檔案上色可安裝 colorize 軟體包。參閱 syslogd(8) 和 syslog.conf(5)。
有一部分硬體優化的配置工作 ubuntu 留給了系統管理者。
hdparm
硬碟存取優化。效果顯著。
危險。務必先閱讀 hdparm(8)。
hdparm -tt /dev/hda 測試硬碟存取速度。
hdparm -q -c3 -d1 -u1 -m16 /dev/hda 加速新型 ide 系統。(有一定風險。)
setcd
壓縮磁盤存取優化。
setcd -x 2 減速至 2x speed。
參閱 setcd(1)。
setserial
串行接口管理工具集。
scsitools
scsi 硬體管理工具集。
memtest86
記憶體硬體管理工具集。
hwtools
低級硬體管理工具集。
irqtune:修改裝置的 irq 優先級,使那些需要高優先級和快速服務的硬體(例如,串行接口、數據機)獲得它所要的資源。對序列槽/數據機加速後獲得原來 3 倍的吞吐量。
scanport:掃描 i/o 空間的 0x100 至 0x3ff 位址段,查找已安裝的 isa 裝置。
inb:一個小巧的黑客工具,用來閱讀 i/o 端口資訊并将其值轉換成十六進制和二進制。
schedutils
linux 日程安排工具包。
包括 taskset、irqset、lsrt 和 rt。
再加上 nice 和 renice(不包括在工具包内),就可對程序的日程安排進行全面的管理。
使用 noatime 選項挂載檔案系統可有效提高檔案的讀取速度。參閱 fstab(5) 和 mount(8)。
通過 proc 檔案系統,linux 核心可直接調節某些硬體參數。參閱 通過 proc 檔案系統調整核心, 第 7.3 節。
ubuntu 中有許多專門的硬體配置工具包。其中有不少是針對筆記本電腦的。這兒有一些有趣的軟體包:
tpconfig - 一個配置觸摸屏裝置的程式
apmd - 進階電源管理(apm)工具
acpi - 顯示 acpi 裝置資訊
acpid - acpi 使用工具
lphdisk - 識别 phoenix notebios 下的隐藏分區。
sleepd - 筆記本電腦處于非工作狀态時進入休眠
noflushd - 讓空閑硬碟進入減速狀态
big-cursor - x 下的巨型滑鼠指針
acme - 激活筆記本電腦上的“多媒體按鈕”
tpctl - ibm thinkpad 硬體配置工具
mwavem - mwave/acp modem 支援
toshset - 通路大部分 toshiba筆記本電腦的硬體接口
toshutils - toshiba 筆記本電腦工具集
sjog - 激活 sony vaio 筆記本電腦上“jog dial”功能的程式
spicctrl - sony vaio 控制器程式可增亮 lcd 背光
acpi 是一種比 apm 更新的電源管理系統。
某些軟體包需要專門的核心子產品。它們已經包含在許多最新的核心源碼中。如果遇此問題,則需要手動打上最新的核心更新檔。
pam(pluggable authentication modules 可嵌入認證子產品)允許你控制使用者是如何登入的。
如果想在控制台終端不用密碼直接登入系統,可按下面的方法修改 /etc/pam.d/login 檔案的内容,風險自負。
該方法亦可用于 xdm、gdm,實作無密碼 x 控制台。
相反,如果你希望強化密碼政策,可安裝 cracklib2 并按下面的方法修改/etc/pam.d/passwd:
使用一次性登入密碼激活帳戶也很有用。要實作該功能,在 passwd 指令後加上 -e 參數,參閱 passwd(1)。
要設定系統最大程序數,可在 bash shell 中設定 ulimit -u 1000 或設定 pam 的 /etc/security/limits.conf 檔案。其它參數如 core 等的設定方法與之類似。path 的初始值可在 /etc/login.defs 中先于 shell 啟動腳本設定。
pam 的文檔位于 libpam-doc 軟體包内。其中 the linux-pam system administrator's guide 一文涵蓋了 pam 配置、可用子產品等内容,文檔中還包括了the linux-pam application developers' guide 和 the linux-pam module writers' guide。
這是 richard m. stallman 的一句名言,位于舊版 info su 頁面末尾。别擔心:在 ubuntu 中,目前版本的 su 使用 pam,是以你可以用 /etc/pam.d/su 下的 pam_wheel.so 來限制任何使用者組使用 su 的能力。下面的操作将在 ubuntu 系統中賦予 adm 使用者等同于 bsd wheel 使用者組的權限,而且該組成員不需要密碼就能使用 su 指令。
一些有趣的使用者組:
如果 pam_wheel.so 不帶任何 group== 參數,root group 就是 su預設的 wheel group。
adm group 可以閱讀日志檔案。
cdrom group 可在本地賦予一組使用者通路 cd-rom 驅動器的權限。
floppy group 可在本地賦予一組使用者通路軟碟驅動器的權限。
audio group 可在本地賦予一組使用者通路聲音裝置的權限。
src group 擁有源代碼以及 /usr/src 目錄下的檔案。它可以在本地賦予某個使用者管理系統源代碼的權限。
對于管理桌面或低級别的系統管理者,可設定他們為 staff 成員,該類成員可以在 /usr/local 下工作并且可以在 /home 下建立目錄。
完整清單參閱 securing debian manual 的“faq”章節,亦見于 woody 中的 harden-doc 軟體包。新的 base-passwd (>3.4.6)軟體包亦包含了權威清單:/usr/share/doc/base-passwd/users-and-groups.html。
使用 sudo 最主要的目的是保護自己少做蠢事,我認為使用系統時使用 sudo 比總是使用 root 帳号更好。
ubuntu 系統預設使用 sudo,來工作,你建立的第一個帳戶将自動加入到 admin 組, admin 組的成員擁有 sudo 的權限。
安裝 sudo 然後編輯 sudoers 中有關選項激活它。還可在 /usr/share/doc/sudo/options 中檢視 sudo 的使用者組特性。
樣例中的配置,設定“staff”使用者組成員可通過 sudo 執行任何 root 權限的指令而“src”使用者組成員隻可執行規定的一部分 root 權限的指令。
使用 sudo 的好處在于隻需一個普通使用者密碼登入,并且所有的活動都受到監控。用它為低級别的系統管理者賦權是個好主意。例如:
當然,如果你知道 root 密碼(絕大部分在家安裝系統的使用者都會知道),就可以在普通使用者下執行任何 root 指令:
(我想我該嚴格限制 admin 帳号的 sudo 特權,但對于家中的伺服器,就不用考慮那麼多了。)
想了解其它允許普通使用者執行 root 權限指令的程式,可以看看 super 軟體包。
對于 internet 超級伺服器,inetd 會在系統啟動時通過 /etc/rc2.d/s20inetd(for runlevel=2)加載,s20inetd 是一個指向 /etc/init.d/inetd 的符号連結。本質上,inetd 允許一個運作中的守護程序(daemon)調用其它多個守護程序,以減輕系統的負載。
當某個服務請求到達,系統會查詢 /etc/protocols 和 /etc/services 中的資料庫,确定該請求所指定的相關協定和服務,接着 inetd 會在 /etc/inetd.conf 資料庫中查找普通 internet 服務或 /etc/rpc.conf 中查找基于 sun-rpc 的服務。
為了系統安全,請在 /etc/inetd.conf 中關閉所有不用的服務。涉及到 nfs 和其它基于 rpc 的程式時需要激活 sun-rpc 服務。
有時,inetd 并不直接打開請求的服務,而是在 /etc/inetd.conf 中将該服務名作為的參數,打開 tcpd tcp/ip 守護程序包裝程式。這時,tcpd 首先登記請求并使用 /etc/hosts.deny 和 /etc/hosts.allow 進行附加的檢查,然後再運作相應的服務程式。
如果新版的 ubuntu 系統進行遠端通路時出現問題,可以在 /etc/hosts.deny 中注釋掉“all: paranoid”,如果有該行的話。
更多資訊參閱 inetd(8)、inetd.conf(5)、protocols(5)、services(5)、tcpd(8)、hosts_access(5) 和 hosts_options(5)。
有關 sun-rpc 的更多資訊參閱 rpcinfo(8)、portmap(8) 和 /usr/share/doc/portmap/portmapper.txt.gz。