프로세스에서 생성된 파일에 대한 기본 권한을 변경하는 방법은 무엇입니까?

프로세스에서 생성된 파일에 대한 기본 권한을 변경하는 방법은 무엇입니까?

저는 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.

관련 정보