コンテンツにスキップ

lua 標準ライブラリと lua-lib サポート一覧


  • バージョン:1.0.7-7-g251eead
  • リリース日:2023-04-06 11:17:57
  • 対応OS:windows/amd64, windows/386, linux/arm, linux/arm64, linux/386, linux/amd64

説明

scheck は、golang で使用可能な、機能が充実し統合が容易な lua サンドボックス環境を提供し、ユーザーの様々な要件や環境に適応することを目的としています。 そこで、優れたオープンソースの lua VM である gopher-lua を採用しています。この VM が使用する lua サンドボックス環境は lua 5.1 です。

セキュリティ上の理由から、lua 標準ライブラリの IO と OS の一部機能を無効にし、lua-lib と go-openlib で対応する補完と拡張を行っています。

このドキュメントでは、lua スクリプト開発における各種ライブラリの使用方法と注意点について説明します。

lua スクリプト開発では、以下の 3 つの場所からライブラリを参照できます。

  • 標準ライブラリ:ほとんどのライブラリと関数をサポートします。
  • lua-lib:lua でよく使われる関数ライブラリをカプセル化しており、開発者が呼び出すことができます。
  • go-openlib:golang で開発され、filesystemnetutils などを提供します。詳細は func 一覧 を参照してください。

標準ライブラリ

無効化されている関数一覧:

  • すべての IO モジュール機能は呼び出し禁止です。
  • OS ライブラリで無効化されている関数:exitexecuteremoverenamesetenvsetlocale
  • OS ライブラリで使用可能な関数:clockdifftimedategetenvtimetmpname

scheck での lua-lib の使用

ファイルの場所:インストールディレクトリ配下の rules.d/libs にあります。各関数の具体的なメソッドについては、対応するファイルを参照してください。

メソッド一覧:

  • common
    • watcher(path, enum, func)
  • directorymonitoy
    • change(dir)
    • add(dir)
    • del(dir)
    • priv_change(dir)
  • filemonitor
    • check(file)
    • exist(file)
    • priv_change(file)
    • priv_fixedchange(file, mode)
    • priv_limit(file, mode_bits)
    • priv_root_ownership(file)
    • priv_ownership(file, user)
  • kernelmonito
    • module_isinstall(module_name, isInstalled)
  • mountflagmonitor
    • check(mountpath, mountflag, value)
  • rpmmonitor
    • check(pck_name, switch)
  • sysctlmonitor
    • check(param, switch)
    • check_many(params, switch)

例:

lua-lib のメソッドを使用する場合

local filemonitor = require("filemonitor")
local function check(file)
    if filemonitor.exist(file) then
        filemonitor.check(file) -- ファイルを監視し、変更があればメッセージを報告
    end
end
check('/etc/shadow')

フィードバック

このページは役に立ちましたか?