MediaWiki 권한
MediaWiki 비공개 위키 및 사용자 그룹 권한 설정 가이드
본 문서는 MediaWiki 1.46 기준으로 다음 권한 정책을 구성하는 방법을 설명한다.
- 비로그인 사용자는 위키 문서를 열람할 수 없다.
- 로그인 사용자는 위키 문서를 열람할 수 있다.
- 문서 작성 및 편집은 별도의 사용자 그룹에 속한 사용자만 가능하다.
- 사용자 가입은 차단하고 관리자가 계정을 생성한다.
1. 권한 구성 목표
| 사용자 구분 | 문서 열람 | 문서 작성·편집 | 계정 생성 |
|---|---|---|---|
비로그인 사용자(*)
|
불가 | 불가 | 불가 |
일반 로그인 사용자(user)
|
가능 | 불가 | 불가 |
편집 그룹(wiki-editor)
|
가능 | 가능 | 불가 |
관리자(sysop)
|
가능 | 가능 | 가능 |
2. LocalSettings.php 백업
MediaWiki 설치 경로가 /var/www/mediawiki인 경우의 예시이다. 실제 설치 경로에 맞게 변경한다.
# MediaWiki 설치 경로로 이동
cd /var/www/mediawiki
# 날짜와 시간을 붙여 LocalSettings.php 백업
cp -a LocalSettings.php "LocalSettings.php.$(date +%Y%m%d-%H%M%S).bak"
# 백업 파일 확인
ls -lh LocalSettings.php*
3. 비공개 위키 및 편집 그룹 설정
LocalSettings.php의 마지막 부분에 다음 설정을 추가한다.
# ----------------------------------------------------------------------
# 비공개 위키 권한 정책
# ----------------------------------------------------------------------
# 비로그인 사용자의 문서 열람 차단
$wgGroupPermissions['*']['read'] = false;
# 비로그인 사용자의 문서 작성 및 편집 차단
$wgGroupPermissions['*']['edit'] = false;
$wgGroupPermissions['*']['createpage'] = false;
$wgGroupPermissions['*']['createtalk'] = false;
# 공개 회원가입 차단
$wgGroupPermissions['*']['createaccount'] = false;
# 일반 로그인 사용자는 문서 열람만 허용
$wgGroupPermissions['user']['read'] = true;
$wgGroupPermissions['user']['edit'] = false;
$wgGroupPermissions['user']['createpage'] = false;
$wgGroupPermissions['user']['createtalk'] = false;
# 편집 전용 사용자 그룹 생성 및 권한 부여
$wgGroupPermissions['wiki-editor']['read'] = true;
$wgGroupPermissions['wiki-editor']['edit'] = true;
$wgGroupPermissions['wiki-editor']['createpage'] = true;
$wgGroupPermissions['wiki-editor']['createtalk'] = true;
# 관리자는 계정 생성과 문서 편집 가능
$wgGroupPermissions['sysop']['createaccount'] = true;
$wgGroupPermissions['sysop']['read'] = true;
$wgGroupPermissions['sysop']['edit'] = true;
$wgGroupPermissions['sysop']['createpage'] = true;
$wgGroupPermissions['sysop']['createtalk'] = true;
로그인 화면 접근에 대한 참고
read 권한을 차단해도 일반적으로 로그인 특수 문서는 접근할 수 있다. 환경 또는 확장 기능의 영향으로 로그인 화면까지 차단되는 경우에만 다음 예외를 추가한다.
# 필요한 경우에만 비로그인 사용자에게 로그인 화면 열람 허용
$wgWhitelistRead = [ 'Special:UserLogin' ];
기존에 $wgWhitelistRead 설정이 있다면 새 배열을 다시 선언하지 말고 기존 배열에 항목을 합쳐야 한다.
4. 설정 파일 문법 검사 및 적용
MediaWiki 권한 설정은 LocalSettings.php가 요청 시 로드되므로 별도의 DB 업데이트나 웹 서버 재시작이 일반적으로 필요하지 않다. 먼저 PHP 문법을 검사한다.
# PHP 문법 오류 확인
php -l /var/www/mediawiki/LocalSettings.php
정상 결과:
No syntax errors detected in /var/www/mediawiki/LocalSettings.php
PHP OPcache 설정에 따라 변경 사항이 즉시 반영되지 않으면 PHP-FPM을 재시작한다.
# 사용 중인 PHP-FPM 서비스 이름 확인
systemctl list-units --type=service | grep -E 'php.*fpm'
# Rocky Linux 기본 서비스 이름 예시
systemctl restart php-fpm
# 서비스 상태 확인
systemctl --no-pager --full status php-fpm
5. 위키 사용자 계정 생성
공개 회원가입을 차단했으므로 관리자가 계정을 생성한다.
- 관리자 계정으로 로그인한다.
- 주소창에서
https://위키주소/index.php/Special:CreateAccount로 이동한다. - 사용자 이름, 비밀번호, 이메일 주소를 입력한다.
- 가능하면 임시 비밀번호를 이메일로 전송하고 최초 로그인 시 변경하도록 한다.
명령줄에서 계정을 생성해야 하는 경우 MediaWiki 설치 경로에서 유지보수 스크립트를 사용할 수 있다.
# MediaWiki 설치 경로로 이동
cd /var/www/mediawiki
# 현재 버전에 포함된 계정 생성 스크립트의 사용법 확인
php maintenance/createAndPromote.php --help
# 일반 사용자 계정 생성 예시
# 실행 후 암호를 입력하며, 실제 사용자 이름으로 변경한다.
php maintenance/createAndPromote.php wikiuser01
6. 사용자에게 편집 그룹 지정
웹 관리 화면에서 지정
- 관리자 계정으로 로그인한다.
특수:사용자권한또는Special:UserRights로 이동한다.- 편집 권한을 부여할 사용자 이름을 입력하고 불러온다.
- 사용자 그룹 목록에서
wiki-editor를 선택한다. - 변경 사유를 입력한다. 예:
기술 문서 편집 담당자 지정 - 사용자 그룹 저장 버튼을 누른다.
직접 접근 주소 예시:
https://위키주소/index.php/Special:UserRights
편집 권한 회수
동일한 특수:사용자권한 화면에서 해당 사용자의 wiki-editor 선택을 해제하고 저장한다. 그룹을 제거해도 사용자 계정과 기존 편집 기록은 삭제되지 않는다.
7. 사용자 그룹 이름 한글 표시
권한 화면에서 그룹 이름을 보기 좋게 표시하려면 위키의 시스템 메시지를 생성한다.
| 생성할 시스템 메시지 문서 | 입력 내용 |
|---|---|
MediaWiki:Group-wiki-editor
|
문서 편집자 |
MediaWiki:Group-wiki-editor-member
|
문서 편집자 |
각 문서는 관리자 계정으로 생성한다. 내부 그룹 ID는 계속 wiki-editor를 사용하며 화면에 표시되는 명칭만 변경된다.
8. 권한 적용 확인
권한은 서로 다른 브라우저 또는 시크릿 창을 사용하여 계정 유형별로 검사한다.
| 시험 항목 | 기대 결과 |
|---|---|
| 로그아웃 상태에서 문서 주소 접속 | 문서 내용이 표시되지 않고 로그인 요구 또는 권한 오류 표시 |
| 일반 사용자 로그인 후 문서 열람 | 문서 열람 가능 |
| 일반 사용자의 문서 편집 시도 | 편집 불가 |
wiki-editor 사용자 로그인 후 기존 문서 편집
|
편집 및 저장 가능 |
wiki-editor 사용자의 새 문서 작성
|
새 문서 생성 가능 |
| 관리자 계정의 사용자 계정 생성 | 계정 생성 가능 |
현재 사용자에게 실제로 부여된 권한은 다음 특수 문서에서 확인한다.
https://위키주소/index.php/Special:ListGroupRights
https://위키주소/index.php/Special:UserRights
9. 첨부 파일 보안 주의사항
첨부 파일도 비공개로 운영하려면 MediaWiki의 img_auth.php와 웹 서버의 이미지 인증 구성을 별도로 적용해야 한다. Nginx 환경에서는 업로드 디렉터리를 직접 공개하지 않도록 구성한 뒤 내부 리다이렉트 방식으로 전달하는 구성이 필요하다. 문서 권한 설정만으로 첨부 파일까지 보호된다고 판단하면 안 된다.
10. 장애 발생 시 복구
설정 추가 후 위키가 열리지 않으면 PHP 문법 오류 또는 변수 선언 오류를 우선 확인한다.
# PHP 문법 확인
php -l /var/www/mediawiki/LocalSettings.php
# Nginx 오류 로그 확인
tail -n 100 /var/log/nginx/error.log
# PHP-FPM 로그 확인
journalctl -u php-fpm -n 100 --no-pager
# 필요 시 백업 파일 목록 확인
ls -lt /var/www/mediawiki/LocalSettings.php*
# 복구할 백업 파일을 확인한 뒤 원본으로 복원
# 아래 백업 파일명은 실제 생성된 이름으로 변경한다.
cp -a /var/www/mediawiki/LocalSettings.php.20260713-120000.bak \
/var/www/mediawiki/LocalSettings.php
# 복원 파일 문법 확인
php -l /var/www/mediawiki/LocalSettings.php
11. 운영 권장 사항
- 일반 사용자에게
sysop권한을 부여하지 않고 편집 전용 그룹만 사용한다. - 입사, 담당 변경, 퇴사 시
wiki-editor그룹을 즉시 추가하거나 회수한다. - 사용자 그룹 변경 시 변경 사유를 반드시 기록한다.
- 관리자 계정과 일반 편집 계정을 분리한다.
- 권한 설정 변경 전
LocalSettings.php와 데이터베이스를 백업한다. - 비공개 자료가 첨부되는 경우 업로드 파일 직접 접근 차단을 별도로 검증한다.
참고 자료
- MediaWiki 공식 문서: https://www.mediawiki.org/wiki/Manual:Preventing_access
- MediaWiki 공식 문서: https://www.mediawiki.org/wiki/Manual:User_rights
- MediaWiki 공식 문서: https://www.mediawiki.org/wiki/Manual:$wgGroupPermissions
- MediaWiki 공식 문서: https://www.mediawiki.org/wiki/Manual:Image_Authorization