SafeExec

Webブラウザ経由で、特定のコマンドのみを安全かつ簡単に実行。管理者のための軽量実行ツール。

SafeExecとは?

SafeExecは、サーバー上の特定のコマンドをWebブラウザから実行するための、セキュリティとシンプルさを両立させたツールです。SSHアクセスを制限したい、あるいは特定の操作(サービスの再起動、ログの確認、バックアップの実行など)を非エンジニアでも安全に行えるようにしたいといった場面で威力を発揮します。

Python 3.xとBottleフレームワークを使用した超軽量設計により、セットアップは数分で完了します。また、CGIモードにも対応しているため、既存のApacheやNginx環境への導入も容易です。

メイン画面のスクリーンショット

主な特徴

ホワイトリスト制御

実行可能なコマンドは `config.json` で明示的に許可したものだけに制限されます。任意のコマンド実行を許さない設計です。

環境情報の可視化

OS情報、ディスク使用量、メモリ使用量、ネットワーク状態など、サーバーの稼働状況を一目で把握できる診断機能を搭載。

レスポンシブUI

Bootstrap 5を採用し、PCはもちろんスマートフォンやタブレットからも快適に操作可能なモダンなインターフェースを提供。

堅牢なロギング

実行履歴はファイルに記録。ファイル書き込みに失敗した場合でも、システム全体の動作が停止しないエラー耐性の高い設計です。

柔軟な導入形式

内蔵サーバーによるスタンドアロン実行と、Apache等のWebサーバー上でのCGI実行の両方に対応しています。

使い勝手の追求

コマンド実行結果のワンクリックコピー、実行中のプログレス表示、UTF-8以外の出力文字化け対策など、現場のニーズに応える機能を凝縮。

導入・使い方

インストール

Python 3.7以降が必要です。必要なパッケージをインストールします。

pip install bottle jinja2

設定 (config.json)

プロジェクトルートの `config.json` を編集して、パスワードや許可するコマンドを定義します。

{
  "PASSWORD": "your-secure-password",
  "ALLOWED_COMMANDS": {
    "システム更新": "sudo apt update",
    "ディスク確認": "df -h",
    "サービス再起動": "sudo systemctl restart nginx"
  },
  "CGI_MODE": false,
  "LOG_FILE": "command_runner.log"
}

起動

以下のコマンドを実行してサーバーを起動します。(CGIモードでの動作はREADMEを確認)

python index.py

ブラウザで http://localhost:8082 にアクセスし、設定したパスワードでログインしてください。

環境情報画面のスクリーンショット

ライセンスと権利

SafeExecは、GNU Affero General Public License v3.0 (AGPL-3.0) の下で公開されています。オープンソースとして自由にご利用・改善いただけますが、ネットワーク経由でサービスを提供する場合もソースコードの公開義務が発生します。

本プロジェクトの著作権は 門王 (monou.jp) に帰属します。

商用ライセンス・カスタマイズのご依頼

以下のようなご要望がございましたら、お気軽に 門王 までお問い合わせください。

  • AGPL以外の商用ライセンス(ソースコード公開不要のライセンス)で購入したい
  • 特定の業務に合わせて機能をカスタマイズしてほしい
  • 既存システムへの組み込みや導入支援をお願いしたい
  • セキュリティ監査や独自の認証機能を追加したい

開発者について

門王ロゴ
門王 (monou.jp)

「シンプルで使いやすい」をモットーに、小規模ツールからウェブアプリケーションまで幅広く開発を行っています。 SafeExecの他にも、実用的で役立つツールを公開しています。ぜひホームページをチェックしてください。

https://monou.jp