Windowsの実行権限
windowsのPowerShellでwgetを実行する際にExecutionPolicyの制限に触れた。デジタル署名がある場合も実行が不可能であった。ExecutionPolicyを確認する手法と、変更する方法、変更先について述べる。
ExecutionPolicyを確認する方法
PowerShellの実行権限を確認するコマンド
$Get-ExecutionPolicy
デフォルトの場合
Restricted
と表示される。このままの場合、基本的にシェルスクリプトの実行は不可能である。
公式()文書を確認すると次のように記述されている。
- 個々のコマンドは許可されますが、スクリプトは許可されません
- 書式設定と構成ファイル (.ps1xml)、モジュール スクリプト ファイル (.psm1)、PowerShell プロファイル (.ps1) など、すべてのスクリプト ファイルの実行を防止します
どの設定に変えるべきか
RemoteSigned
に変更する事で、次の場合にシェルスクリプトの実行が許可される。
- Windows コンピューターの既定の実行ポリシー
- スクリプトは実行できます
- メールやインスタント メッセージ プログラムを含むインターネットからダウンロードされるスクリプトや構成ファイルには、信頼できる発行者からのデジタル署名が必要です
- インターネットからダウンロードされたものではなく、ローカル コンピューターに書かれたスクリプトにはデジタル署名は必要ありません
- Unblock-File コマンドレットを使用するなどしてスクリプトのブロックが解除された場合、インターネットからダウンロードされた符号なしのスクリプトを実行します
- インターネット以外からの符号なしのスクリプトや、悪意のある可能性がある符号のあるスクリプトを実行するリスク
設定の変更方法
まず管理者としてPowerShellを実行し、次のコマンドを使用する。
Set-ExecutionPolicy
[-ExecutionPolicy] ExecutionPolicy
[[-Scope] ExecutionPolicyScope]
[-Force]
[-WhatIf]
[-Confirm]
[CommonParameters]
複数のコマンドがあるが、実行権限をRemoteSigned
に変更する方法は
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
で良い。
コメント
PowerShellでは、デフォルトでの実行権限を与えていないため堅牢に感じた。一方で、初見でスクリプトを実行出来ない点に難易度の高さを感じた。