加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

在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,

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读