passwd 程序工作原理

由于需要写一个程序用于虚拟主机用户修改用户密码,就看了一下 passwd 程序的源代码。这里简单记录一下 passwd 的工作原理。

由于 passwd 隶属于 root 用户 root 组,且又有 s 标记,所以自动运行在 root 用户下。(有 s 标记的程序在执行时会被 setuid 和 setgid 为文件系统上这个文件的 uid 和 gid)。

passwd heiher

1. 调用 getpass() 从终端获取旧密码和两次新密码
2. 比较两个新密码,相同继续,否则重输
3. 使用 crypt() 加密密码原文为密文
4. 从 /etc/shadow 读取旧密码密文
5. 比较两个密文串,如果相同继续,否则输出错误信息并退出
6. 加密新密码,替换 /etc/shadow 中旧密码串
7. 退出

Over!

Apache MPM ITK 配置

vim /etc/apache2/apache.conf
<IfModule mpm_itk_module>
StartServers        1
MinSpareServers     1
MaxSpareServers     4
MaxClients          256
        MaxRequestsPerChild     8192
AssignUserID ${APACHE_RUN_USER} ${APACHE_RUN_GROUP} # 很重要
</IfModule>

如果不要 apache.conf 文件中指定一个全局的 AssignUserID,Apache 服务进程将运行在 root 用户下,这样没有指定用户的 Virtual Host 就会进行在高权限下,很危险!

Over!

Binutils with loongson2f patch for Debian 6

这个 deb 集成了 loongson2f 处理器的补丁程序,编译应用程序时需要增加 GCC 参数 -Xassembler “-mfix-loongson2f-nop” ,当编译内核时需要增加 GCC 参数 -Xassembler “-mfix-loongson2f-nop -mfix-loongson2f-jump”

下载地址:sftp://sftp:sftp@heiher.info:heiher/debian/loongson2f/binutils/

Over!

更换龙梦系列机器的引导程序 Logo

龙梦系列机器使用的BIOS和引导程序是 PMON,这个程序的功能很强大,这里我教大家如何提取和更换引导程序的 Logo。

备份 Logo
在 Debian 操作系统的终端里执行下面的命令来备份原始 Logo。

sudo dd if=/dev/mem of=orig.bmp.gz bs=1 skip=470155264 count=52908
gzip -d orig.bmp.gz

执行完成这两条命令后就可以看到 orig.bmp 这张图片了,如下。

制作新 Logo
建议和原来的图片的 size(448×224) 相同的 bmp 格式图片,没有测试过其它形式。这里是我制作的 Logo,呵呵。制作好 bmp 图片后需要使用 gzip 压缩,命令如下。

gzip logo.bmp

注意:压缩后的文件 logo.gmp.gz 大小必需小于等于 52908 字节。

更换新 Logo
先将图片文件放入到 /dev/hda1 分区中,我是放在了根目录。重新启动到 PMON 命令行(启动时按住 DEL 键)。

load -r -f bfc60000 /dev/fs/ext2@wd0/logo.bmp.gz
reboot

下面是我更换后的实物照片。

Over!

紧急修复盘(rescue) for Lemoe 2F 系列机器

rescue for lemote2f,Busybox 1.16.1,支持 EXT4 文件系统。
下载地址:http://heiher.info/sftp/lemote2f/rescue-lemote2f
SHA1SUM:http://heiher.info/sftp/lemote2f/rescue-lemote2f.sha1sum

PMON启动

load (wd0,0)/rescue-lemote2f
g

更新
20100412: 增加网络支持,网络版本 dd 命令 ndd。
20100417: 修改 mkfs 的一个错误;使用 GCC 4.5.0 重新编译。
20100426: 内核运行时修复 nop 指令;增加 ssh 和 scp 两个命令。

Over!

Android 终端命令安装 apk 应用程序

为了解放空间把 ASTRO File Manager 也删除了,它的功能基本都可以使用终端命令操作,如果你安装了 busybox 后。

su
cp /sdcard/test.apk /data/app/
chmod 644 /data/app/test.apk
chown system.system /data/app/test.apk

Over!

Telnet 登录 Android

在安装 busybox 过后,就可以通过 telnet 登录到 Android 系统并执行命令了,这对于没有QWERT键盘实在是太方便了。

首先要在 Android 系统上进行 telnetd 服务程序

telnetd 8000

使用 telnet 或 nc 连接服务器

telnet xxx.xxx.xxx.xxx 8000

Over!