我可以创建一个 bash 脚本,然后使用带有 private 选项的 firejail 启动它:
phil@GLaDOS:~$ echo "echo success" > /media/phil/Stockage/firejailtest.sh; chmod +x /media/phil/Stockage/firejailtest.sh
phil@GLaDOS:~$ firejail --noprofile --private /media/phil/Stockage/firejailtest.sh
Parent pid 117110, child pid 117111
Child process initialized in 8.67 ms
success
Parent is shutting down, bye...
效果很好。
但是,如果我的脚本位于我的主目录或主目录中的任何文件夹中,则上述操作将失败:
phil@GLaDOS:~$ echo "echo success" > /home/phil/firejailtest.sh; chmod +x /home/phil/firejailtest.sh
phil@GLaDOS:~$ firejail --noprofile --private /home/phil/firejailtest.sh
Parent pid 117357, child pid 117358
Child process initialized in 8.73 ms
/bin/bash: ligne 1: /home/phil/firejailtest.sh: No such file or directory
Parent is shutting down, bye...
如何使用 firejail 在我的主目录中启动脚本或程序,并使用“private”来确保不会对我的任何文件进行修改?
答案1
在临时文件系统中挂载新
/root
目录。/home/user
当沙箱关闭时,所有修改都将被丢弃。例子:
$ firejail --private firefox
在临时文件系统中建立一个新的用户主目录,并将列表中的文件和目录复制到新主目录中。列表中的文件和目录必须表示为相对于当前用户的主目录。沙箱关闭时,所有修改都将被丢弃。
例子:
$ firejail --private-home=.mozilla firefox
所有意图和目的的选项都在做同样的事情。所以你可以改用:
firejail --noprofile --private-home=firejailtest.sh /home/phil/firejailtest.sh
您可以验证唯一的区别是这个附加文件:
firejail --noprofile --private find /home/phil
相对:
firejail --noprofile --private-home=firejailtest.sh find /home/phil
吹毛求疵:两个选项都在做几乎相同但不完全相同(因此:上面的“出于所有意图和目的”),可以看出:
firejail --noprofile --private cat /proc/self/mountinfo
相对:
firejail --noprofile --private-home=firejailtest.sh cat /proc/self/mountinfo