Linuxボックスをさまざまな開発者が共有しています。彼らは共有ファイル(/ opt/Tomcat)にあるApache Tomcatにwarファイルを配備したいと考えています。
彼らはSudoアクセスを持っていないので、Tomcatディレクトリのフォルダー権限を変更する必要があります。
/opt/Tomcat
の下のディレクトリ構造は-
bin/
conf/
lib/
logs/
temp/
webapps/
work/
上記の状況でのベストプラクティスとは何ですか-ユーザーへの最も適切なアクセス許可?とりあえず、許可を777からwebappsとlogsに変更しました。
ありがとう
私はこのようにします:
TomcatユーザーをTomcatのフォルダーの所有者とします。
# chown -R Tomcat:tomcat /opt/Tomcat
ユーザーはnot Tomcatの構成を変更できます。
# chmod -R g+r /opt/Tomcat/conf
ユーザーは他のフォルダーを変更できます。
# chmod -R g+w /opt/Tomcat/logs
# chmod -R g+w /opt/Tomcat/temp
# chmod -R g+w /opt/Tomcat/webapps
# chmod -R g+w /opt/Tomcat/work
新しいファイルのスティッキービットをアクティブにして、権限を定義します。
# chmod -R g+s /opt/Tomcat/conf
# chmod -R g+s /opt/Tomcat/logs
# chmod -R g+s /opt/Tomcat/temp
# chmod -R g+s /opt/Tomcat/webapps
# chmod -R g+s /opt/Tomcat/work
最後に、Tomcatを使用できるユーザーに必要なTomcatグループを追加します。
# usermod -a -G Tomcat MYUSER
Non-Tomcat settings
Tomcatのセキュリティハウツーのセクションに、このトピックに関する有用な情報が記載されています。こちらをご覧ください:
Tomcatはrootユーザーの下で実行しないでください。 Tomcatプロセス専用のユーザーを作成し、そのユーザーにオペレーティングシステムに最低限必要な権限を付与します。たとえば、Tomcatユーザーを使用してリモートでログオンすることはできません。
ファイルの権限も適切に制限する必要があります。 ASFでのTomcatインスタンスを例として(自動展開が無効で、Webアプリケーションが展開ディレクトリとして展開されている場合)、標準構成では、ルートを持つすべてのTomcatファイルがグループで所有されますTomcatと所有者には読み取り/書き込み権限がありますが、グループには読み取りのみがあり、世界には権限がありません。例外は、rootではなく、Tomcatユーザーが所有するログ、一時、作業ディレクトリです。つまり、攻撃者がTomcatプロセスを危険にさらしたとしても、Tomcat構成を変更したり、新しいWebアプリケーションをデプロイしたり、既存のWebアプリケーションを変更したりすることはできません。 Tomcatプロセスは、これらの権限を維持するために、007のumaskで実行されます。
最小特権の原則 に従う必要があります。サーバー(おそらくwww-data
ですが、確認する必要があります)は、ほとんどのファイル(すべてとしましょう)を読み取り、ログのみに書き込むことができる必要があります。 Web開発者は必要な場所に書き込むことができます。ファイルの所有者だけが削除できるように、ディレクトリにスティッキービットを設定します。
実際には、グループ(たとえばwebdev
)を作成し、すべての開発者とサーバーを追加する必要があります(Linuxの種類に応じてusermod -aG webdev <user>
またはusermod -A webdev <user>
)。 chown
すべてのファイルとディレクトリをウェブサーバーユーザーに、chmodすべてのディレクトリを500に、すべてのファイルを400に(実行可能ファイルも500にする必要があるbin
を除く)。
グループに/opt/Tomcat
への書き込み権限を付与し(570になります)、スティッキービットを設定して、所有するファイルのみを削除できるようにします(chmod 1570)。サーバーにログへの書き込み権限と開発者への読み取り権限を付与します(フォルダーの場合は0740、ファイルの場合は0640、スティッキービットはおそらく必要ではありません。異なる意味(ファイルが実行可能な場合は、所有者の権限で実行してください)。
次に、一部のディレクトリのwebdev
に書き込み権限(1570)を付与する必要があります。ここでは試行錯誤が必要ですが、アプリケーションによって異なる場合があります。これらのフォルダーは1570でなければなりませんが、他のフォルダーは0500にすることができます)。
開発者は、サーバーがファイルを読み取れるように(つまり640)、ディレクトリでも実行できるように(つまり750)、ファイルの読み取りアクセス権をグループに付与する必要があります。
@intropedroの受け入れられた答えは良いものだと思います。パッケージインストーラーを使用すると、多くの頭痛の種を省くことができることを指摘する価値があります-少なくともUbuntu上のTomcat 7の場合apt-get install Tomcat7
は、より「標準的な」インストールディレクトリのセットを生成します。
/etc/Tomcat7
構成ファイルの場合、/var/lib/Tomcat7
コアライブラリ/usr/share/Tomcat7
。すべての権限は、最小限の特権の原則で正しく設定されています。たとえば、ユーザーをグループTomcat7
に追加するだけで、展開が可能になります。さらに、Tomcatサーバーは、他のユーザーとして開始および停止できるサービスとしてセットアップされます(例:Sudo service Tomcat start
または/etc/init.d/Tomcat start
)。 Tomcatは再起動時に自動的に起動し、「再起動」コマンドがあります。 RHEL/CentOSユーザーのための同等のyumパッケージがあると確信しています。 (そして、はい、ローカルOSXインストール用の自作インストーラがあります)。
問題がある場合は、/usr/share/bin
にconfigtest.sh
と呼ばれる素敵なユーティリティがあり、権限やその他のエラーがあるかどうかを報告します。注: いくつかのシンボリックリンクの追加を提案するオープンバグ があります。
Ubuntu trusty
(14.04)はまだ実行中です。最近のバージョンを実行している人には、Tomcat 8 apt-getリポジトリがあると思います。