EmacsはGNU/Linuxなどのオペレーティングシステム上で動作し、ファイルへのアクセスといったセキュリティ制約の確認をオペレーティングシステムに依存しています。Emacsのデフォルト設定は一般的な利用を想定して設計されており、セキュリティへの懸念が通常よりも強い、あるいは弱い環境では、多少の調整が必要になる場合があります。例えば、ファイルローカル変数はリスクを伴う可能性があり、変数
enable-local-variables を :safe や(さらに保守的に)nil
に設定することができます。逆に、すべてのファイルが信頼できる場合で、これらの変数に対するデフォルトのチェックが煩わしい場合は、enable-local-variables を :all
に設定することも可能です。ファイル変数の安全性を参照してください。
load-file または load-library を用いて Emacs Lisp コードのファイルを読み込むと(Emacs 用 Lisp コードライブラリ
を参照)、読み込んでいるファイル内の Lisp コードの一部が実行される可能性があるため、ソースコードを信頼できる Lisp
ファイルのみを読み込むようにしてください。ただし、Emacs の一部の機能では、特定の状況下において、明示的なコマンドやリクエストがなくても Lisp
コードが実行されることがあります。例えば、Emacs のオンザフライ構文チェッカーである Flymake(GNU
Flymake を参照)は、有効になっている場合、構文チェックの一環としてアクセスした Lisp
ファイル内のコードの一部を自動的に実行することがあります。同様に、Lisp ファイルを参照しているバッファ内の一部の補完コマンド(補完 を参照)では、最適な結果を得るために Lisp
マクロを展開する必要がある場合があります。このような場合、単に Lisp ファイルを参照してその中で編集を行うだけで、Lisp
コードの実行がトリガーされる可能性があります。参照したファイルが信頼できないソースからのものである場合、そうした状況で Emacs
が実行してしまうような、危険な、あるいは悪意のあるコードが含まれている可能性があります。
これを防ぐため、Emacsでは、閲覧中のファイルが信頼済みでない限り、Flymakeや補完、およびその他の一部の機能によるLispコードの実行を無効にします。システム上のどのファイルを信頼すべきかは、ユーザーオプション
trusted-content をカスタマイズして指定してください。
このオプションの値はデフォルトで nil
となっており、これはどのファイルも信頼されないことを意味します。この変数をカスタマイズして、信頼するファイルやディレクトリの名前を1つ以上並べたリストとして指定できます。末尾がスラッシュのファイル名
/ はディレクトリとして解釈され、その中のすべてのファイルとサブディレクトリも信頼されます。特殊な値
:all は、システム上のすべてのファイルとディレクトリを信頼することを意味します。これは重大なセキュリティホールとなるため、推奨されません。
大規模なアプリケーションの一部としてEmacsを使用する際のセキュリティ上の考慮事項について詳しくは、The Emacs Lisp Reference ManualのSecurity Considerationsを参照してください。