umaskはホームディレクトリ以外のディレクトリでは期待どおりに機能しません。

umaskはホームディレクトリ以外のディレクトリでは期待どおりに機能しません。

Teamcityを使用してCI用のディストリビュータユーザーを設定しようとしています。 ServerFaultに関するこの質問の指示に従いました。/var/wwwでapache2ユーザーwww-data権限を処理する最良の方法は何ですか?

問題はTeamcityアプリケーションが特権755ディレクトリを作成していますが、その一部はapache(2.4)が書き込めないことです。権限を手動で変更すると、775Apacheは権限を書き込むことができます。

権限を設定する方法は次のとおりです。

  1. ユーザーを作成しましたteamcity
  2. www-dataユーザーにグループをセカンダリグループとして追加する
  3. 所有権は/var/www次のように変更されます。root:www-data
  4. 変更されたディレクトリ権限:

    find /var/www -type d -exec chmod 2775 {} +

    次の内容を含むファイルの場合:

    find /var/www -type f -exec chmod 0664 {} +

  5. umask 0002に追加する/etc/profile

テスト:

スチームシティ
マスク
>0002
タッチテストファイル
ls-l
>-rw-rw-r-- 1 teamcity teamcity 0 5月25日10時38分テストファイル
CD /var/www
タッチテストファイル
ls-l
>-rw-rw-r-- 1 teamcity www-data 0 5月25日 10:42 テストファイル

ディレクトリの場合も同様です。これはrwユーザーとグループに適用されます。

展開後のディレクトリとファイルに対する権限は、予想とは755異なります775

Teamcityアプリケーションをサービスとして起動します。

start-stop-daemon --start -c teamcity --exec /opt/TeamCity/bin/runAll.sh start

いくつかの詳細がありませんが見つかりません。

システム:

  • Debian の提示
  • Apache 2.4
  • チームシティ9

解決策:

umask 002起動コマンドの前に追加して、Teamcityサービスの起動スクリプトを変更しました。

ベストアンサー1

説明を見ると、TeamCityがumaskを無視しているようです。たぶんサービススクリプトにumaskを設定したかもしれません(質問には記載されていません)。その場合は、スクリプトを変更できます。そうでなければ、明らかにクローズソースアプリケーションだからです。そしてJavaではこれを防ぐ能力が制限されています。あなたできるディレクトリ権限を変更するには、クローンジョブ(1分ごとに実行)を作成します。

追加資料:

おすすめ記事