Product SiteDocumentation Site

8.9. 其他組態:時間同步、記錄、共享近用…

本節列出的細目對希望精通 GNU/Linux 系統組態極有幫助。這裡祗列出簡要的內容,詳情仍需參閱文件。

8.9.1. 時區

初始安裝時經由 tzdata 套件組態時區。dpkg-reconfigure tzdata 命令以互動方式修改時區。其組態內容儲存在 /etc/timezone 檔案。在 /usr/share/zoneinfo 資料夾內對映的檔案複製在 /etc/localtime 檔案內;此檔案包括使用日光節約時間的國家。
暫時變更時區,可使用 TZ 環境變數,它的優先次序在預設的組態檔之前:
$ date
Thu Feb 19 11:25:18 CET 2015
$ TZ="Pacific/Honolulu" date
Thu Feb 19 00:25:21 HST 2015

8.9.2. 時間同步

時間同步,在單機時代是多餘,但在網路時代卻很重要。使用者無權修改日期與時間,所以需要精準的時間以免混亂。尤有甚者,網路上的電腦時間同步後,有助於安排社群工作者透過網路全球串聯。受到攻擊時,容易依序恢復原來的運作。由多部機器收集來的統計資料,必須有同步的時間,才能發揮作用。

8.9.2.1. 給工作站

工作經常需要重新開機 (雖然祗是節省能源),開機時以 NTP 同步就夠了。安裝 ntpdate 套件就可以。需要更換 NTP 伺服器時,再修改 /etc/default/ntpdate 檔案即可。

8.9.2.2. 供伺服器

伺服器很少重開機,系統時間必須絕對精準。為了永久維持時間的正確性,必須安裝由 ntp 套件提供的 NPT 伺服器。預設的組態方式係與 pool.ntp.org 同步,且回應在地網路的請求。可以編輯 /etc/ntp.conf 檔案改變原來的組態,NTP 伺服器依照該檔案的內容而變更。若有多個伺服器,最好有一個在地時間伺服器與公共的伺服器同步,並做為在地網路其他伺服器的同步的依據。

8.9.3. 輪轉日誌檔

日誌檔成長的速度很快,需要典藏它。最常的做法是循環典藏:祗保留最新的 X 部份。logrotate 是負責循環的程式,根據 /etc/logrotate.conf 檔案內的組態,把日誌檔儲存在 /etc/logrotate.d/ 資料夾內。管理者可以修改該等檔案,修改 Debian 預設的循環政策。logrotate(1) 手冊頁面描述該組態可用的選項。可以在循環的過程中,增加典藏的檔案數,或把檔案移至指定的資料夾而不是刪除它們。也可以電子郵件方式寄到別的地方。
logrotate 程式每日執行 cron 排程的要求 (詳情見 節 9.7, “以 cronatd 使用排定的工作”)。

8.9.4. 共享管理員權限

數個管理者共同在同個伺服器工作。共用同個根使用者密碼不是好主意,匿名引發的誤用很麻煩。解決方案是使用 sudo 程式,允許使用者對特定命令擁有專門的權力。在多數情況下,sudo 允許受信任的使用者以根的權限執行命令。使用者祗需執行 sudo command 並以個人的密碼通過認證。
安裝的時候,sudo 套件把完整的 root 權限授權給 sudo Unix 群組。管理者必須使用 visudo 命令授予其他權利,該命令允許使用者修改 /etc/sudoers 組態檔 (當然,必須啟用 vi 編輯器,或在 EDITOR 環境變數指定的編輯器)。新增一列 username ALL=(ALL) ALL 就能允許該使用者以 root 的授權執行命令。
還有較複雜的組態,祗允許特定使用者執行部份命令。詳情在 sudoers(5) 手冊頁面。

8.9.5. 掛載點清單

/etc/fstab 檔案列出所有開機自動掛載或手動掛載的移動儲存裝置。每個掛載點由一列文字描述,包括若干空格區隔的欄位:
  • file system: this indicates where the filesystem to be mounted can be found, it can be a local device (hard drive partition, CD-ROM) or a remote filesystem (such as NFS).
    此欄位通常以檔案系統的 ID 取代 (可以用 blkid device) 前置及 UUID=。此種方式可以應付新增或移除磁碟設備名稱的情況,或者以其他順序偵測到的磁碟。
  • 掛載點:這是把設備、遠端系統,或分區掛載於在地檔案系統的位置。
  • 類型:這個欄位定義掛載設備使用的檔案系統。ext4ext3vfatntfsbtrfsxfs 等。
    知名的檔案系統清單在 mount(8) 手冊頁面。特殊值 swap 係供交換分區使用;特殊值 auto 告訴mount 程式自動偵測檔案系統 (對讀卡機與 USB 磁碟機特別有用,因為它們可能使用不同的檔案系統);
  • 選項:依檔案系統的不同,而有多種選項,詳情見 mount 手冊頁面。最常用的是
    • rwro,表示該設備掛載後可以讀/寫,或祗有讀取的權限。
    • noauto 開機時關閉自動掛載。
    • nofail 允許在啟動時處理設備,即使該設備不存在。確認啟動時,該外接磁碟機可能未插入,因為 systemd 將確認所有掛載點在啟動完成前必須自動掛載。可將此與 x-systemd.device-timeout=5s 併用,告訴 systemd 不必等 5 秒以上的時間,直接進入下個作業階段 (見 systemd.mount(5))。
    • user 授權所有的使用者均可掛載此檔案系統 (若無此選項,則祗有根使用者才有此權限)。
    • defaults 表示預設的選項群組為:rwsuiddevexecautonouserasync,使用了 defaults 之後,還可以用 nosuid 命令、nodev 及其他類似的命令,中止 suiddev 等作用。加入 user 選項可再啟用它,因為 defaults 包括 nouser
  • dump: this field is almost always set to 0. When it is 1, it tells the dump tool that the partition contains data that is to be backed up.
  • pass: this last field indicates whether the integrity of the filesystem should be checked on boot, and in which order this check should be executed. If it is 0, no check is conducted. The root filesystem should have the value 1, while other permanent filesystems get the value 2.

範例 8.6. 範例 /etc/fstab 檔案

# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0
# / was on /dev/sda1 during installation
UUID=c964222e-6af1-4985-be04-19d7c764d0a7 / ext3 errors=remount-ro 0 1
# swap was on /dev/sda5 during installation
UUID=ee880013-0f63-4251-b5c6-b771f53bd90e none swap sw  0       0
/dev/scd0       /media/cdrom0   udf,iso9660 user,noauto 0       0
/dev/fd0        /media/floppy   auto    rw,user,noauto  0       0
arrakis:/shared /shared         nfs     defaults        0       0
此例的最後一個款目對應於網路檔案系統 (NFS):/shared/ 資料夾位於 arrakis 伺服器掛載於本地機器的 /shared//etc/fstab 檔案格式位於 fstab(5) 手冊頁面。

8.9.6. locateupdatedb

可以用 locate 命令找尋已知名稱的檔案。幾乎即時送回結果,因為它搜尋的資料庫儲存系統內所有檔案的位置;此資料庫由 updatedb 命令每日更新。locate 命令還有其他用途,Debian 選擇 mlocate 做為其標準系統。
mlocate 很聰明,祗送回該命令使用者能夠近用的檔案,不會顯示系統內其他符合條件的檔案 (因為它以根權限執行 updatedb 命令)。為了提供額外的安全保護,管理者可以使用 PRUNEDPATHS 位於 /etc/updatedb.conf,排除已經索引的其他資料夾。