0

vim の「r」コマンドと「o」コマンドを無効にして、それを使用する人が vim 内から他のファイルを開くことができないようにしようとしています。cmap r <Nop>andを使用しようとしましたcmap o <Nop>が、これは機能しますが、望ましくない副作用があります...これらの2文字は、vimコマンドラインでも何かを検索するときにも使用できません...単語「単語」を検索しようとすると検索行に次のように表示されます/wd

vimrc でファイルを開くことを無効にする別の方法はありますか?

4

3 に答える 3

3

フラグを付けてVimを起動できます。

$ vim -R (readonly)
$ vim -Z (restricted)
$ vim -m (no writing)
$ vim -M (no text modification)

:eしかし、それらのいずれも、または:r無数の同様のコマンドをブロックすることはありません。そして…とにかく最終的なコマンドを削除するために、~/.vimrcおそらく何かで編集することができます。nano

Vimまたはそのユーザーを完全にサンドボックス化するのはどうですか?

なぜそれが欲しいのか説明するのはどうですか?

于 2012-11-05T11:09:39.373 に答える
3

本当にVimを保護したい場合(そして特定の許可されていない機能の表面的な外観を提供するだけでなく)、ソースコードからそれらの機能を削除し、Vimの限定バージョンをコンパイル(およびテスト!)する必要があります。(または、Vimプロセスをサンドボックス化し、特定のシステムコールをフィルタリングするオペレーティングシステムラッパーを使用できるかもしれませんが、そのようなことはわかりません。)

Vimscriptの障害を回避することができます。再マッピングはを介して元に戻すことが:cunmapできます。Vimscriptのより複雑な保護は、適切なタイミングで押すことで停止できます<C-c>

于 2012-11-05T11:40:02.327 に答える
0

コマンドや他のファイルの編集を許可せずに、ルート権限で特定のファイルの編集を許可したい場合 (別のコメントで示したように)、次のようにしてくださいman 8 sudoedit:

  1. 編集するファイルの一時コピーが作成され、所有者は呼び出し元のユーザーに設定されます。

  2. ポリシーで指定されたエディターが実行され、一時ファイルが編集されます。sudoers ポリシーは、SUDO_EDITOR、VISUAL、および EDITOR 環境変数を (この順序で) 使用します。SUDO_EDITOR、VISUAL、または EDITOR のいずれも設定されていない場合、エディターの sudoers(5) オプションにリストされている最初のプログラムが使用されます。

  3. それらが変更されている場合、一時ファイルは元の場所にコピーされ、一時バージョンは削除されます。

root コンテキストではなく、ユーザーのコンテキストでエディターを起動する方がはるかに安全です。(さらに、ユーザーは管理されていない root アカウントの設定ではなく、自分の Vim 設定を取得します!) 編集した一時ファイルの同期は root 権限で行う必要があります。の助けを借りてsudo、これらすべてを数行のシェル スクリプトで実装できます。

于 2012-11-05T14:52:45.787 に答える