Pengjun's profile上善若水PhotosBlogLists Tools Help

Blog


    June 23

    Sed1line (Draft)

    # 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

    NFS 安全问题

    假设 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的执行权限