June 23
# Add by jpj, 2005/06/21
x: P<->H P:pattern space H:hold space C:current line
h: P->H
H: P+>H
g: H->P
G: H+>P
n: C+1 ->P
N: C+1 +>P
d: Delete P
D: Delete P first LINE .
sed -n '/postfix/{p;n;N;p;}' /etc/passwd //打印 C, C+2
sed -n '/postfix/{N;N;p;}' /etc/passwd //打印 C, C+2
sed -n '/postfix/,+2p' /etc/passwd //打印 C, C+2
sed -n '/postfix/{n;N;N;p;}' /etc/passwd //打印 C+1, C+3
sed -n '/postfix/{x;p;};h' /etc/passwd //打印 C-1
sed -n '/postfix/{G;p;};h' /etc/passwd //打印 C, C-1
sed -n '/postfix/{x;p;x;p;};h' /etc/passwd //打印 C-1, C
sed -e :a -e '/postfix/q;N;11,$D;ba' /etc/passwd //打印 C-9, C
sed -n -e :a -e '/postfix/q;N;=;p;3,/$=/D;ba' /etc/passwd //打印 C-2, C
##### 1 -> N => P[1+2] p:print P[12]
##### -> N => P[1+2+3] p:print P[123]
##### D =>P[2+3]
##### -> N => P[2+3+4] p:print P[234]
##### D =>P[3+4]
##### ... ...
sed '/postfix/{x;p;x}' /etc/passwd //该行前加一空行
sed '/postfix/{p;x;}' /etc/passwd //该行后加一空行
sed 'n;d' /etc/passwd //隔行打印
sed -n '/postfix/{q;};p' /etc/passwd //打印 1, C
sed -n '1h;1!H;/postfix/{x;p;q;}' /etc/passwd //打印 1, C
sed -n '1{x;n};H;/postfix/{x;p;q;}' /etc/passwd //打印 1, C
sed = /etc/passwd| sed 'N;s/\n/\t/' ` //打印行号
sed -n '$=' /etc/passwd //打印文件行数
sed -n '/postfix/=' /etc/passwd //打印postfix所在行的行号
sed 's/.$//' // DOS to UNIX 格式
sed 's/$'"/`echo \\\r`/" // UNIX to DOS 格式
sed '1!G;h;$!d' /etc/passwd // 反转打印 ,同tac [cat reverse]
March 18
假设 A 机器 export 出一个目录 /export ,目录中含有一个文件 asroot
ls /export/asroot 结果如下:
-rwsr-xr-- 1 root root 13408 Oct 21 16:46 /export/asroot
asroot设置了setuid(0) , 执行 /export/asroot id 显示如下:
uid=0(root) gid=0(root) groups=0(root),64(pkcs11) , 程序以root用户运行
此时 B 机器 mount -t nfs A:/export/asroot /local/share
在 B 机器上的一个普通用户 user1 到 /local/share 目录下执行 asroot id, 结果如下:
uid=0(root) gid=100(users) groups=14(uucp),17(audio),33(video),100(users)
user1获得 root的执行权限