Teamcityを使用してCI用のディストリビュータユーザーを設定しようとしています。 ServerFaultに関するこの質問の指示に従いました。/var/wwwでapache2ユーザーwww-data権限を処理する最良の方法は何ですか?
問題はTeamcityアプリケーションが特権755
ディレクトリを作成していますが、その一部はapache(2.4)が書き込めないことです。権限を手動で変更すると、775
Apacheは権限を書き込むことができます。
権限を設定する方法は次のとおりです。
- ユーザーを作成しました
teamcity
。 www-data
ユーザーにグループをセカンダリグループとして追加する- 所有権は
/var/www
次のように変更されます。root:www-data
変更されたディレクトリ権限:
find /var/www -type d -exec chmod 2775 {} +
次の内容を含むファイルの場合:
find /var/www -type f -exec chmod 0664 {} +
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分ごとに実行)を作成します。
追加資料:
- Javaでumaskを設定する方法は?
- チームシティレンジャーズ(おそらく関連スクリプト)
- Teamcity v9.x CentOSビルドエージェントのインストール例では、サービススクリプトの検索を開始する場所を示しています
systemd
。