Linux极简沙箱的实现

Linux极简沙箱的实现,第1张

目的很简单,就是运行一些有风险的应用程序的时候,针对该程序把个人文件目录给屏蔽掉,防止个人文件被读取和篡改。

用到了 unshare 这个命令,脚本如下:

unshare 命令用到了Linux的Namespace特性,是 Linux 内核用来隔离内核资源的方式,也是Docker的原理之一。可以通过 man 1 unshare 查看参数的含义。

通过 -m 参数,隔离与其他进程之间的mount *** 作,防止mount影响到其他进程。

这里把有个人文件的/data目录mount到tmpfs,实现屏蔽的效果,再通过 mount --bind 来屏蔽/home目录,对/home的 *** 作转移到沙箱的文件夹。

因为通过 -p 和 --mount-proc 隔离了PID,所以使用 docker-init 作为1号进程,处理其他进程产生的 SIGCHLD 信号,防止僵尸进程的产生等作用。

方法有很多,这里主要列举两种。假如要使pso在linux服务器后台执行。当客户端关机后重新登入服务器后继续查看本来在终端输出的运行结果。

# ./pso >pso.file & #直接在命令后加上&即可

解释:将pso直接放在后台运行,并把终端输出存放在当前目录下的pso.file文件中。当客户端关机后重新登陆服务器后,直接查看pso.file文件就可看执行结果(命令:#cat pso.file )。

有些程序即使使用 &结尾,如果终端关闭,那么程序也会被关闭。为了能够使程序能始终在后台运行,需要使用nohup这个命令。

方法2在终端输入命令:

# nohup ./pso >pso.file &

解释:nohup就是不挂起的意思,将pso直接放在后台运行,并把终端输出存放在当前目录下的pso.file文件中。当客户端关机后重新登陆服务器后,直接查看pso.file文件就可看执行结果(命令:#cat pso.file )。

三、常用任务管理命令

# jobs //查看任务,返回任务编号n和进程号

# bg %n //将编号为n的任务转后台运行

# fg %n //将编号为n的任务转前台运行

# ctrl+z//挂起当前任务

# ctrl+c//结束当前任务

# tail -f logs.txt //可以实时查看日志文件

注:如果要使在前台执行任务放到后台运行,则先要用ctrl+z挂起该任务,然后用bg使之后台执行。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7637462.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-08
下一篇2023-04-08

发表评论

登录后才能评论

评论列表(0条)

    保存