配置重要的软件

现在所有的软件都装好了,我们在正常运行一些程序前要做的是创建它们的配置文件。

配置 Vim

在默认情况下, vim 是以与 vi 兼容的模式运行。有些人可能喜欢这种模式,但是我们强烈建议使用 vim 模式运行 vim (要不然我们就不必把 vim 包含到这本书里了,用老的 vi 不是更好?)。使用如下命令建立 /root/.vimrc 文件:

cat > /root/.vimrc << "EOF"
" Begin /root/.vimrc

set nocompatible
set bs=2

" End /root/.vimrc
EOF

配置 Glibc

我们需要建立 /etc/nsswith.conf 文件。虽然如果这个文件丢失或者不正确,glibc会使用默认的配置,但是其默认的配置无法很好地在网络环境下工作(那是我们下一章的问题)。同时我们也需要设置自己的时区。

使用如下命令建立新的 /etc/nsswitch.conf 文件

cat > /etc/nsswitch.conf << "EOF"
# Begin /etc/nsswitch.conf

passwd: files
group: files
shadow: files

publickey: files

hosts: files dns
networks: files

protocols: db files
services: db files
ethers: db files
rpc: db files

netgroup: db files

# End /etc/nsswitch.conf
EOF

你可以使用 tzselect 脚本选择时区,按照顺序回答脚本运行过程中提出的问题,脚本运行完毕,就会给出所需时区文件的位置。

使用如下命令将运行 tzselect 脚本得到的文件连接到/etc/localtime

ln -sf ../usr/share/zoneinfo/<tzselect's output> /etc/localtime

tzselect 的输出使用象 EST5EDT 或者 Canada/Eastern 的形式。因此,具体对这两个例子,使用如下命令建立符号连接:

ln -sf ../usr/share/zoneinfo/EST5EDT /etc/localtime

或:

ln -sf ../usr/share/zoneinfo/Canada/Eastern /etc/localtime 

配置动态链接库加载程序

在默认情况下,动态链接库加载程序 (/lib/ld-linux.so.2)会自动搜索几个默认的目录(/lib/usr/lib)。然而,如果有些库不是放在默认的目录中,你就需要把它们的路径加到 /etc/ld.so.conf 里,这样动态链接库加载程序才能找到它们。有两个目录是包含库文件但又不在默认目录中的,是 /usr/local/lib/opt/lib,我们要把它们加到动态链接库加载程序的搜索路径中。

使用如下命令建立 /etc/ld.so.conf 文件:

cat > /etc/ld.so.conf << "EOF"
# Begin /etc/ld.so.conf

/usr/local/lib
/opt/lib

# End /etc/ld.so.conf
EOF

配置 Sysklogd

使用如下命令建立一个新的文件 /etc/syslog.conf

cat > /etc/syslog.conf << "EOF"
# Begin /etc/syslog.conf

auth,authpriv.* -/var/log/auth.log
*.*;auth,authpriv.none -/var/log/sys.log
daemon.* -/var/log/daemon.log
kern.* -/var/log/kern.log
mail.* -/var/log/mail.log
user.* -/var/log/user.log
*.emerg *

# End /etc/syslog.conf
EOF

配置 Shadow 密码套件

这个软件包中包括一些工具程序,用来修改用户的密码,加入新的用户或组,删除它们,以及其它用途。在此,我们不想解释影子密码是什么意思,在源代码的doc/HOWTO文件中有详细介绍。这里,你需要记住一点,如果你决定使用影子(shadow)密码,那么所有需要对密码进行校验的程序(例如:xdm、ftp守护进程、pop3守护进程等等)都需要和它兼容,也就是说它们得能够使用影子密码。

下面的命令使 Shadow 密码生效:

/usr/sbin/pwconv

配置 Sysvinit

使用如下命令创建一个新的 /etc/inittab 文件:

cat > /etc/inittab << "EOF"
# Begin /etc/inittab

id:3:initdefault:

si::sysinit:/etc/rc.d/init.d/rc sysinit

l0:0:wait:/etc/rc.d/init.d/rc 0
l1:S1:wait:/etc/rc.d/init.d/rc 1
l2:2:wait:/etc/rc.d/init.d/rc 2
l3:3:wait:/etc/rc.d/init.d/rc 3
l4:4:wait:/etc/rc.d/init.d/rc 4
l5:5:wait:/etc/rc.d/init.d/rc 5
l6:6:wait:/etc/rc.d/init.d/rc 6

ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now

su:S016:once:/sbin/sulogin

1:2345:respawn:/sbin/agetty tty1 9600
2:2345:respawn:/sbin/agetty tty2 9600
3:2345:respawn:/sbin/agetty tty3 9600
4:2345:respawn:/sbin/agetty tty4 9600
5:2345:respawn:/sbin/agetty tty5 9600
6:2345:respawn:/sbin/agetty tty6 9600

# End /etc/inittab
EOF

配置你的键盘

没有什么比在Linux中使用错误的键盘映射更让人心烦的了。如果你使用的是US键盘,你可以跳过这一小节。在不改变的情况下,US键盘映射是缺省值。

要设置键盘映射,用下面的命令创建一个 /usr/share/kbd/keymaps/defkeymap.map.gz 的符号链接:

ln -s <path/to/keymap> /usr/share/kbd/keymaps/defkeymap.map.gz

把 <path/to/keymap> 换成你的键盘映射文件的完整路径。例如,你使用的是荷兰键盘,就要运行:

ln -s i386/qwerty/nl.map.gz /usr/share/kbd/keymaps/defkeymap.map.gz

配置键盘的另一个选择是把键盘映射编译到内核中去。这样你的键盘就会总能正确使用,即使你是在维护模式中(把`init=/bin/sh' 传给内核),这种模式下,设置键盘的启动脚本是不运行的。 .

用下面的命令把你的键盘映射写到内核代码中,每次解压一个新内核,你都要重复这一步:

loadkeys -m /usr/share/kbd/keymaps/defkeymap.map.gz > \
    /usr/src/linux/drivers/char/defkeymap.c

建立 /var/run/utmp, /var/log/wtmp 和 /var/log/btmp 文件

象login、shoutdown、uptime等程序会读写/var/run/utmp、/var/log/btmp和/var/log/wtmp文件。这些文件包括当前哪些用户登录,系统最后启动和关闭的时间以及无效的登录企图等信息。

使用如下命令建立这些文件,并正确设置其权限:

touch /var/run/utmp /var/log/{btmp,lastlog,wtmp} &&
chmod 644 /var/run/utmp /var/log/{btmp,lastlog,wtmp}

建立 root 的密码

选择 root 用户密码,并使用如下命令设置:

passwd root