プロセスによって生成されたファイルのデフォルト権限を変更する方法は?

プロセスによって生成されたファイルのデフォルト権限を変更する方法は?

私はCentos 6 x86でゲームサーバー(Unreal Tournament 2004)を実行しています。 shスクリプトを使用してバックグラウンドプロセスから開始します。このプロセス(ゲームサーバー)はさまざまなファイル(デモ、ログ)を生成し、デフォルトではすべて0600権限を持ちます。一部のアプリケーションを使用してこれを処理する必要があるため、デフォルトの権限(0644など)を変更したいと思います。

私はroot、umaskは022、私が作成したデフォルトファイルは0644です。しかし、このゲームサーバープロセスは私のumaskを継承していないようです。どのように変更できますか?私はLinuxに初めて触れたので、詳細な答えをいただきありがとうございます。

サーバーを実行するスクリプト:

#!/bin/sh
# Set the following to your UT2004 directory.
UT2004HOME=/home/ut2004

LOG=Server1.log

if [ ! -d "$UT2004HOME/Logs" ]; then
mkdir $UT2004HOME/Logs
fi

cd $UT2004HOME/System

while true; do

./ucc-bin server DM-Rankin-FE?game=XGame.xDeathMatch?Mutator=UTzoneTAv1.MutUTzoneTA,utcompv17a.MutUTComp,XWeapons.MutNoSuperWeapon,XGame.MutNoAdrenaline?MaxPlayers=2?DoubleDamage=False?TimedOverTimeLength=0?GameStats=True?AntiTCCSettings=NoMidGameChecks ini=server1.ini -nohomedir -lanplay &> $UT2004HOME/Logs/$LOG

DATE=20`date +%y%m%d`-`date +%H%M%S`
mv $UT2004HOME/Logs/$LOG $UT2004HOME/Logs/crash-$DATE.log

done;

shファイルに入れ、文字列の末尾に&を使用してバックグラウンドプロセスとしてパテシェルからrootとして起動しました。

アップデート#1

出力ls -ld $UT2004HOME/Logs

drwxr-xr-x 2 root root 4096 Sep 1 10:22 /home/ut2004/Logs

このディレクトリのファイルはrw-r--r--

必要なファイルを含む他の2つのディレクトリの出力はrwxr-xr-x同じです。

drwxr-xr-x 2 root root 45056 Sep 26 14:16 /home/ut2004/Demos 
drwxr-xr-x 2 root root 28672 Sep 26 18:03 /home/ut2004/UserLogs 

しかし、その中のファイルはrw-------

コマンドを実行すると、バイナリfile ./ucc-binファイルとして報告されます。

答え1

ゲームサーバーはどのユーザーとして実行されますか?通常、サーバー/サービスは root ではなくユーザーとして実行されるため、このユーザーが誰であるかを確認し、そのユーザーのumask

umask$HOME/.bashrcユーザーの または で設定できますが、$HOME/.bash_profileまず考えずにそうすることは慎重です。

ゲームサーバーを実行しているユーザー以外のユーザーがアクセスできるように、関連ディレクトリにアクセス制御リスト(ACL)を設定する方が合理的です。

これにはツールsetfaclとを使用してくださいgetfacl。たとえば、

# for a single user (userA)
$ setfacl -Rm d:u:userA:rwX,u:userA:rwX /var/www

# for a shared group (groupA) 
$ setfacl -Rm d:g:groupA:rwX,u:groupA:rwX /var/www

または、ディレクトリを読み取り専用にしてください。

$ setfacl -Rm d:u:www-data:rX,u:www-data:rX /var/www

アップデート#1

わかりました。あなたが使用していると思われるものをダウンロードしました。ここから専用サーバーをダウンロードしましたが、ページのタイトルは次のとおりです。 Unreal、Unreal Tournament、Unreal Tournament 2004の多様で便利なダウンロード

あなたと同様のコマンドを実行すると、権限を持つログが生成されます。

-rw-r--r-- 1 root root     1140 Sep 27 08:57 sams.log

私が実行したコマンドは次のとおりです。

$ ./ucc-bin masterserver -nohomedir -lanplay &> sams.log

私のumaskも002に設定されています。自分の設定を正しく複製していることを確認するために、ここで何をしているのかを確認してください。

引用する

答え2

アプリケーションにホームディレクトリがない場合は、/etc/ umaskinit.dスクリプトで開始位置を定義できます。

shebangの後に一番上に追加すると、特権umask 0022ファイルが作成されます644

関連情報