私は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/ umask
init.dスクリプトで開始位置を定義できます。
shebangの後に一番上に追加すると、特権umask 0022
ファイルが作成されます644
。