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,排除已经索引的其他文件夹。