2018/03/31

symbolic link privilege not held が出る場合の対処方法 (Windows 10)

Python でシンボリックリンクを作成するには os.symlink() を使用します。 ただ、Windows でこれを普通に実行すると OSError: symbolic link privilege not held が発生してしまいます。

原因は権限不足

シンボリックリンクの作成には SeCreateSymbolicLinkPrivilege が必要です。 しかし、デフォルトでこの権限が与えられているのは管理者のみ1なので、一般ユーザで実行すると上記のエラーが発生してしまいます。

参考

Windowsのシンボリックリンクとジャンクションとハードリンクの違い:Tech TIPS - @IT

対策 (Windows 10 Pro)

SeCreateSymbolicLinkPrivilege を対象のユーザーに与えます。

以下は Windows 10 Pro で動作確認しました。

  1. スタートメニューから gpedit (グループポリシーの編集)を起動

  2. コンピューターの構成 → Windowsの設定 → セキュリティの設定 → ローカルポリシー → ユーザー権限の割り当て → シンボリックリンクの作成

  3. ユーザーを追加する

  4. サインアウト
    一度サインアウトしないと反映されません

他の環境での対策

Windows 10 Home には gpedit がインストールされていないようなので、事前にインストールする必要があります。また、Windows 7 では secpol.msc を使用するようです2

参考

  1. 管理者グループにも与えられていない 
  2. どちらも、動作未確認 
?

0 件のコメント: