java.io.File.createTempFile からの権限拒否エラー

java.io.File.createTempFile から権限拒否エラーが発生した場合は、JVM パラメーター -Djava.io.tmpdir が java プロセスで設定されているかどうかを確認します。 java.io.tmpdir パラメーターが見つからなかった場合は、OS のデフォルトの temp ディレクトリへのアクセス権をユーザーに付与します。

説明 description

環境

Adobe Experience Manager(AEM)(すべてのバージョン)

問題/症状

java.io.IOException: Permission denied を報告する error.log でエラーが発生し、その中にスタックトレースが java.io.File.createTempFile まれています。

01.06.2017 16:34:02.631 *ERROR* [ qtp1085110594-4453]  org.apache.felix.http.jetty Exception while processing request to /system/console/configMgr/com.adobe.cq.experiencelog.impl.ExperienceLogConfigServlet (java.io.IOException: Permission denied)

java.io.IOException: Permission denied

        at java.io.UnixFileSystem.createFileExclusively(Native Method)

        at java.io.File.createTempFile(File.java:2024)

        at org.apache.felix.cm.file.FilePersistenceManager._store(FilePersistenceManager.java:699)

        at org.apache.felix.cm.file.FilePersistenceManager.store(FilePersistenceManager.java:660)

        at org.apache.felix.cm.impl.CachingPersistenceManagerProxy.store(CachingPersistenceManagerProxy.java:242)

        at org.apache.felix.cm.impl.ConfigurationImpl.storeNewConfiguration(ConfigurationImpl.java:462)

        at org.apache.felix.cm.impl.ConfigurationImpl.<init>(ConfigurationImpl.java:183)

解決策 resolution

JVM パラメーター -Djava.io.tmpdir が java プロセスに設定されているかどうかを確認します。

Linux の場合 :

  1. 次のコマンドを実行します。

    code language-none
    ps -ef | grep java
    
  2. -Djava.io.tmpdir を検索している JVM パラメーターを確認します。

Windows、Linux または Unix の場合

  1. https://aem-host:aem-port/system/console/jmx/java.lang%3Atype%3DRuntime に移動します

  2. ページで java.io.tmpdir を検索します。

  3. java.io.tmpdir の値をクリップボードにコピーします。

  4. オペレーティングシステム上のそのパスに移動し、java プロセスを所有するユーザーに、そのフォルダーに対する完全な読み取り/書き込みアクセス権を付与します。

  5. java.io.tmpdir パラメーターが見つからなかった場合は、OS のデフォルトの temp ディレクトリへのアクセス権をユーザーに付与します。

    • Linux および Unix では、このディレクトリはデフォルトで /tmp です。
    • Windows では、このディレクトリは、ユーザーのホームディレクトリの下にあります(例:C:\Users\aemuser\AppData\Local\Temp)。

原因

AEM java プロセスを所有するユーザーが、java プロセスの temp ディレクトリに書き込むための適切な権限を持っていません。

recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f