如果用户只能读取和写入文件,是否足以阻止执行?

如果用户只能读取和写入文件,是否足以阻止执行?

用户使用在 Linux 服务器上运行的应用程序。该应用程序为用户提供了一个API,允许在服务器上读取和写入文件,但不提供任何执行文件的方法。这足以确保用户无法在服务器上执行命令吗?

底层文件系统未使用 noexec 挂载。

用户可以选择读取和写入哪个文件,并且可以创建任意名称的新文件。用户可以删除文件。

该应用程序无权访问“系统”文件,以相对标准的非特权用户帐户运行,类似于桌面用户所拥有的帐户。

答案1

任意位置的任意名称,仅受文件系统权限的限制,可能可以升级以执行任意代码。$HOME例如,其中有很多文件会在登录时自动运行。并且添加了新的内容(例如,所有 systemd 用户会话内容都是相当新的)。或者可能$HOME/bin默认放在 $PATH 的前面。

攻击者的其他好目标是~/.ssh:我不是应该具有登录访问权限,但是安装授权密钥文件后我会吗?您当然可以通过 config in 禁用此功能/etc/ssh/,但这只是一个程序。可能还有其他人。

我毫不怀疑你可以确保这一点,但这需要大量工作(而且您在操作系统升级时必须非常小心!)

但是,如果您可以将其限制为任意文件,但仅限于某些目录(例如,仅在/srv/yourapp/和子目录中),那么这是安全的(只要其编程正确)。

相关内容