在基于Linux的系统上,有没有一种方法可以在C语言中为进程提供唯一的权限?我基本上想限制进程(由主机启动,比如事件处理程序)编辑其工作目录之外的任何文件,以及创建套接字等。
唯一的方法是让主机进程为它生成的每个进程创建一个新用户,然后销毁该用户吗?
您可以使用旧的setuid技术将您的进程切换到无人
uid和nogroup
gid。这些id旨在使进程无法写入任何文件(除非在全可写目录中)。
对此的标准答案是chroot
,它将进程的根目录(及其子目录)设置为给定目录。
但是,如果您想要一个更好的答案,使您能够隔离流程的所有方面,而不仅仅是其文件系统,请查看unshare
系统调用(作为一个函数包装在现代glibc
中)。这就是容器的构建方式。
或许您会这样想,Linux 命令的句型确实不难,但是那么多命令,我怎么知道它们都是作什么的呢?而且不同的系统中,可以使用的命令似乎也不太一样,这真让人困惑…… 其实 Linux 的命令,运行的是 Linux 系统中的程序。只要您已安装了程序,您就可以通过命令来运行它,并且可以使用选项来精细的调整它的运行状态。也可以通过点击启动图标来运行,不过启动图标不能够方便的调整选项,并不是很方便。 举一个例子
本文向大家介绍计算Linux上进程中的线程数,包括了计算Linux上进程中的线程数的使用技巧和注意事项,需要的朋友参考一下 Linux进程可以可视化为程序的运行实例,其中Linux中的每个线程不过是进程的执行流。您知道如何在Linux环境中查看每个进程的线程数吗?有几种计数线程数的方法。本文讨论如何读取有关Linux上进程的信息以及如何计算每个进程的线程数。 阅读过程信息 要读取过程信息,请使用“
本文向大家介绍linux下的守护进程,包括了linux下的守护进程的使用技巧和注意事项,需要的朋友参考一下 Linux下的常驻进程的作用不可忽略,但这里面的问题也不能忽略,怎么启动进程,怎么结束进程,怎么在进程挂掉之后重启进程都要设计的合理。下面看一个shell控制的php常驻进程的例子。 不废话,直接捞干货,上代码,通过代码来讲解更容易理解: 只里面有几个要强调的地方: 我用这个shell去调用
问题内容: 我在使用Java 1.6(1.6.0_02或1.6.0_04)运行Red Hat Linux(内核版本为2.4.21-37.ELsmp)的测试计算机上遇到问题。问题是,一旦在单个线程组中创建了一定数量的线程,操作系统将不愿意或无法创建更多线程。 这似乎是特定于Java创建线程的,因为C线程限制程序能够创建约1.5k线程。此外,Java 1.4 JVM不会发生这种情况……它可以创建超过1
问题内容: 我从Linux 64位汇编程序访问进程命令行时遇到问题。为了用最少的代码重现该代码,我制作了一个32位程序,该程序打印程序名的前5个字符: 该程序正在运行。当我将其转换为64位并在Linux 64上运行时,它不会显示任何内容: 我的错误在哪里? 问题答案: 您正在将正确的地址加载到中。 然后调用32位syscall接口。这会将地址截断为32位,这使它不正确。(如果您使用调试器并在第一个
问题内容: 我正在尝试浏览Linux中某个进程的页表。在内核模块中,我实现了以下功能: 此函数是从调用的,它是进程地址空间中的虚拟地址: 奇怪的是,在用户空间进程中调用时,此段错误…但是似乎我在寻找页表条目的方式是正确的,因为我可以通过每次调用获取例如: 那么,为什么该过程无法正确完成“ ioctl”调用?也许我必须在浏览页面表之前锁定一些东西? 我正在使用内核2.6.35-22和三级页表。 谢谢