logrotate 中几个重要指令的理解

1.create:create mode owner group Immediately after rotation (before the postrotate script is run) the log file  is  created  (with  the  same name as the log file just rotated).  mode specifies the mode for the log file in octal (the same as chmod(2)), owner specifies the user  name  who  will own the log file, and group specifies the group the log file will belong to. Any of the log file attributes may be omitted, in which case those attributes  for  the  new  file will  use  the  same  values  as the original log file for the omitted attributes. This option can be disabled using the nocreate option.

以下面这个为例:
$ cat /etc/logrotate.conf
/var/log/test.log {
        size 1M
    create 666 jaseywang jaseywang
}
$ sudo logrotate /etc/logrotate.conf

可以通过下面这个实验来验证,开三个窗口,分别执行:
# while true;do cat /dev/zero  > /var/log/test.log ;done
# logrotate   /etc/logrotate.conf
# ll /var/log/test.log*

也就是说 logrotate 之后生成的 file.log 新文件的权限,用户,用户组,执行了 logrotate 之后,该日志文件对应的服务会向 test.log.1 文件继续写入而不是向 test.log 写入。
Continue reading

Ubuntu 10.04 server 安装 sun-java

有一批机器默认安装的是 openjdk,现在需要安装 sun-java-jdk。即先卸载后安装。
网上很多的说法是添加下面的源:
deb http://archive.canonical.com/ lucid partner

然后 update:
$ sudo aptitude update

但是并没有找到 sun 的包:
$ sudo apt-cache search sun-java6-jdk

G 了下,sun 的包已经被移到 ppa 里面去了:
$ sudo apt-get install python-software-properties
$ sudo add-apt-repository ppa:sun-java-community-team/sun-java6
$ sudo apt-get update
$ sudo apt-get install sun-java6-jdk

Continue reading

SSH 的一些细节

一般的 HTTPS 认证如下:
1.浏览器连接 HTTPS 默认的 443 端口
2.服务器提供起 public key,(X509 证书)
3.浏览器 check 该证书颁发自一个受信任的 CA
4.浏览器 check 服务器证书上的 CN(X509 Common Name)跟你浏览的域名相匹配

上面这个步骤跟 ssh 的连接过程很类似,除了一点:ssh 没有 CA 的概念。下面描述一下 ssh 连接过程:
1.用户发起连接的请求
2.服务器收到请求,将自己的公钥发给用户
3.用户使用该公钥加密密码,发送给服务器
4.服务器私钥解密,验证密码正确性

但是使用上面密码的验证方式有一个缺点,如果在客户跟服务器通信的过程中被一个中间人截获(Man-in-middle),也就是说中间人截获了客户的登录请求,假冒服务器,将中间人的公钥发给了客户端。上面说了,ssh 是没有 CA 概念的,因此用户无法辨认此公钥的真伪,如果被中间人截获,那么用户跟真正服务器之间就没有信息可言了。
Continue reading

OpenSSL asn1_d2i_read_bio 缓冲区溢出攻击

受影响的版本包括 0.9.8v 之前的(0.9.8u,0.9.8t…0.9.8k..0.9.2b…0.9.1c),1.0.0 之前的以及 1.0.1 之前的。

Ubuntu 10.04 LTS(0.9.8k 25 Mar 2009),CentOS 5.5/5.6(0.9.8e-fips-rhel5 01 Jul 2008) 均受此影响。

Ubuntu 打补丁的方式如下:
$ wget https://launchpad.net/ubuntu/+archive/primary/+files/openssl_0.9.8k.orig.tar.gz
$ wget https://launchpad.net/ubuntu/+archive/primary/+files/openssl_0.9.8k-7ubuntu8.10.diff.gz
$ wget https://launchpad.net/ubuntu/+archive/primary/+files/openssl_0.9.8k-7ubuntu8.10.dsc
$ tar zxvf openssl_0.9.8k.orig.tar.gz
$ gzip -d openssl_0.9.8k-7ubuntu8.10.diff.gz
$ cd openssl-0.9.8k
$ patch -1 < ../openssl_0.9.8k-7ubuntu8.10.diff

或者直接通过 dsc 文件来完成补丁:
$ sudo apt-get install dpkg-dev
$ dpkg-source -x openssl_0.9.8k-7ubuntu8.10.dsc

编译安装:
$ ./config
$ make
$ sudo make install

这样会将新的 openssl 的文件安装至 /usr/local/ssl/ 下面:
$ tree -L 1 /usr/local/ssl/
/usr/local/ssl/
├── bin
├── certs
├── include
├── lib
├── man
├── misc
├── openssl.cnf
└── private

7 directories, 1 file

编译的时候可以指定安装的目录,下面这个会覆盖系统上的:
$ ./config --prefix=/usr

当然,最简单的方式还是通过包管理器来升级:
$ sudo apt-get update
$ sudo apt-get -y install openssl libssl0.9.8

xterm

自己配的一个 .Xdefaults 文件,可以显示中文,需要有 wenquanyi micro 字体支持:
xterm*locale: true
xterm.utf8: true
xterm*utf8Title: true
xterm*borderWidth: 0
xterm*faceName: WenQuanYi Mirco Hei:antialias=True:pixelsize=14
xterm*faceNameDoublesize: WenQuanYi Micro Hei:pixelsize=14
xterm*scrollBar: false
XTerm*background: black
XTerm*foreground: #00FF00
XTerm.termName:    xterm-256color
XTerm*boldMode:    true
XTerm*colorBDMode: false
XTerm*colorBD:     #ffffff
XTerm*cursorColor: #c0c090

也可以在启动 xterm 时加上其他的参数:
$ xterm -sl 300 -fg green -bg black -cr red

ref:
http://www.xfree86.org/4.0.1/xterm.1.html

使用 Cobbler 安装 Ubuntu 出现的问题

pxe 安装 Ubuntu 10.04,使用 apt-mirror 同步源在内网使用,然后在 preseed 文件上修改的这两段:
d-i mirror/http/hostname string http://your-private-ip
d-i mirror/http/directory string /ubuntu

在使用 iDRAC 打开安装界面,Ctrl+Alt+F4 观察安装的 log 时,发现启动到一定阶段系统没有相应了,出现如下的提示:
cat can't open '/tmp/net-retriever-xxxx-deduplicate/*': No such file or directory.

之前直接使用 mirrors.sohu.com 的源并没有出现问题,初步判定是由于使用了内部源引起的。
G 后发现是使用 apt-mirror 同步源时没有同步 netboot 下面的某些目录, rsync 下面的目录:
deb-amd64 http://mirrors.sohu.com/ubuntu lucid main/installer-amd64
deb-amd64 http://mirrors.sohu.com/ubuntu lucid main/debian-installer restricted/debian-installer universe/debian-installer multiverse/debian-installer
#deb-amd64 http://mirrors.sohu.com/ubuntu lucid-updates main/debian-installer restricted/debian-installer universe/debian-installer
#deb-amd64 http://mirrors.sohu.com/ubuntu lucid-security main/debian-installer restricted/debian-installer universe/debian-installer
Continue reading