WEB开发网      婵犵數濞€濞佳囧磹婵犳艾鐤炬い鎰堕檮閸嬬喐銇勯弽銊с€掗梻鍕閺岋箑螣娓氼垱笑闂佽姘﹂褔婀佸┑鐘诧工妤犲憡绂嶉崜褏纾奸弶鍫涘妼缁楁岸鏌熷畡鐗堝殗闁诡喒鏅犲畷褰掝敃閵堝棙顔忔繝鐢靛仦閸ㄥ爼骞愰幘顔肩;闁规崘绉ぐ鎺撳亹闁绘垶锕╁Λ鍕⒑閹肩偛濡奸悗娑掓櫇缁顓兼径妯绘櫇闂佹寧绻傞弻濠囨晝閸屾稓鍘甸柣搴㈢⊕閿氶柣蹇ョ稻缁绘繃绻濋崘銊т紝闂佽鍨伴崯鏉戠暦閻旂⒈鏁傞柛鈾€鏅欑槐妯衡攽閻愬樊鍤熷┑顔藉劤铻為柛鏇ㄥ墯閸欏繘鏌嶉崫鍕櫣缂佲偓婢跺绠鹃柟瀛樼箘閿涘秵顨ラ悙顏勭伈闁诡喖缍婂畷鎯邦槻婵℃彃顭烽弻娑㈠Ω閵夈儺鍔夌紓浣稿€哥粔褰掑极閹剧粯鏅搁柨鐕傛嫹 ---闂傚倷鐒︾€笛兠洪埡鍛闁跨噦鎷�
开发学院操作系统Linux/Unix 理解 chroot 阅读

理解 chroot

 2009-07-12 08:32:13 来源:WEB开发网 闂傚倷绶氬ḿ褍螞閹绢喖绠柨鐕傛嫹闂傚倷绀侀幉锟犲垂閻㈠灚宕查柟鎵閸庡秵銇勯幒鎴濃偓鐢稿磻閹炬枼妲堟繛鍡楃С濞岊亞绱撻崒姘扁枌闁瑰嚖鎷�婵犵數濮幏鍐川椤撴繄鎹曢梻渚€娼уú銈吤洪妸鈺佺劦妞ゆ帊鑳堕埊鏇㈡煏閸モ晛浠х紒杈╁仱閺佹捇鏁撻敓锟�闂傚倷绶氬ḿ褍螞閹绢喖绠柨鐕傛嫹  闂傚倷鑳舵灙缂佺粯顨呴埢宥夊即閵忕姵鐎梺缁樺姇閻忔氨鈧凹鍓熷娲垂椤曞懎鍓伴梺閫炲苯澧紒澶婄秺瀵濡歌閸嬫捇妫冨☉娆忔殘闂佷紮缍€娴滎剟鍩€椤掑倹鏆柛瀣躬瀹曚即寮借閺嗭箓鏌ㄩ悤鍌涘
核心提示: 清单 9. 粗略 `chroot` 的使用$gcc-Walltest.c-otest#./test#lsash:ls:notfound#busyboxlsbinetcnewhometesttest.c下面给出功能将近完整的 chroot ,加上了一些错误处理并新增了可执行指定命令的功能,理

清单 9. 粗略 `chroot` 的使用

$ gcc -Wall test.c -o test 
 
# ./test 
# ls 
ash: ls: not found 
 
# busybox ls 
bin   etc   newhome test   test.c 
 

下面给出功能将近完整的 chroot ,加上了一些错误处理并新增了可执行指定命令的功能。当在没有给出 chroot 切换后要执行的命令时,默认执行 `/bin/sh`,同时检测环境以确认使用何种 shell。

清单 10. 功能完整的 chroot

#include <stdio.h> 
#include <unistd.h> 
#include <stdlib.h> 
 
int main(int argc, char *argv[]) 
{ 
  if(argc<2){ 
    printf("Usage: chroot NEWROOT [COMMAND...] \n"); 
    return 1; 
  } 
 
  printf("newroot = %s\n", argv[1]); 
  if(chroot(argv[1])) { 
    perror("chroot"); 
    return 1; 
  } 
 
  if(chdir("/")) { 
    perror("chdir"); 
    return 1; 
  } 
 
  if(argc == 2) { 
    argv[0] = getenv("SHELL"); 
    if(!argv[0]) 
      argv[0] = (char *)"/bin/sh"; 
 
    argv[1] = (char *) "-i"; 
    argv[2] = NULL; 
  } else { 
    argv += 2; 
  } 
 
  execvp (argv[0], argv); 
  printf("chroot: cannot run command `%s`\n", *argv); 
 
  return 0; 
} 
 

保存以上代码为 newchroot.c 文件,编译后运行测试其功能。最后要指出的是,本文中的 `chroot` 并没有使用静态编译。如果有必要(如,在 initrd 中使用 chroot),chroot 应该使用静态编译,若是使用动态编译,那么要拷贝相关的动态库文件到相应目录结构中。

清单 11. `newchroot` 的测试

$ gcc -Wall newchroot.c -o newchroot 
 
# ./newchroot . /bin/ash 
newroot = . 
# 
 
 

结束语

在 Linux 系统初始引导的过程中,通常都有使用 chroot。但是 chroot 的好处不仅于此,它还增加了系统的安全性等。而通过本文后半部分对 chroot 的认识,我相信读者可以更好的发挥chroot 的作用。

本文源代码下载:http://file.ddvip.com/2009_07/work.tar.bz2

上一页  1 2 3 4 5 

Tags:理解 chroot

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接