在unix中创建临时沙箱环境
发布时间:2020-12-15 21:28:12 所属栏目:安全 来源:网络整理
导读:只是想知道有没有办法为运行命令创建临时沙盒环境? 我的要求是我在unix中托管web服务,我需要执行一个commanline工具将输出返回给webservice客户端.因为我将从客户端收到的值传递给commanline工具,所以我想在沙盒环境中执行命令. 解决方法 我不确定但是,您可
只是想知道有没有办法为运行命令创建临时沙盒环境?
我的要求是我在unix中托管web服务,我需要执行一个commanline工具将输出返回给webservice客户端.因为我将从客户端收到的值传递给commanline工具,所以我想在沙盒环境中执行命令. 解决方法
我不确定但是,您可以尝试使用“chroot”命令来创建新的“根”环境,例如,
如果您有目录结构并且想要“保护”“许可证”文件, / /etc + license /bin + ls /lib + ... 你可以创建一个chroot环境 itily@openzooey:~$mkdir chroot_example itily@openzooey:~$cd chroot_example/ itily@openzooey:~/chroot_example$mkdir -p usr/lib lib bin etc itily@openzooey:~/chroot_example$cd bin/ itily@openzooey:~/chroot_example/bin$cp /bin/ls . itily@openzooey:~/chroot_example/bin$ldd ls libsec.so.1 => /lib/libsec.so.1 libnvpair.so.1 => /lib/libnvpair.so.1 libcmdutils.so.1 => /lib/libcmdutils.so.1 libcurses.so.1 => /lib/libcurses.so.1 libc.so.1 => /lib/libc.so.1 libavl.so.1 => /lib/libavl.so.1 libidmap.so.1 => /usr/lib/libidmap.so.1 libnsl.so.1 => /lib/libnsl.so.1 libuutil.so.1 => /lib/libuutil.so.1 libmp.so.2 => /lib/libmp.so.2 libmd.so.1 => /lib/libmd.so.1 libm.so.2 => /lib/libm.so.2 现在填充ls命令所需的“共享库”(使用我们知道哪些是必需的共享库的ldd) itily@openzooey:~/chroot_example/bin$ldd ls |awk '{print "cp "$3" lib/"}' cp /lib/libsec.so.1 lib/ cp /lib/libnvpair.so.1 lib/ cp /lib/libcmdutils.so.1 lib/ cp /lib/libcurses.so.1 lib/ cp /lib/libc.so.1 lib/ cp /lib/libavl.so.1 lib/ cp /usr/lib/libidmap.so.1 lib/ cp /lib/libnsl.so.1 lib/ cp /lib/libuutil.so.1 lib/ cp /lib/libmp.so.2 lib/ cp /lib/libmd.so.1 lib/ cp /lib/libm.so.2 lib/ 现在我们需要复制到新的“lib”和usr / lib目录 itily@openzooey:~/chroot_example/bin$cd .. itily@openzooey:~/chroot_example$ldd /bin/ls |awk '{print "cp "$3" lib/"}'|bash itily@openzooey:~/chroot_example$ls -ltr total 9 drwxr-xr-x 2 itily staff 2 dic 22 14:37 etc drwxr-xr-x 2 itily staff 3 dic 22 14:37 bin drwxr-xr-x 2 itily staff 14 dic 22 14:38 lib itily@openzooey:~/chroot_example$cp /usr/lib/libidmap.so.1 usr/lib/ itily@openzooey:~/chroot_example$cp /usr/lib/ld.so.1 usr/lib/ itily@openzooey:~/chroot_example$cd lib/ itily@openzooey:~/chroot_example/lib$ls -l total 7615 -rwxr-xr-x 1 itily staff 14044 dic 22 14:38 libavl.so.1 -rwxr-xr-x 1 itily staff 1721400 dic 22 14:38 libc.so.1 -rwxr-xr-x 1 itily staff 26748 dic 22 14:38 libcmdutils.so.1 -rwxr-xr-x 1 itily staff 293876 dic 22 14:38 libcurses.so.1 -rwxr-xr-x 1 itily staff 97852 dic 22 14:38 libidmap.so.1 -rwxr-xr-x 1 itily staff 398704 dic 22 14:38 libm.so.2 -rwxr-xr-x 1 itily staff 87164 dic 22 14:38 libmd.so.1 -rwxr-xr-x 1 itily staff 25140 dic 22 14:38 libmp.so.2 -rwxr-xr-x 1 itily staff 648776 dic 22 14:38 libnsl.so.1 -rwxr-xr-x 1 itily staff 74776 dic 22 14:38 libnvpair.so.1 -rwxr-xr-x 1 itily staff 97500 dic 22 14:38 libsec.so.1 -rwxr-xr-x 1 itily staff 49556 dic 22 14:38 libuutil.so.1 itily@openzooey:~/chroot_example/lib$cd .. 所以,最终的结构是 itily@openzooey:~/chroot_example$ls -l total 12 drwxr-xr-x 2 itily staff 3 dic 22 14:37 bin drwxr-xr-x 2 itily staff 5 ene 10 20:43 etc drwxr-xr-x 2 itily staff 14 ene 10 20:48 lib drwxr-xr-x 3 itily staff 3 ene 10 20:40 usr 您还需要group,passwd和其他文件 itily@openzooey:~/chroot_example$echo "this is a test" > etc/license itily@openzooey:~/chroot_example$cd etc/ itily@openzooey:~/chroot_example/etc$cat /etc/group |grep staff > group itily@openzooey:~/chroot_example/etc$cat /etc/passwd |grep itily > passwd 现在您可以运行chroot命令,但如果您尝试以非root身份运行,则会收到错误 itily@openzooey:~$chroot chroot_example bin/ls /etc chroot: cannot change root directory to chroot_example: Not owner 所以,你需要以root身份运行 itily@openzooey:~$pfexec chroot chroot_example /bin/ls -l /etc total 6 -rw-r--r-- 1 101 10 11 Jan 10 19:43 group -rw-r--r-- 1 101 10 18 Jan 10 19:42 license -rw-r--r-- 1 101 10 49 Jan 10 19:43 passwd 我希望这就是你要找的…… Urko, (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |