2007年10月28日星期日

Linux Power Tools: (III) System Administration Tools

Part III: System Administration Tools
Chapter 9: Bypassing Automatic Configurations to Gain Control

Debian
系统启动 /etc/inittab 调用 /etc/init.d/rcS
SysV启动脚本 /etc/rc?.d
运行级别和启动X /etc/X11/default-display-manager
cron: /etc/crontab 调用 /etc/cron.interval
超级服务 inetd, xinetd
邮件服务器
模块update-modules 根据/etc/modutils目录自动创建 /etc/modules.conf
网络配置: 启动脚本/etc/init.d/networking 配置文件/etc/network
启动文件: /etc/rc.boot 以及 /etc/rcS.d
SysV 启动脚本模板
#!/bin/bash
case "$1" in
start)
/usr/local/bin/bigserv
;;
stop)
/usr/bin/killall bigserv
;;
restart)
$0 stop
$0 start
;;
esac

~/.xinitrc ==> startx
~/.xsession ==> XDM,KDM,GDM
~/.vnc/xstartup ==> VNC server

Chapter 10: Using Multiple OSs
GRUB
# grub
grub> find /boot/grub/stage1
(hd0,5)
grub> root (hd0,5)
grub> setup (hd0)
grub> quit

Chapter 11: Managing Packages

Chapter 13: Managing Printers

Chapter 14: Programs and Processes
ps
top
pstree
w
jobs
lsof
netstat
nice/renice
kill/killall

Chapter 15: Creating a Custom Kernel
Chapter 16: Optimizing X Configuration
Chapter 17: Protecting Your System with Backups

cp
cpio
dump
smbtar
tar

Chapter 18: System Security
攻击方法
好的密码
本地服务
# netstat -ap
$ nmap -sT www.debsir.org

Part IV: Networking Tools
Chapter 19: Basic Network Configuration
网卡
驱动 /etc/modules.conf
DHCP
客户端 dhclient/pump 调用程序 /sbin/ifup 配置文件 /etc/network/interfaces, /etc/dhclient.conf RedHat /etc/sysconfig/network,/etc/sysconfig/network-scripts/ifcfg-eth0
配置生效: # /etc/rc.d/init.d/network stop|start
查看进程: $ ps ax | grep dhcpcd
静态地址
测试
Xtraceroute
优化网络

Chapter 20: Controlling Network Access
防火墙工具
Shorewall 调用配置文件 /etc/sysconfig/iptables
Red Hat Security Level Configuration: redhat-config-securitylevel 和 lokkit 调用 iptables
Knetfilter 配置文件 /etc/iptables_rules.cfg

防火墙模板
#!/bin/bash

iptables -F INPUT
iptables -F FORWARD
iptables -F OUTPUT

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

# Let traffic on the loopback interface pass
iptables -A OUTPUT -d 127.0.0.1 -o lo -j ACCEPT
iptables -A INPUT -s 127.0.0.1 -i lo -j ACCEPT

# Let DNS traffic pass
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p udp --sport 53 -j ACCEPT

# Let clients' TCP traffic pass
iptables -A OUTPUT -p tcp --sport 1024:65535 -m state \
--state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 1024:65535 -m state \
--state ESTABLISHED,RELATED -j ACCEPT

# Let local connections to local SSH server pass
iptables -A OUTPUT -p tcp --sport 22 -d 172.24.1.0/24 -m state \
--state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -s 172.24.1.0/24 -m state \
--state NEW,ESTABLISHED,RELATED -j ACCEPT

TCP Wrappers
通常由 inetd 调用
配置文件 /etc/inetd.conf /etc/hosts.allow 和 /etc/hosts.deny
服务名解析 /etc/services

TCP Wrappers配置格式(/etc/hosts.allow 和 /etc/hosts.deny)
service-names : client-list [: shell-command ]
service-names : 例如 in.ftpd 或 in.telnetd
client-list : ip地址或ip地址范围, 主机名, 域名, 用户名 例如 172.24.45.0/24 EXCEPT 172.24.45.72
/etc/hosts.allow 格式
in.telnetd : 172.24.45.2 trex.pangaea.edu
vsftpd : 172.24.45. EXCEPT 172.24.45.1
imapd : .pangaea.edu EXCEPT router.pangaea.edu
ipop3d : sue@trex.pangaea.edu
xinetd
格式
service swat
{
port = 901
socket_type = stream
wait = no
only_from = 127.0.0.1
user = root
server = /usr/sbin/swat
disable = no
}

使用Jail
chroot

Chapter 21: Detecting Intruders
Tripwire
策略文件格式:
TWBIN = /usr/sbin ;

# Tripwire binaries
(
rulename = "Tripwire Binaries",
)
{
$(TWBIN)/siggen -> $(ReadOnly) ;
$(TWBIN)/tripwire -> $(ReadOnly) ;
$(TWBIN)/twadmin -> $(ReadOnly) ;
$(TWBIN)/twprint -> $(ReadOnly) ;
}

/usr/bin -> $(ReadOnly) ;
/etc -> $(Dynamic) ;
初始化数据库
/etc/tripwire/twinstall.sh
tripwire --init
校验
tripwire --check
修改Tripwire配置
twadmin --create-cfgfile -S /etc/tripwire/site.key /etc/tripwire/twcfg.txt # 修改配置文件
twadmin --create-polfile -S /etc/tripwire/site.key /etc/tripwire/twpol.txt # 修改策略
tripwire --update-policy -S /etc/tripwire/site.key /etc/tripwire/twpol.txt # 创建新的策略文件
tripwire --update --twrfile /var/lib/tripwire/report/knox.luna.edu-20031212-155357.twr # 更新数据库

chkrootkit


Part V: Server Tools
Chapter 22: Running Servers
SysV启动脚本
位置: Debian /etc/init.d /etc/rc?.d Redhat /etc/rc.d/init.d/ /etc/rc.d/rc?.d

chkconfig/ntsysv/redhat-config-services/ksysv

本地启动脚本: /etc/rc.boot

Chapter 23: Getting More from a Web Server
web服务器: apache/roxen/zeus/kHTTPd
apache服务器配置

Chapter 24: Serving Files
FTP
NFS
Samba

Chapter 25: Delivering E-Mail
服务器: Sendmail/Postfix/Exim/qmail

Chapter 26: Providing Remote Login Access
字符模式远程访问: OpenSSH
GUI 远程访问: XDMCP Server/VNC

Chapter 27: Miscellaneous Servers
DHCP
DNS
NTP

Linux Power Tools: (II) User Tools

Part II: User Tools
Chapter 4: Mastering Shells and Shell Scripting
指定用户shell /etc/passwd
tony:x:1000:1000:tony,,,:/home/tony:/bin/bash
用命令修改用户默认shell
# usermod -s /bin/tcsh sandro
普通用户修改自己的shell
$ chsh -s /bin/tcsh
set show-all-if-ambiguous on # 设定 tab 键自动补齐
配置文件/etc/inputrc
配置shell
全局配置文件 /etc/profile 和 /etc/profile.d目录(login相关) /etc/bashrc 或 /etc/bash.bashrc (login无关)
用户配置文件 ~/.profile (login相关) ~/.bashrc (login无关)
shell 脚本

Chapter 5: Doing Real Work in Text Mode
定义虚拟终端 /etc/inittab
通过Alt+F1 到 Alt+F6调用
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
如果运行了X, 则在 Alt+F7

重要命令
文件系统 mount umount fdformat mkfs
文件管理 cp ln mv rm ls chown chgrp chmod mkdir rmdir cd pwd
文件信息 df du stat lsof uptime free hostname who dmesg
tip 对应错误信息存储在 /var/log/dmesg

字符模式环境
配置环境 /etc/termcap /usr/share/terminfo
修改终端字体
相关命令 consolechars, setfont, fontconfig
$ setfont -v /usr/lib/kbd/consolefonts/t.psf.gz
Debian 命令 consolechars 软件包 console-tools 字体包 console-data 和 fonty 字体文件位置 /usr/share/consolefonts
色彩 alias ls='ls --color'

Chapter 6: Getting the Most from a Desktop Environment
从字符模式或使用XDM登录X 会读取 .xsession 或 .xinitrc
XDM 使用 .xsession, startx 使用 .xinitrc
startkde ==> KDE(~/.kde), gnome-session ==> GNOME(~/.gnome2), startxfce ==> XFce

KDE
GNOME

Chapter 7: Using Linux for Office Productivity

OpenOffice.org
KOffice
GNOME Office
LaTeX
Emulators

字体

打印机

Chapter 8: Miscellaneous User Tools.

音频
数码相机
GIMP
浏览器
E-Mail 客户端

2007年10月27日星期六

Linux Power Tools: (I) Hardware Tools 2

Chapter 2: Improving Disk Performance
测试与优化磁盘性能
# /sbin/hdparm -Tt /dev/hdb (针对ATA硬盘)
# /sbin/hdparm -v /dev/hdb 查看硬盘参数
优化硬盘性能
参阅hdparm mainpage
优化硬盘分区
1. 将经常访问的数据存储在硬盘内圈
2. 交换分区放置在硬盘内圈
3. 将性能相关的大数据文件放在硬盘的前段, 比如数据库文件
3. 相关的分区应该放在一起
4. 对于旧电脑, /boot分区有1024柱面(约8G)的限制
5. 多硬盘性能会提升

Chapter 3: Using External Peripherals
配置USB,RS-232, 并口
配置键盘 Debian

Keymap文件位置 /etc/console and /usr/share/keymaps

调用脚本 /etc/init.d/keymap.sh
系统提供键盘映射文件位置 /usr/share/keymaps
调整键盘响应 # kbdrate -r 12 -d 250
rate (-r) delay (-d)

X下的键盘配置
setxkbmap -v # 查看当前键盘配置
$ xmodmap -e 'keycode 23 = Tab' # 重新设定Tab键
.Xmodmap # 用户设定

鼠标配置
Option "Device" "/dev/mouse"
/dev/mouse 为到 /dev/psaux 的符号链接 用于PS/2鼠标
/dev/usb/mouse0 USB鼠标
Option "Protocol" "ps/2"
imps/2 微软智能鼠标协议
两键鼠标(模拟三键)
Option "Emulate3Buttons"
Option "Emulate3Timeout" "60"
配置滚轮鼠标
需要协议 imps/2
Option "ZAxisMapping" "4 5"

配置扫描仪

Linux Power Tools: (I) Hardware Tools 1

Linux Power Tools
by Roderick W. Smith ISBN:0782142265
Sybex ? 2003 (644 pages)

Part I: Hardware Tools

Chapter 1: Optimizing System Architecture Usage

编译参数的针对平台的优化: -march=pentium4
驱动硬件:
1. 将驱动编译进内核
2. 以模块方式加载驱动 模块位置 /lib/modules/version
insmod:单个模块加载命令, 需要指定模块名称或模块文件文件名, 比如加载via-rhine.o, 可以insmod via-rhine, 问题: 可能会因为依赖问题而模块加载失败.
modprobe: 加载模块同时解决依赖问题, 其他同insmod
depmod: 创建模块依赖列表, 供modprobe使用
rmmod: 卸载内核模块, 与insmod 相反, 使用-r 或 --stacks 则与modprobe相反
加载模块时的通用参数 -r 模块闲置不用时, 即自动卸载模块.
内核守护进程: kerneld
模块强制加载(通常只加载版本匹配的模块): -f

自动加载模块
配置文件: /etc/modules.conf(在Debian 中是/etc/modules)
debian的方式: 使用目录树方式/etc/modutils: update-modules 根据此目录生成/etc/modules.conf文件 因此不应该直接修改此配置文件, 如果要增加模块, 可以修改 /etc/modules文件 或 /etc/modutils/目录, 然后用 update-modules 更新
alias 为设备指定驱动 options 指定模块加载参数

Delivering Clear Sound
OSS, ALSA 驱动

/proc 文件系统说明
了解您的硬件
$ cat /proc/version 查看内核信息

修改硬件设定

2007年10月24日星期三

心情

2007年10月24日农历丁亥年九月十四 霜降 阴雨

冬天快了吧? 应该还是秋天, 阴冷的风, 连绵的雨, 难以接受的温差,

秋风秋雨愁煞人

习惯了北方的温度,

似乎有些不适应,

难以预测的状况, 天气预报似乎与这里无关

远远望去, 连绵的山, 失去了晴日的清晰,

似乎有了点北方的感觉 -- 污染, 呵呵

脚下川流的移动, 还是时常停顿

怎样的心情呢

太阳, 墙角, 板凳

火炉, 家, 温暖

文件名编码转换工具convmv

convmv
$ convmv -f 原文件名编码 -t 转换文件名编码 --notest 转换路径
$ convmv -f cp936 -t utf8 --notest .

2007年10月23日星期二

学习笔记:VIM-1 基本操作4

从崩溃中恢复

基本恢复
vim -r filename
恢复未命名文件
vim -r "" 需要进入原来的目录执行这个命令
vim -r 列出可用交换文件
使用指定交换文件
vim -r filename.swp

tips
单词替换
:%s/four/4/g
"%" 范围前缀表示在所有行中执行替换。最后的 "g" 标记表示替换行中的所有匹配点。
:%s/\/4/g 用 "\<" 来指定匹配单词开头,用 "\>" 来匹配单词结尾
:%s/\/4/gc 替换确认


有如下样式的一个名字列表:
Doe, John
Smith, Peter

你想把它改成:
John Doe
Peter Smith

这可以用一个命令完成:
:%s/\([^,]*\), \(.*\)/\2 \1/
"from" 部分是:\([^,]*\), \(.*\)
第一对 \( 和 \) 之间 [^,] 匹配除逗号外的任何东西 * 任意多次
第二对 \( 和 \) 之间 . 匹配任意字符 * 任意多次
在 "to" 部分,我们有 "\2" 和 "\1"。这些称为 "反向引用"。它们指向前面模式中的
\( 和 \) 间的部分。
以在替换部分使用多达 9 个反向引用。"\0" 表示整个匹配部分。

单词统计
g CTRL-G 统计的是整个文件的字数
要在 "g" 后面输入一个空格,这里只是方便阅读

选中你要计算字数的文本,然后输入 "g CTRL-G"

删除多余的空格
:%s/\s\+$//
% 指明范围
\s\+$ 这表示行末 ($) 前的一个或者多个 (\+) 空格 (\s)

匹配列表
:set is CTRL-D
q: 打开命令行窗口

执行shell命令
:!{command}
:[range]!{program} 经由 {program} 过滤文本

编辑一个目录
:edit .
查看当前目录
:pwd

gf 在当前目录下查找光标所在单词为文件名的文件

显示缓冲区列表
:ls
在多个缓冲区间切换
CTRL-^
编辑指定缓冲区
:buffer n n为缓冲区号

新窗口中打开一个缓冲区:
:sbuffer n

netbeans下不能输入中文问题的解决

系统:Debian/lenny java 1.5.0_13 netbeans5.5.1

现象: Netbeans下不能输入中文, 但显示正常

问题:系统编码为zh_CN.UTF-8 Netbeans编码为zh_CN.GBK
解决:调整系统与netbeans编码相一致


附:
指定Netbeans使用的编码
在netbeans-5.5.1/etc/netbeans.conf中加入:
export LC_ALL="zh_CN.GBK"

指定netbeans使用的JAVA的位置
在netbeans-5.5.1/etc/netbeans.conf中加入:
netbeans_jdkhome="/usr/lib/jvm/java-1.5.0-sun"

学习笔记:VIM-1 基本操作3

分割窗口
分割当前窗口
:split
窗口间跳转
CTRL_W
关闭窗口
:close 避免最后一个窗口时退出vim
:only 关闭除当前窗口外的其他窗口

用另外一个文件分割窗口
:split filename

打开窗口编辑一个新文件
:new

退出所有窗口
:qall
保存所有窗口
:wall

显示文件差异
vimdiff filename1 filename2

作大修改
重复前一次修改
"."

替换
:[range]substitute/from/to/[flags]
[range] % 作用于全部行
substitute s 简写
[flags] g 全局 即对行中的所有匹配点起作用
[flags] c 替换前确认

命令范围
范围总是放在一个命令前面
:1,5s/this/that/g 即在1到5 行上执行替换
. 表示当前行
:.write filename 将当前行写入一个文件
文件的第一行行号为1, 最后一行为$ 即 % 为 1,$ 的缩写

向前查找
?xxxx?
向后查找
/xxxx/

读取文件的一部分
:read filename

保存部分行
:.,$write filename


改变大小写
gUw 当前单词大写
guw 当前单词小写
g~ 大小写切换

外部程序
:shell
!command

刷新屏幕
CTRL-L

学习笔记:VIM-1 基本操作2

编辑时不能输入中文
:set encoding=cp936
菜单显示乱码
:so $VIMRUNTIME/delmenu.vim
:so $VIMRUNTIME/menu.vim
建议字体: Bitstream Vera Sans Mono
:set guifont ?
usr_04 拷贝文本(y)
ynw 拷贝n个单词
p 在光标后粘贴
yy拷贝一行
拷贝一行到剪贴板中:
"*yy (一个双引号加一个星号)。
要粘贴剪贴板内容
"*p
临时设置语法高亮
:syntax enable
临时清除语法高亮
:syntax clear
编辑多个文件
编辑另一个文件
:edit foo.txt //Vim 会关闭当前文件并打开foo.txt
查看错误信息
:help 错误标号
在已经打开的多个文件见切换
CTRL-^
生成备份文件
:set backup 即~
定义备份文件后缀
:set backupext=.bak
保留原始文件
:set patchmode=.orig
以只读模式打开文件
vim -M filename
取消只读模式
:set write
文件另存
:saveas filename

wget 使用技巧

wget 是一个命令行的下载工具。对于我们这些 Linux 用户来说,几乎每天都在使用它。下面为大家介绍几个有用的 wget 小技巧,可以让你更加高效而灵活的使用 wget。

  1. $ wget -r -np -nd http://example.com/packages/

    这条命令可以下载 http://example.com 网站上 packages 目录中的所有文件。其中,-np 的作用是不遍历父目录,-nd 表示不在本机重新创建目录结构。

  2. $ wget -r -np -nd --accept=iso http://example.com/centos-5/i386/

    与上一条命令相似,但多加了一个 --accept=iso 选项,这指示 wget 仅下载 i386 目录中所有扩展名为 iso 的文件。你也可以指定多个扩展名,只需用逗号分隔即可。

  3. $ wget -i filename.txt

    此命令常用于批量下载的情形,把所有需要下载文件的地址放到 filename.txt 中,然后 wget 就会自动为你下载所有文件了。

  4. $ wget -c http://example.com/really-big-file.iso

    这里所指定的 -c 选项的作用为断点续传。

  5. $ wget -m -k (-H) http://www.example.com/

    该命令可用来镜像一个网站,wget 将对链接进行转换。如果网站中的图像是放在另外的站点,那么可以使用 -H 选项。

原文地址 http://linuxtoy.org/archives/wget-tips.html

Debian 下时区的设定

# dpkg-reconfig tzdata
或直接修改配置文件/etc/timezone,内容为所要设定的时区

tonybox:~# cat /etc/timezone
Asia/Shanghai
tonybox:~#

然后修改 /etc/default/rcS文件, 设定是否使用UTC, 如果要令BIOS的时间为本地时间, 则:
UTC=no

netstat 及 traceroute

netstat命令的常用参数
# netstat -[rn] <==与路由有关的参数
# netstat -[antulpc] <==与网路介面有关的参数
参数:
与路由 (route) 有关的参数说明:
-r :列出路由表(route table),功能如 route
-n :不使用主机名称与服务名称,使用 IP 与 port number ,功能如 route -n
-a :列出所有的连线状态,包括 tcp/udp/unix socket 等;
-t :仅列出 TCP 封包的连线;
-u :仅列出 UDP 封包的连线;
-l :仅列出有在 Listen (监听) 的服务之网路状态;
-p :列出 PID 与 Program 的名;
-c :可以设定几秒钟后自动更新一次;
例子:
# netstat -rn <==列出目前的路由表状态,且以 IP 及 port number

# netstat -an <==列出目前的所有网路连线状态,使用 IP 与 port number
# netstat -tulnp <==列出目前已经启动的网路服务
# netstat -atunp <==查看本机所有的网路连线状态
traceroute 常用参数
traceroute [-nwig] IP
参数:
-n :可以不必进行主机的名称解析,单纯用 IP ,速度较快!
-w :若对方主机在几秒钟内没有回声就宣告不治...预设是 5 秒
-i :指定网络接口

CA

How to have your Own CA

Creating Your Own CA

OpenCA Guide

用OpenCA构建自己的PKI

nstall OpenCA with PostgreSQL

Error: REPORT of '/svn/!svn/vcc/default': 200 OK

无论是使用 svn 还是用TortoiseSVN下载django都会出现如下错误:


Error: REPORT request failed on '/svn/!svn/vcc/default'

Error: REPORT of '/svn/!svn/vcc/default': 200 OK (http://code.djangoproject.com)

莫名其妙

可能是网络延迟的缘故, 多次 svn update 就可以了

Apache2的启动参数

#/etc/init.d/apache2 start|stop|restart|graceful 启动|停止|重启|不中断当前的连接的重启

OpenSSL Command-Line HOWTO

OpenSSL Command-Line HOWTO

Paul Heinlein

Initial publication: June 13, 2004
Most recent revision: August 8, 2007

The openssl application that ships with the OpenSSL libraries can perform a wide range of crypto operations. This HOWTO provides some cookbook-style recipes for using it.

URL: http://www.madboa.com/geek/openssl/

常见数字证书格式和文件扩展名

PKCS 全称是 Public-Key Cryptography Standards ,是由 RSA 实验室与其它安全系统开发商为促进公钥密码的发展而制订的一系列标准,PKCS 目前共发布过 15 个标准。 常用的有:
PKCS#7 Cryptographic Message Syntax Standard
PKCS#10 Certification Request Standard
PKCS#12 Personal Information Exchange Syntax Standard

X.509是常见通用的证书格式。所有的证书都符合为Public Key Infrastructure (PKI) 制定的 ITU-T X509 国际标准。

PKCS#7 常用的后缀是: .P7B .P7C .SPC
PKCS#12 常用的后缀有: .P12 .PFX
X.509 DER 编码(ASCII)的后缀是: .DER .CER .CRTX.509
PAM 编码(Base64)的后缀是: .PEM .CER .CRT

在OpenSSL的工具集中,一般可以使用 -outform -inform 指定 DER 还是 PAM 格式。
例如:
openssl x509 -in Cert.pem -inform PEM -out cert.der -outform DER

OpenSSL 中 PEM 到 PKCS#12 的转换,参考命令:
openssl pkcs12 -export -in Cert.pem -out Cert.p12 -inkey key.pem

OpenSSL 中 PKCS#12 到 PEM 的转换,可参考:
openssl pkcs12 -in Cert.p12 -out Key.pem
openssl x509 -in Key.pem -text -out Cert.pem

apache2下的限速模块

mod_cband : is an Apache 2 module provided to solve the problem of limiting users' and virtualhosts' bandwidth usage. The current versions can set virtualhosts' and users' bandwidth quotas, maximal download speed (like in mod_bandwidth), requests-per-second speed and the maximal number of simultanous IP connections (like in mod_limitipconn)

Bandwidth Module : Restrict the number of simultaneous connections per vhost

mod_limitipconn : This is the distribution page for the Apache module mod_limitipconn.c, which allows web server administrators to limit the number of simultaneous downloads permitted from a single IP address.

dns信息及nslookup 使用

显示本机DNS缓存信息
ipconfig /displaydns

清空本机DNS缓存信息
ipconfig /flushdns

查询dns信息
nslookup [-option] [hostname] [server]

nslookup> type=X //指定查询类型 A、ANY、CNAME、MX、NS、PTR、SOA、SRV
nslookup> server NAME //设定查询DNS服务器
nslookup> ls domain //返回域名相关的所有地址