MediaWiki 권한

잉여 위키
Chnagil (토론 | 기여)님의 2026년 7월 13일 (월) 23:11 판 (새 문서: = MediaWiki 비공개 위키 및 사용자 그룹 권한 설정 가이드 = 본 문서는 MediaWiki 1.46 기준으로 다음 권한 정책을 구성하는 방법을 설명한다. * 비로그인 사용자는 위키 문서를 열람할 수 없다. * 로그인 사용자는 위키 문서를 열람할 수 있다. * 문서 작성 및 편집은 별도의 사용자 그룹에 속한 사용자만 가능하다. * 사용자 가입은 차단하고 관리자가 계정을 생성한다. == 1...)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)
둘러보기로 이동 검색으로 이동

MediaWiki 비공개 위키 및 사용자 그룹 권한 설정 가이드

본 문서는 MediaWiki 1.46 기준으로 다음 권한 정책을 구성하는 방법을 설명한다.

  • 비로그인 사용자는 위키 문서를 열람할 수 없다.
  • 로그인 사용자는 위키 문서를 열람할 수 있다.
  • 문서 작성 및 편집은 별도의 사용자 그룹에 속한 사용자만 가능하다.
  • 사용자 가입은 차단하고 관리자가 계정을 생성한다.

1. 권한 구성 목표

사용자 구분 문서 열람 문서 작성·편집 계정 생성
비로그인 사용자(*) 불가 불가 불가
일반 로그인 사용자(user) 가능 불가 불가
편집 그룹(wiki-editor) 가능 가능 불가
관리자(sysop) 가능 가능 가능

주의: LocalSettings.php를 수정하기 전에 반드시 백업한다. PHP 문법 오류가 발생하면 위키 전체가 열리지 않을 수 있다.

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;

wiki-editor는 기본 그룹이 아니라 이 설정에서 새로 정의한 사용자 그룹이다. 그룹 이름은 영문 소문자와 하이픈 조합을 권장한다.

로그인 화면 접근에 대한 참고

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. 위키 사용자 계정 생성

공개 회원가입을 차단했으므로 관리자가 계정을 생성한다.

  1. 관리자 계정으로 로그인한다.
  2. 주소창에서 https://위키주소/index.php/Special:CreateAccount로 이동한다.
  3. 사용자 이름, 비밀번호, 이메일 주소를 입력한다.
  4. 가능하면 임시 비밀번호를 이메일로 전송하고 최초 로그인 시 변경하도록 한다.

명령줄에서 계정을 생성해야 하는 경우 MediaWiki 설치 경로에서 유지보수 스크립트를 사용할 수 있다.

# MediaWiki 설치 경로로 이동
cd /var/www/mediawiki

# 현재 버전에 포함된 계정 생성 스크립트의 사용법 확인
php maintenance/createAndPromote.php --help

# 일반 사용자 계정 생성 예시
# 실행 후 암호를 입력하며, 실제 사용자 이름으로 변경한다.
php maintenance/createAndPromote.php wikiuser01

명령줄 옵션은 MediaWiki 버전에 따라 차이가 있을 수 있으므로 반드시 --help 결과를 먼저 확인한다. 명령 기록에 비밀번호가 남지 않도록 비밀번호를 명령행 인수로 직접 입력하지 않는다.

6. 사용자에게 편집 그룹 지정

웹 관리 화면에서 지정

  1. 관리자 계정으로 로그인한다.
  2. 특수:사용자권한 또는 Special:UserRights로 이동한다.
  3. 편집 권한을 부여할 사용자 이름을 입력하고 불러온다.
  4. 사용자 그룹 목록에서 wiki-editor를 선택한다.
  5. 변경 사유를 입력한다. 예: 기술 문서 편집 담당자 지정
  6. 사용자 그룹 저장 버튼을 누른다.

직접 접근 주소 예시:

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. 첨부 파일 보안 주의사항

중요: $wgGroupPermissions['*']['read'] = false;는 위키 문서 열람을 제한하지만, 기본 구성에서는 업로드 파일의 직접 URL까지 보호하지 못한다. 파일 URL을 아는 외부 사용자가 이미지나 첨부 파일에 접근할 가능성이 있다.

첨부 파일도 비공개로 운영하려면 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와 데이터베이스를 백업한다.
  • 비공개 자료가 첨부되는 경우 업로드 파일 직접 접근 차단을 별도로 검증한다.

참고 자료