Lua 脚本在 C 中的权限

有没有可能给 Lua 脚本降低权限,使其无法执行操作系统函数?

例如: os.execute("mkdir ..")

我使用 Lua 5.3.5 库。也许它包含一些选项来允许或禁止某些 Lua 函数?

点赞
用户10953006
用户10953006

是的,这是可能的,通常 Lua 初始化会加载所有标准库:

lua_State *LuaState = luaL_newstate();luaL_openlibs(LuaState);

但是,您可以通过 lualib.h 中的函数调整以仅包含您需要的内容:

luaopen_coroutine
luaopen_string
luaopen_utf8
luaopen_table
luaopen_math
luaopen_io
luaopen_os
luaopen_debug

在这种情况下,您可以进行以下初始化:

lua_State *LuaState = luaL_newstate(); luaopen_io(LuaState); luaopen_table(LuaState); luaopen_string(LuaState);

您可以在文档的第 6 章中找到更多详细信息。

http://www.lua.org/manual/5.3/manual.html#6

2021-07-28 09:53:31
用户107090
用户107090

如果你使用 luaL_openlibs 来加载 Lua 的标准库,只需将 linit.c 复制到你的项目中并编辑它以选择要导出的库。

如果你想要移除一些函数,只需在加载库之后执行以下操作:

luaL_dostring(L,"os.execute=nil");
2021-07-28 11:29:16