其中,CLONE_NEWNS、CLONE_NEWPID、CLONE_NEWIPC、CLONE_NEWNET等是clone系统调用或unshare命令或unshare系统调用的相关参数。
2012/10/3 WindyWinter <wi...@ream.at>:
> -- 来自USTC LUG
> 请使用gmail订阅,不要灌水。
> 更多信息more info:http://groups.google.com/group/ustc_lug?hl=en?hl=en
此外,要在sandbox中运行的程序一定不能有root权限,否则它可以再chroot一次以跳出来。实在不行,插入一个内核模块就没有什么东西能防得住了。
http://www.bpfh.net/simes/computing/chroot-break.html
我不知道linux中是否有现成的sandbox解决方案。我觉得setuid、chroot、ptrace可以结合起来用。当然如果针对一个特定的程序,先试试setuid+chroot能不能行。
事实上相对安全的保证程序只有一个实例的方法是利用网络,每次启动时向指定的服务器发送包括MAC地址、系统时间在内的系统信息,从服务器获取token,再在软件里检查token是否正确。这样要运行多个实例,只有两种办法:(1)虚拟机(2)用反向工程修改程序的二进制文件。(确实,MAC地址可以伪造,但很难确切获知程序使用了哪些系统信息作验证)
2012/10/3 wzyboy <wzyb...@gmail.com>:
2012/10/3 wzyboy <wzyb...@gmail.com>:
通过文件系统判断,会不会有这样的问题:程序启动时touch /tmp/xxx.lock,中途Segmentation
error或者进程被kill了,于是这个程序不能再启动了。
当然,可以在创建lock文件之后马上unlink,这样文件恰好能保持到进程退出的时刻。
我早先以为Windows开发者没有办法用这种文件系统特性,刚查了一下,CreateFile竟然有一个参数可以指定FILE_FLAG_DELETE_ON_CLOSE,即所有打开文件句柄关闭后删除文件;另有一个参数可以指定FILE_SHARE_DELETE,即允许这个已经打开的文件在句柄释放之前被删除或重命名。此外,刚发现WIndows的文件名竟然有保留字,在linux里建立一个以COM1命名的文件或目录,到Windows里既打不开又删不掉。
我在Windows 7里的实验结果:
(1)Windows资源管理器、命令行下的del和erase均提示文件名有误(文件不存在),无法打开、创建、删除COM1文件。
(2)Windows资源管理器和命令行下均可在D:\COM2\目录下创建/删除文件/目录,然而无法删除或重命名D:\COM2目录。
(3)Cygwin可以无障碍操作以保留字命名的文件和目录。
(4)写了个测试C++程序(用fopen标准库函数),用Dev-C++编译(g++.exe编译器),与Windows资源管理器的情况相同。
(5)同样的C++程序,用Cygwin里的gcc编译,可以无障碍操作。运行时会输出提示,建议使用POSIX风格路径代替Windows风格路径。
结论:
(1)保留字不是文件系统层面的,而是Windows API的限制。
(2)Cygwin是神器。
而且在Win98里开始->运行c:\con\con会直接蓝屏。。。(差了一个字母这种事情我会告诉你吗)
Best Regards,
Yan
起daemon的时候不就是利用锁文件来控制的嘛?
2012/10/4 wzyboy <wzyb...@gmail.com>:
> 倒是像 aux 这样的文件名,貌似是文件系统层面的,用 Linux 也无法在一块 NTFS 分区上建立。(如果我没记错的话。以前试过,现在没有 ntfs
> 分区,不好测试)
--
May the source be with you.
2012/10/4 wzyboy <wzyb...@gmail.com>:
> 是吗?刚才开虚拟机试了下, aux, con 这样的文件名、目录名都无法建立……
--
May the source be with you.
孙锡麟,SUN Xilin, undergraduate student at HKPolyU
On 4 October 2012 22:26, wzyboy <wzyb...@gmail.com> wrote:
> 在 explorer.exe 里是直接无法更名。在 cmd.exe 中是这样:
--
2012/10/5 Zhang Cheng <steph...@gmail.com>:
2012/10/5 Guo, Jiahua <gjh...@gmail.com>:
刚查到cgroups,从Wikipedia看来很强大。LXC这个操作系统级虚拟化就是基于cgroups的。我觉得楼主可能需要的是一个操作系统级虚拟化工具吧,可以参看Wikipedia的“Operating
System-Level Virtualization”。
我没编过共享内存的程序,如何处理key已被占用的情况?key已被占用有两种可能,一是被其他无关进程占用(巧合),二是被另一个程序实例占用。难道要在共享内存区保存一个magic
number,然后shmat上去看看?有没有比较和谐的办法来实现这种单例模式?(不考虑tux所说的克隆IPC空间)
On 10/4/12, Zhang Cheng <steph...@gmail.com> wrote:
不用考虑误伤的情况。一般共享内存也用hard code作key。如果有跟其他程序误伤,那就双方协商一下改端口/key好了,不需要完全精确的控制的。
(sent from mobile device)
冲突的概率非常小,除非你故意想要根别人冲突,否则你在key里面随便加个东西,例如加个自己的邮箱,或者随便生成个uuid就行了。
(sent from mobile device)
2012/10/5 Zhang Cheng <steph...@gmail.com>:
挖个坟。翻 paper 看到一个 Linux 下的绿色软件制作器 CDE
http://www.pgbovine.net/cde.html
看起来挺靠谱的。当然,绿色软件的效果也可以用 LXC 虚拟机来实现,不过对依赖关系不复杂、没有“自我保护”功能的软件,CDE 比 LXC 轻量多了。
像Sandboxie一样的东西。有个软件不能多进程,windows的话可以用sandboxie解决,linux下用什么办法?
--
-- 来自USTC LUG
请使用gmail订阅,不要灌水。
更多信息more info:http://groups.google.com/group/ustc_lug?hl=en?hl=en
---
You received this message because you are subscribed to the Google Groups "USTC_LUG" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ustc_lug+u...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
---
You received this message because you are subscribed to the Google Groups "USTC_LUG" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ustc_lug+u...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.