我可以在某些目录上运行具有特定权限的命令吗?

我可以在某些目录上运行具有特定权限的命令吗?

我希望能够运行一个命令,将参数传递给 bash 或类似的命令,这样该命令就不允许写入特定路径,从而覆盖用户的其他权限。

例如:

root> /bin/bash -protect /folder/to/protect mycommand.sh

在此示例中,根用户显然可以执行其想做的操作,但是当我测试正在编写的新脚本时,我想保护一个文件夹,就好像该文件夹仅供该用户读取一样。

有没有办法做到这一点,而无需添加新用户并相应地调整该用户的权限?顺便说一句,它不必在 bash 中,我不介意这种方法 - 只要我可以保护文件夹而不添加新用户,我不介意!

答案1

Unix 的安全性建立在用户和组的权限之上。如果要将某个目录设为命令的只读目录,则需要以不允许写入该目录的用户身份运行该目录。或者有一种更严厉的方法,即在虚拟机中运行命令。

你可能会发现绑定文件系统有用。 Bindfs 是一个堆栈文件系统,也就是说,它创建目录树的一部分的替代视图。特别是,您可以创建只读视图或具有不同权限的视图。 Bindfs 不能使/folder/to/protect只读,但它可以创建该目录的只读视图/read/only/view;您需要找到一些其他方法(例如权限)来防止命令写入`/folder/to/protect。

bindfs --perms=a-w /folder/to/protect /read/only/view

答案2

您可以编写一个共享库,在其周围实现一个包装器,open以执行您想要的额外安全检查。您编写的程序随后可以LD_PRELOAD在调用程序时使用它来加载您的共享库并覆盖系统的open

您可能需要重写其他系统调用,以确保程序没有其他方法来实现其想要执行的操作。

相关内容