【问题标题】:permissions for Lua Scripts in CC 语言中 Lua 脚本的权限
【发布时间】:2021-07-28 09:35:51
【问题描述】:

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

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

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

【问题讨论】:

    标签: linux lua permissions


    【解决方案1】:

    是有可能的,一般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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2011-07-16
        • 1970-01-01
        • 2010-09-19
        • 2010-12-03
        • 2010-12-22
        • 1970-01-01
        • 2011-03-10
        • 1970-01-01
        • 2010-11-26
        相关资源
        最近更新 更多