Tomcatフォルダーへの書き込みおよび読み取り許可を取得する方法が見つかりません。
Tomcatのセットアップに関するDigitalOceanのチュートリアル に従いました。私が行った唯一の違いは、7ではなくJava 8を使用したことですが、これが問題を引き起こしているとは思いません。
Tomcat Webアプリケーションマネージャーにログインしてwarをアップロードすると、次のエラーが表示されます。
FAIL-アップロードのデプロイに失敗、例外:Java.io.FileNotFoundException:/opt/Tomcat/webapps/SimpleServlet.war(許可が拒否されました)
Filezillaを使用してEC2に接続し、ファイルをwebappsフォルダーにドロップしたい場合:
エラー:/opt/Tomcat/webapps/SimpleServlet.war:書き込み用に開く:許可が拒否されました
エラー:ファイル転送に失敗しました
ls -la /opt/Tomcat/webapps
の出力は次のとおりです。
total 28
drwxr-xr-x 7 root root 4096 Nov 20 09:19 .
drwxr-xr-x 9 root root 4096 Nov 28 16:34 ..
drwxr-xr-x 14 root root 4096 Nov 28 16:34 docs
drwxr-xr-x 6 root root 4096 Nov 28 16:34 examples
drwxr-xr-x 5 root root 4096 Nov 28 16:34 Host-manager
drwxr-xr-x 5 root root 4096 Nov 28 16:34 manager
drwxr-xr-x 3 root root 4096 Nov 28 16:34 ROOT
しかし、これはFileZillaで見ることができるフォルダ構造です
チュートリアルでは、この手順に従いました。
次に、新しいTomcatユーザーを作成します。このユーザーをTomcatグループのメンバーにし、ホームディレクトリを/ opt/Tomcat(Tomcatをインストールする場所)、およびシェルを/ bin/false(だれもアカウントにログインできない)にします。
Sudo useradd -s /bin/false -g Tomcat -d /opt/Tomcat tomcat
これが問題になりますか?
/opt/Tomcat
はTomcat
ユーザーのホームディレクトリとして宣言されていますが、root
ユーザーに属しています(Tomcat
ユーザーには書き込み権限がありません)。
チュートリアル、特にアクセス許可のセクションを精査して、チュートリアルの品質に対して複雑な気持ちを抱いています。フォルダのアクセス権を変更しながら、「Tomcatユーザーにconfディレクトリへの書き込みアクセスを許可する」ことを説明します。ソフトウェアへのWebアプリケーションサーバーのユーザーに対する書き込み権限がないことは、実稼働での使用には妥当と思われます(Tomcatプロセスを悪用する攻撃者はソフトウェアを変更できません)。これにより、Tomcat Webアプリケーションマネージャーを使用してアプリケーションをデプロイできなくなります。
Tomcat
をwebapps
グループとして設定します:
chgrp -R Tomcat /opt/Tomcat/webapps
新しいアプリケーションをデプロイする必要がある場合は、そのグループの書き込み許可を追加します。
chmod -R g+w /opt/Tomcat/webapps
展開後に再び削除します:
chmod -R g-w /opt/Tomcat/webapps
(スーパーユーザー権限でこれらのコマンドを実行する必要があるため、必要に応じてSudo
のプレフィックスを付けます)。これは Tomcatセキュリティに関する考慮事項HowTo にも適合します。