【发布时间】:2021-07-28 09:35:51
【问题描述】:
是否可以给 lua 脚本较低的权限,使其无法执行 OS 功能?
例如:
os.execute("mkdir ..")
我使用 lua 5.3.5 库。也许它包含允许或禁止某些 lua 函数的选项?
【问题讨论】:
标签: linux lua permissions
是否可以给 lua 脚本较低的权限,使其无法执行 OS 功能?
例如:
os.execute("mkdir ..")
我使用 lua 5.3.5 库。也许它包含允许或禁止某些 lua 函数的选项?
【问题讨论】:
标签: linux lua permissions
是有可能的,一般Lua初始化加载所有标准库:
lua_State *LuaState = luaL_newstate();
luaL_openlibs(LuaState);
但您可以调整以包含 lualib.h 中的功能所需的内容:
luaopen_package
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 章中找到更多详细信息
【讨论】:
如果您使用luaL_openlibs 加载Lua 的标准库,只需将linit.c 复制到您的项目并编辑它以选择您要导出的库。
如果您只想删除几个函数,请在加载库后执行此操作:
luaL_dostring(L,"os.execute=nil");
【讨论】: