Lambda Smalltalkは、信頼できないスクリプトを安全に実行するためのサンドボックスモードを提供しています。

サンドボックスモード

モード説明
permissiveすべての操作を許可(デフォルト)
read-onlyファイル読み込みのみ許可
restrictiveすべての操作を拒否

使い方

# デフォルト: すべての操作を許可
lambda-st run script.st

# 読み取り専用: ファイル読み込みのみ、書き込み/プロセス/ネットワークは拒否
lambda-st run --sandbox read-only script.st

# 制限モード: すべてのI/O操作を拒否
lambda-st run --sandbox restrictive script.st

各モードの制御対象

ファイルシステム

プロセス実行

ネットワークアクセス

プラグイン読み込み

例: 安全なスクリプト実行

# データ読み込みのみを行うユーザー提供スクリプトを実行
lambda-st run --sandbox read-only user_script.st

# 完全に隔離されたスクリプトを実行(純粋な計算のみ)
lambda-st run --sandbox restrictive compute.st

エラー処理

サンドボックスが操作を拒否すると、例外が発生します:

sandbox: file_write on 'output.txt': file write access denied by sandbox policy

スクリプト内で on:do: を使ってキャッチできます:

[
    File write: 'test.txt' contents: 'data'.
] on: Error do: [:ex |
    '書き込みがサンドボックスにより拒否されました' printNl.
].