서버PC에서 보안과 타입맵(Typemap)을 설정하는 방법을 알아보고 적용해보록 하겠습니다.
이 부분은 집에서 혼자 공부하는 학생들은 건너뛰어도 되는 부분이지만, 미리 개념을 공부해 놓으면 좋을 것 같습니다.
모든 내용은 Perforce P4 가이드 홈페이지를 따릅니다.
Step 1: Plan your deployment | Admin
Step 1: Plan your deployment | Admin If you are the P4 administrator, you need to deploy P4 Server and configure it for your team. The first step is to decide if you want to manage P4 or have it managed by someone else. Then, you can decide how and where
help.perforce.com
01. 보안 설정하기
서버 보안은 회사 규모와 관계 없이 중요합니다.
P4 서버를 보호하기 위하여 몇가지 추가적인 설정을 해주도록 하겠습니다.
자세한 내용은 Perforce Server 보안 가이드 홈페이지에서 확인할 수 있습니다.
https://help.perforce.com/helix-core/server-apps/p4sag/current/Content/P4SAG/Home-p4sag.html
P4 Server Administration Documentation
| 2025.1 P4 Server Administration Documentation P4 Server (P4D) provides version control for accelerated development and securely versions all digital content, including large files. Install P4 Server Learn how to install P4 Server. What’s new Learn abou
help.perforce.com
1. P4 Admin 접속하기

P4V 창에서 Tools - Administration을 선택합니다.
처음 이 창을 실행시켰다면, 슈퍼유저 권한을 가진 유일한 사용자가 될지 묻는 메시지가 표시됩니다.

Yes를 눌러줍니다. 이 PC만 관리자 권한을 사용할 수 있게 됩니다.
2. 서버 ID 설정
cmd 창을 열어서 다음과 같이 입력합니다.
p4 -p localhost:1666 -u super serverid my_server_id
여기서 localhost:1666의 1666 부분에 서버의 포트 넘버를 입력해 주시고,
super 부분에는 superuser권한을 가진 아이디를,
my_server_id 부분에는 원하는 서버 이름을 입력합니다.
서버 아이디는 원하는 대로 지정할 수 있지만, 반드시 고유한 이름이어야 합니다!

성공하면 이렇게 Server ID : 서버아이디 가 출력됩니다.
p4 명령어 자체가 인식되지 않는다면?
p4 is not recognized... 이런 오류가 뜬다면
1. p4가 설치되지 않았거나
2. p4.exe가 설치된 경로를 확인하고 (보통 C:\Program Files\Perforce)
3. 시스템 환경 변수에 경로 추가(PATH 설정)
이제 P4Admin을 종료하고 다시 실행합니다.
다시 실행해보니 Server Info의 아이디가 바뀌었습니다.

그리고 Root폴더(설치할 때 지정한 폴더)에 Server.id 파일이 생성된 것을 확인할 수 있습니다.

3. 서버 보안 수준 설정
서버의 보안 수준을 설정하겠습니다.
서버에서 비밀번호를 요구하는 사항, 비밀번호 강도, 지원되는 사용자, 서버 인증 방법 등을 설정할 수 있습니다.
P4Admin에서 Configurables탭을 누릅니다.

Security 항목을 두번 클릭하여 열어줍니다.

New Value 항목을 4로 설정하고 완료합니다.
이 값은 4보다 높게 설정하는 것이 권장됩니다. ( 다중 서버 및 복제 환경을 보호 )
자세한 항목은 가이드 홈페이지에서 확인 가능합니다.
https://help.perforce.com/helix-core/server-apps/p4sag/current/Content/P4SAG/security-levels.html
Server security levels
Server security levels The authentication option you choose is partly determined by the security level set for the server. P4 Server superusers can configure server-wide password usage requirements, password strength enforcement, and supported methods of u
help.perforce.com
요약하자면,
| 보안 수준 | 설명 | 로그인 방식 | 참고 |
| 0 (또는 설정X) | 비밀번호 필요하지 않음. 비밀번호 강도를 제한하지 않음. |
p4 login방식, P4PASSWD방식 모두 사용 가능. | 비밀번호 없이 접근 가능 |
| 1 | 모든 사용자가 비밀번호를 사용해야함. | p4 login방식, P4PASSWD방식 모두 사용 가능. | 일반적인 사용 (비밀번호 필요) |
| 2 | 모든 사용자가 강력한 암호를 사용해야 함. | p4 login방식, P4PASSWD방식 모두 사용 가능. | |
| 3 | 모든 사용자가 강력한 암호를 사용해야 함. 비밀번호 설정 조건 추가. |
p4 login 방식을 사용해야함. | |
| 4 | 서버마다 고유한 ID를 등록해야 함. 서버 ID는 Perforce에 등록되어야 함. 복제 서버는 전용 계정을 사용해야 함. 필터 설정 시, 서버에 걸어둔 파일 제한 규칙이 더 우선적으로 적용. 외부에서 서버 접근 시 특별한 인증이 없으면 막힘. |
보안 4수준 이상에서는 서버끼리 통신할 때도 "서버ID"와 "서비스 사용자 인증"이 반드시 필요 | |
| 5 | 모든 중개자는 유효하고 인증된 서비스 사용자를 보유해야 함. (중개자 : P4 Broker, P4 Proxy 등) | ||
| 6 | 각 중개자는 유효한 서버 사양을 가져야 하고, 서비스 사용자는 User사양 필드에 지정된 사용자와 일치해야 함. |
- p4 login(티켓 기반 인증) : 아이디 입력 - 비밀번호 입력 - 티켓 발급 (12~24시간 유효), 비밀번호를 평문으로 저장하지 않아서 보안성이 좋음
- p4passwd(환경 변수 방식) : 환경 변수 P4PASSWD에 비밀번호를 저장하면 p4 명령어 실행 시 자동으로 그 비밀번호를 사용합니다. 비밀번호를 평문으로 저장하여 보안성이 취약
4. SuperUser 비밀번호 변경
※ 언제든지 P4VSuper User의 비밀번호를 변결할 수 있습니다.

Administration - Change Password를 누르고 이전 비밀번호와 새로운 비밀번호를 입력 후에 저장합니다.
비밀번호는 최소 8자 이상, 대문자와 소문자, 그리고 하나 이상의 특수문자나 숫자를 포함해야 합니다.
5. Configurable 값을 변경하여 보안 강화
| 이름 | 새 값 | 설명 |
| dm.user.noautocreate | 2 | 자동 사용자 생성을 방지합니다. P4 관리자만 사용자를 생성할 수 있습니다. 새 사용자를 생성할 때 초기 비밀번호를 지정하는 것이 가장 좋습니다. 해당 사용자에게 초기 비밀번호를 지정하고, 강력한 비밀번호를 사용하세요. |
| dm.user.setinitialpasswd | 0 | 이미 비밀번호가 설정되어 있는 권한이 있는 사용자만이 super다른 사용자의 초기 비밀번호를 설정할 수 있도록 보장합니다. |
| dm.user.resetpassword | 1 | 신규 사용자가 처음 로그인할 때 비밀번호를 재설정하도록 합니다. |
| dm.info.hide | 1 | 권한이 없는 사용자에게 서버 버전 정보를 숨깁니다. |
| dm.user.hideinvalid | 1 | 인증 실패가 잘못된 사용자 이름으로 인해 발생했다는 사실을 숨깁니다. |
| run.users.authorize | 1 | 인증되지 않은 사용자에게 사용자 세부 정보를 숨깁니다. |
02. 타입맵(Typemap) 설정하기
디포에 파일 추가를 시작하기 전에,
언리얼 파일 유형을 어떻게 처리할지 Perforce가 알 수 있도록 P4 Typemap을 구성해 줘야 합니다.
타입맵은 파일의 확장자나 경로에 따라서 그 파일의 "속성(타입)을" 지정해주는 설정입니다.
(파일을 텍스트로 다룰지, 바이너리로 다룰지, 락을 걸지 등을 결정하는 규칙표)
ex) .uasset은 바이너리 파일이니까, 병합 금지 + 락을 걸어줘야 함 → binary+l
타입맵을 지정해주어야 하는 이유는 다음과 같습니다.
| 충돌 방지 | .uasset, .umap 등은 병합이 불가능 → 동시에 작업 못 하게 해야 함 (+l) |
| 잘못된 자동 타입 감지 방지 | 확장자가 생소한 경우 등, Perforce가 잘못 판단하는 것을 방지 |
| 협업 충돌 방지 | 팀원이 같은 .umap을 동시에 수정하는 것 등을 방지 |
| 깔끔한 버전 기록 | 텍스트 파일은 diff/merge 가능, 바이너리는 불가 (구분 필요) |
| 서버 용량 절약 | 자주 바뀌는 큰 파일은 버전 수 제한 가능 (+S#) |
주의!!
이 과정은 팀이 지정된 파일 작업을 시작하기 전에 설정해야 합니다.
이미 서버에 있는 파일은 타입맵의 영향을 받지 않습니다.
1. cmd 창을 열고 p4 환경 변수를 설정합니다.
먼저, 현재 설정된 값을 볼 수 있는 명령어를 입력해보도록 하겠습니다.
p4 set
이렇게 입력하면 설정된 값을 볼 수 있습니다.
이제 포트넘버와 유저명을 입력합니다.
p4 set P4USER=사용자명
p4 set P4PORT=호스트명:1666
저 같은 경우는 P4USER=BbuDong, P4PORT=1666 이렇게 입력했습니다.
※ 슈퍼유저 권한(관리자 권한)을 가지고 있는 아이디를 입력하셔야 합니다.
그렇지 않으면 Typemap 파일에 접근할 수 없습니다.
(Typemap은 개인 워크스페이스 설정이 아닌 서버의 depot 수준의 설정을 바꾸는 것이기 때문)
그리고 p4 set을 입력해서 결과를 보면

잘 입력되어 있습니다.
그리고 다음 명령어를 입력합니다.
p4 -P YourPassword typemap
지금까지 작업을 따라오셨다면 로그인이 되어 있을테니, YourPassword 그대로 입력하시면 됩니다.
로그인을 다시 해야한다면 cmd에 비밀번호를 입력하시거나, P4V를 다시 실행하여 로그인 후 명령어를 입력하면 됩니다.
그러면 텍스트 창이 뜨는데,

TypeMap: 이후 부분에 다음 내용을 붙여넣기 합니다.
TypeMap:
binary+w //depot/....exe
binary+w //depot/....dll
binary+w //depot/....lib
binary+w //depot/....app
binary+w //depot/....dylib
binary+w //depot/....stub
binary+w //depot/....ipa
binary //depot/....bmp
text //depot/....ini
text //depot/....config
text //depot/....cpp
text //depot/....h
text //depot/....c
text //depot/....cs
text //depot/....m
text //depot/....mm
text //depot/....py
binary+l //depot/....uasset
binary+l //depot/....umap
binary+l //depot/....upk
binary+l //depot/....udk
binary+l //depot/....ubulk
이 예제는 언리얼 엔진 홈페이지에서 제공하는 내용입니다.
언리얼 프로젝트에서 거의 표준처럼 사용되는 구성이기 때문에 그대로 사용하셔도 됩니다.
유의할 점으로는
- //depot/... 경로가 맞는지 확인. → 본인의 depot 이름이 다르면 바꿔야 함 (//MyDepot/...)
- 다른 특수한 파일 확장자가 있다면 → 추가로 직접 명시 (json, csv 등)
- 특정 디포에만 적용시키지 않고 서버의 모든 파일에 적용시키고 싶다면 /depot/부분을 지워주면됩니다.
- /....umap 과 같은 구조 보다는 /.../*.umap이 유사하지만 더 직관적일 수 있습니다.
☞ 타입맵(Typemap)의 구조?
Typemap의 파일 타입은 보통 이렇게 생겼습니다.
TypeMap:
<타입+옵션> <파일경로>
● 타입 종류
| text | 텍스트 파일 (코드, 설정파일 등) |
| binary | 바이너리 파일 (이미지, 에셋 등) |
| xtext | 유니코드 텍스트 (거의 안 씀) |
| resource | 리소스 전용 (특수 용도) |
| ubinary | Unicode 바이너리 (거의 안씀) |
● 옵션 종류
| +l | 락(lock): 한 사람만 수정 가능 | .uasset, .umap (병합 불가한 UE 파일) |
| +w | 쓰기 가능 (읽기 전용으로 잠기지 않게 함) | 실행파일 등 |
| +S# | 최신 버전 #개만 저장 → 서버 용량 절약 | 자주 바뀌는 큰 파일 |
| +k | 키워드 확장 ($Id$ 등) | 코드파일 일부 (거의 안 씀) |
| +x | 실행 권한 유지 (Unix 계열) | .sh, .py |
| +m | magic diff: 일부 바이너리 diff | 특수 상황에서만 사용 |
★ .uasset, .umap, .ubulk 같은 UE 파일은 반드시 +l 옵션이 있어야 합니다!
→ 여러 명이 동시에 수정하면 손상 위험이 크기 때문입니다.
예제를 한번 보겠습니다.
TypeMap:
binary+w //depot/....exe # 실행파일: 바이너리 + 쓰기 허용
binary+w //depot/....dll
binary+w //depot/....lib
binary+w //depot/....app
binary+w //depot/....dylib
binary+w //depot/....stub
binary+w //depot/....ipa
binary //depot/....bmp # 이미지: 바이너리
text //depot/....ini # 설정 파일: 텍스트
text //depot/....cpp # C++ 코드: 텍스트
binary+l //depot/....uasset # 언리얼 에셋: 바이너리 + 락 (충돌 방지)
binary+l //depot/....umap
binary+S2 //depot/....log # 로그파일: 바이너리 + 최근 2버전만 저장
+S# 의 경우는
최신 #개 버전만 서버에 저장하고, 그 이전 버전은 자동으로 삭제하는 옵션입니다.
서버 용량 절약에 유용하지만, 히스토리를 되돌릴 수 없으니 주의해야합니다.
그리고 저장 후 메모장을 종료하면

cmd에 Typemap saved 명령어가 출력됩니다.
이번 글에서 보안 설정과 Typemap 설정을 수행했습니다.
개념을 학습해 놓았으니, 앞으로 변경이 필요한 설정을 쉽게 바꿀 수 있을 것 같습니다.
다음 글에서는 스트림 디포(depot)를 생성하고, 메인라인 스트림을 만들어보도록 하겠습니다.
'UE_5' 카테고리의 다른 글
| [UE5 Perforce] 03. Perforce Server 스트림(저장소) 생성하기. (2) | 2025.08.18 |
|---|---|
| [UE5 Perforce] 스트림 (Stream) (2) | 2025.08.07 |
| [UE5 Perforce] 01. Sever PC에서 Perforce 설치하기. (3) | 2025.07.14 |
| [UE5 Perforce] 00. Perforce란 무엇인가? (1) | 2025.07.07 |
| [UE5] AI 인지 시스템 ( AI Perception System ) (2) | 2024.10.10 |