Lua C 脚本的权限

permissions for Lua Scripts in C

是否可以给 lua 脚本较低的权限,使其无法执行 OS 功能?

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

我使用 lua 5.3.5 库。也许它包含允许或禁止某些 lua 功能的选项?

是的,这是可能的,通常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 章中找到更多详细信息

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

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

如果您只想删除几个函数,请在加载库后执行此操作:

luaL_dostring(L,"os.execute=nil");