Manjaro Linux에서 "Dofus"라는 게임을 실행하려고 합니다. 저는 packer를 사용하여 /opt/ankama
폴더 아래에 배치했습니다 . 폴더(및 그 안의 모든 파일)는 루트 사용자와 게임 그룹이 소유합니다. 설치 패키지의 지침에 따라 나 familia
자신(사용자)을 게임 그룹에 추가했습니다(그렇지 않으면 "업데이터를 실행할 때마다 비밀번호를 입력해야 합니다").
하지만 게임을 실행할 때 비밀번호를 입력하면 충돌이 발생합니다(꼭 필요한 것은 아닙니다). 로그를 확인해보니 다음과 같은 오류가 발생했습니다.
[29/08 20:44:07.114]{T001}INFO c/net/NetworkAccessManager.cpp L87 : Starting request GET http://dl.ak.ankama.com/updates/uc1/projects/dofus2/updates/check.9554275D
[29/08 20:44:07.291]{T001}INFO c/net/NetworkAccessManager.cpp L313 : Request GET http://dl.ak.ankama.com/updates/uc1/projects/dofus2/updates/check.9554275D Finished (status : 200)
[29/08 20:44:07.292]{T001}ERROR n/src/update/UpdateProcess.cpp L852 : Can not cache script data
그래서 권한 거부 오류가 의심됩니다. 시작 직후 오류 메시지가 나타납니다.
이는 "디스크에 쓰는 동안 오류가 발생했습니다. 충분한 권한과 디스크 공간이 있는지 확인하세요"를 의미합니다.
그러다가 몇 가지 조사 끝에 폴더에 파일 액세스를 기록하는 "auditd"를 발견했습니다. 설정 후 어떤 파일이 성공적으로 접근되지 않았는지 확인해보세요.결과.
이러한 오류는 모두 실제로 /opt/ankama/transition/transition
( )에 대한 시스템 호출이 포함된 고유 파일을 참조합니다 open
. 이 파일의 권한은 rwxrwxr-x
( 775
)입니다. 따라서 rwx 권한이 있지만 오류가 발생 exit -13
하고 EACESS
오류(권한 거부)가 발생합니다.
컴퓨터를 다시 시작하고 로그인 및 로그아웃을 시도했습니다. 그들 중 누구도 직업이 없습니다.
폴더 권한을 으로 설정하면 familia:games
문제 없이 실행되며 비밀번호를 입력할 필요도 없습니다. 그러나 이것은 옳지 않은 것 같습니다. 읽기/쓰기/실행 권한이 있는데도 "권한 거부" 오류가 발생하는 이유는 무엇입니까?
Mark는 경로 접두어의 모든 디렉터리에 +x 권한이 필요할 수 있다고 말했습니다. 경로 자체는 입니다 /opt/ankama/transition/transition
. 경로 접두어에 대한 권한은 다음과 같습니다.
/opt - drwxr-xr-x(755), 소유권 루트: 루트
/opt/ankama - drwxr-xr-x(755), 소유권 루트: game
/opt/ankama/transition - drwxrwxr-x(775), 소유권 루트: 게임
그런데 한 가지 알아낸 점은 폴더 자체는 있어도 하위 폴더는 모두 /opt/ankama
그렇다는 것입니다. 나는 이것이 의미가 없다고 생각하며 권한을 변경해도 아무런 효과가 없습니다.775
755
775
또한 Giel은 내 시스템에서 AppArmor를 실행할 수 있다고 제안했습니다. 그러나 달리기 # cat /sys/module/apparmor/parameters/enabled
는 나에게 N
.
답변1
첫째, 그룹에 자신을 추가하면 변경 사항이 즉시 적용되지 않습니다. 가장 쉬운 방법은 로그아웃했다가 다시 로그인하는 것입니다.
그런 다음 데이터 파일에 대한 쓰기 권한이 있습니다(일부 설명에서 이미 언급했듯이). 그러나 이러한 솔루션은 보안에 도움이 되지 않습니다.
- 게임 그룹을 추가합니다. 이 그룹에 사용자를 추가하지 마십시오.
- 게임을 실행 가능하게 만들기
chmod -R ugo+rX game-directory
- 그룹에만 쓰기 권한을 부여하고 다른 사람은 사용할 수 없습니다.
chmod -R ug+w,o-w game-directory
- 그룹에 게임을 추가하고
chgrp -R game-group game-directory
,chmod -R g+s game-directory
그렇지 않으면addgroup game-group; chgrp -R game-group game-directory; chmod -R u=rwX,g=rwXs,o=rX game-directory
게임에서 권한 변경이 필요한 경우 동일한 작업을 수행할 수 있지만 그룹 대신 사용자에 대해 수행할 수 있습니다. 즉.
adduser game-owner; addgroup game-group; chown -R game-owner:game-group game-directory; chmod -R u=rwXs,g=rwXs,o=rX game-directory
답변2
디렉터리를 열려면 x 비트를 설정해야 합니다(이 비트가 검색 비트로 처리되는 디렉터리의 경우). 그래서 저는 폴더 세트만 가져오고 모든 파일을 실행 가능하게 만드는 악몽을 피하기 위해 트리를 사용합니다(트리에 대한 옵션은 다음과 같습니다 -d List directories only.
).
sudo tree -faid here_goes_your_directory xargs -L1 -I{} sudo chmod 755 "{}"
경고하다! ! !다음 사항을 고려해야 합니다.
루트 또는 시스템 디렉터리에서 chmod 또는 chown을 반복적으로 사용하면
/
운영 체제가 손상됩니다(사실/
디렉터리나 시스템 디렉터리에서 무엇이든 반복하는 것은 위험합니다).이와 같은 권한 배치를 설정하는 것은 좋은 보안 관행이 아닙니다.