我想在我的服务器上执行一个应用程序,但不希望该应用程序修改任何文件。我希望该应用程序读取文件并输出到 stdout/stderr。但是,我不知道该应用程序可能尝试执行什么操作,因为它是由其他人提供给我的。
在 Linux 中实现此目的的最简单方法是什么?我正在运行 Red Hat 5。
我能想到的一种方法是创建一个仅具有读取级别访问权限的新用户。有没有其他方法可以在不创建用户的情况下做到这一点?
答案1
您可以使用chroot 命令将进程限制在沙盒目录中。
如果无法复制必要的文件:使用“bind mount”创建从 chroot 目录内部到外部文件系统的链接。在 chroot 之外运行 mount 命令。
mount /external/path /chroot/sandbox/ref_to_external -o bind
正如您所建议的:您可以以另一个用户的身份运行您的应用程序:
/bin/su - limitedUser -c "/path/to/xxxx"
解释:
/bin/su : switch user
- : option to su, make it a login session (source profile for the user)
limitedUser : user to become
-c "/path/to..." : command to run
确保其limitedUser
属于仅具有读取+执行权限但没有写入权限的组。