저는 Centos 6 x86에서 게임 서버(Unreal Tournament 2004)를 실행하고 있습니다. sh 스크립트를 사용하여 백그라운드 프로세스에서 시작합니다. 이 프로세스(게임 서버)는 다양한 파일(데모, 로그)을 생성하며 기본적으로 모두 0600 권한을 갖습니다. 일부 응용 프로그램을 사용하여 이를 처리해야 하므로 기본 권한(예: 0644)을 변경하고 싶습니다.
저는 루트이고, 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 파일에 넣고 문자열 끝에 &를 사용하여 백그라운드 프로세스로 퍼티 쉘에서 루트로 시작했습니다.
업데이트 #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
게임 서버는 어떤 사용자로 실행되나요? 일반적으로 서버/서비스는 루트가 아닌 사용자로 실행되므로 이 사용자가 누구인지 확인하고 해당 사용자의 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
애플리케이션에 홈 디렉토리가 없으면 umask
/etc/init.d 스크립트에서 시작 위치를 정의할 수 있습니다.
shebang 다음에 맨 위에 추가하면 권한이 umask 0022
있는 파일이 생성됩니다 644
.