web-dev-qa-db-ja.com

Amazon EC2にTomcat 8 Webアプリをデプロイ中に許可が拒否されました

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で見ることができるフォルダ構造です

Image filezilla ec2 structure

チュートリアルでは、この手順に従いました。

次に、新しいTomcatユーザーを作成します。このユーザーをTomcatグループのメンバーにし、ホームディレクトリを/ opt/Tomcat(Tomcatをインストールする場所)、およびシェルを/ bin/false(だれもアカウントにログインできない)にします。

Sudo useradd -s /bin/false -g Tomcat -d /opt/Tomcat tomcat

これが問題になりますか?

5
Greg

/opt/TomcatTomcatユーザーのホームディレクトリとして宣言されていますが、rootユーザーに属しています(Tomcatユーザーには書き込み権限がありません)。

チュートリアル、特にアクセス許可のセクションを精査して、チュートリアルの品質に対して複雑な気持ちを抱いています。フォルダのアクセス権を変更しながら、「Tomcatユーザーにconfディレクトリへの書き込みアクセスを許可する」ことを説明します。ソフトウェアへのWebアプリケーションサーバーのユーザーに対する書き込み権限がないことは、実稼働での使用には妥当と思われます(Tomcatプロセスを悪用する攻撃者はソフトウェアを変更できません)。これにより、Tomcat Webアプリケーションマネージャーを使用してアプリケーションをデプロイできなくなります。

Tomcatwebappsグループとして設定します:

chgrp -R Tomcat /opt/Tomcat/webapps

新しいアプリケーションをデプロイする必要がある場合は、そのグループの書き込み許可を追加します。

chmod -R g+w /opt/Tomcat/webapps

展開後に再び削除します:

chmod -R g-w /opt/Tomcat/webapps

(スーパーユーザー権限でこれらのコマンドを実行する必要があるため、必要に応じてSudoのプレフィックスを付けます)。これは Tomcatセキュリティに関する考慮事項HowTo にも適合します。

9
Jens Erat