MediaWiki 권한 문서 원본 보기
←
MediaWiki 권한
둘러보기로 이동
검색으로 이동
문서 편집 작업을 수행할 권한이 없습니다. 다음 이유를 확인해주세요:
요청한 작업은 다음 중 하나의 권한을 가진 사용자에게 제한됩니다:
관리자
, 문서 편집자.
이 문서는 편집하거나 다른 작업을 할 수 없도록 보호되어 있습니다.
문서의 원본을 보거나 복사할 수 있습니다.
= MediaWiki 비공개 위키 및 사용자 그룹 권한 설정 가이드 = 본 문서는 MediaWiki 1.46 기준으로 다음 권한 정책을 구성하는 방법을 설명한다. * 비로그인 사용자는 위키 문서를 열람할 수 없다. * 로그인 사용자는 위키 문서를 열람할 수 있다. * 문서 작성 및 편집은 별도의 사용자 그룹에 속한 사용자만 가능하다. * 사용자 가입은 차단하고 관리자가 계정을 생성한다. == 1. 권한 구성 목표 == {| class="wikitable" ! 사용자 구분 ! 문서 열람 ! 문서 작성·편집 ! 계정 생성 |- | 비로그인 사용자(<code>*</code>) | 불가 | 불가 | 불가 |- | 일반 로그인 사용자(<code>user</code>) | 가능 | 불가 | 불가 |- | 편집 그룹(<code>wiki-editor</code>) | 가능 | 가능 | 불가 |- | 관리자(<code>sysop</code>) | 가능 | 가능 | 가능 |} <div class="mw-message-box mw-message-box-warning"> '''주의:''' <code>LocalSettings.php</code>를 수정하기 전에 반드시 백업한다. PHP 문법 오류가 발생하면 위키 전체가 열리지 않을 수 있다. </div> == 2. LocalSettings.php 백업 == MediaWiki 설치 경로가 <code>/var/www/mediawiki</code>인 경우의 예시이다. 실제 설치 경로에 맞게 변경한다. <syntaxhighlight lang="bash" line> # 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* </syntaxhighlight> == 3. 비공개 위키 및 편집 그룹 설정 == <code>LocalSettings.php</code>의 마지막 부분에 다음 설정을 추가한다. <syntaxhighlight lang="php" line> # ---------------------------------------------------------------------- # 비공개 위키 권한 정책 # ---------------------------------------------------------------------- # 비로그인 사용자의 문서 열람 차단 $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; </syntaxhighlight> <div class="mw-message-box mw-message-box-note"> <code>wiki-editor</code>는 기본 그룹이 아니라 이 설정에서 새로 정의한 사용자 그룹이다. 그룹 이름은 영문 소문자와 하이픈 조합을 권장한다. </div> === 로그인 화면 접근에 대한 참고 === <code>read</code> 권한을 차단해도 일반적으로 로그인 특수 문서는 접근할 수 있다. 환경 또는 확장 기능의 영향으로 로그인 화면까지 차단되는 경우에만 다음 예외를 추가한다. <syntaxhighlight lang="php" line> # 필요한 경우에만 비로그인 사용자에게 로그인 화면 열람 허용 $wgWhitelistRead = [ 'Special:UserLogin' ]; </syntaxhighlight> 기존에 <code>$wgWhitelistRead</code> 설정이 있다면 새 배열을 다시 선언하지 말고 기존 배열에 항목을 합쳐야 한다. == 4. 설정 파일 문법 검사 및 적용 == MediaWiki 권한 설정은 <code>LocalSettings.php</code>가 요청 시 로드되므로 별도의 DB 업데이트나 웹 서버 재시작이 일반적으로 필요하지 않다. 먼저 PHP 문법을 검사한다. <syntaxhighlight lang="bash" line> # PHP 문법 오류 확인 php -l /var/www/mediawiki/LocalSettings.php </syntaxhighlight> 정상 결과: <syntaxhighlight lang="text" line> No syntax errors detected in /var/www/mediawiki/LocalSettings.php </syntaxhighlight> PHP OPcache 설정에 따라 변경 사항이 즉시 반영되지 않으면 PHP-FPM을 재시작한다. <syntaxhighlight lang="bash" line> # 사용 중인 PHP-FPM 서비스 이름 확인 systemctl list-units --type=service | grep -E 'php.*fpm' # Rocky Linux 기본 서비스 이름 예시 systemctl restart php-fpm # 서비스 상태 확인 systemctl --no-pager --full status php-fpm </syntaxhighlight> == 5. 위키 사용자 계정 생성 == 공개 회원가입을 차단했으므로 관리자가 계정을 생성한다. # 관리자 계정으로 로그인한다. # 주소창에서 <code>https://위키주소/index.php/Special:CreateAccount</code>로 이동한다. # 사용자 이름, 비밀번호, 이메일 주소를 입력한다. # 가능하면 임시 비밀번호를 이메일로 전송하고 최초 로그인 시 변경하도록 한다. 명령줄에서 계정을 생성해야 하는 경우 MediaWiki 설치 경로에서 유지보수 스크립트를 사용할 수 있다. <syntaxhighlight lang="bash" line> # MediaWiki 설치 경로로 이동 cd /var/www/mediawiki # 현재 버전에 포함된 계정 생성 스크립트의 사용법 확인 php maintenance/createAndPromote.php --help # 일반 사용자 계정 생성 예시 # 실행 후 암호를 입력하며, 실제 사용자 이름으로 변경한다. php maintenance/createAndPromote.php wikiuser01 </syntaxhighlight> <div class="mw-message-box mw-message-box-warning"> 명령줄 옵션은 MediaWiki 버전에 따라 차이가 있을 수 있으므로 반드시 <code>--help</code> 결과를 먼저 확인한다. 명령 기록에 비밀번호가 남지 않도록 비밀번호를 명령행 인수로 직접 입력하지 않는다. </div> == 6. 사용자에게 편집 그룹 지정 == === 웹 관리 화면에서 지정 === # 관리자 계정으로 로그인한다. # <code>특수:사용자권한</code> 또는 <code>Special:UserRights</code>로 이동한다. # 편집 권한을 부여할 사용자 이름을 입력하고 불러온다. # 사용자 그룹 목록에서 <code>wiki-editor</code>를 선택한다. # 변경 사유를 입력한다. 예: <code>기술 문서 편집 담당자 지정</code> # 사용자 그룹 저장 버튼을 누른다. 직접 접근 주소 예시: <syntaxhighlight lang="text" line> https://위키주소/index.php/Special:UserRights </syntaxhighlight> === 편집 권한 회수 === 동일한 <code>특수:사용자권한</code> 화면에서 해당 사용자의 <code>wiki-editor</code> 선택을 해제하고 저장한다. 그룹을 제거해도 사용자 계정과 기존 편집 기록은 삭제되지 않는다. == 7. 사용자 그룹 이름 한글 표시 == 권한 화면에서 그룹 이름을 보기 좋게 표시하려면 위키의 시스템 메시지를 생성한다. {| class="wikitable" ! 생성할 시스템 메시지 문서 ! 입력 내용 |- | <code>MediaWiki:Group-wiki-editor</code> | 문서 편집자 |- | <code>MediaWiki:Group-wiki-editor-member</code> | 문서 편집자 |} 각 문서는 관리자 계정으로 생성한다. 내부 그룹 ID는 계속 <code>wiki-editor</code>를 사용하며 화면에 표시되는 명칭만 변경된다. == 8. 권한 적용 확인 == 권한은 서로 다른 브라우저 또는 시크릿 창을 사용하여 계정 유형별로 검사한다. {| class="wikitable" ! 시험 항목 ! 기대 결과 |- | 로그아웃 상태에서 문서 주소 접속 | 문서 내용이 표시되지 않고 로그인 요구 또는 권한 오류 표시 |- | 일반 사용자 로그인 후 문서 열람 | 문서 열람 가능 |- | 일반 사용자의 문서 편집 시도 | 편집 불가 |- | <code>wiki-editor</code> 사용자 로그인 후 기존 문서 편집 | 편집 및 저장 가능 |- | <code>wiki-editor</code> 사용자의 새 문서 작성 | 새 문서 생성 가능 |- | 관리자 계정의 사용자 계정 생성 | 계정 생성 가능 |} 현재 사용자에게 실제로 부여된 권한은 다음 특수 문서에서 확인한다. <syntaxhighlight lang="text" line> https://위키주소/index.php/Special:ListGroupRights https://위키주소/index.php/Special:UserRights </syntaxhighlight> == 9. 첨부 파일 보안 주의사항 == <div class="mw-message-box mw-message-box-error"> '''중요:''' <code>$wgGroupPermissions['*']['read'] = false;</code>는 위키 문서 열람을 제한하지만, 기본 구성에서는 업로드 파일의 직접 URL까지 보호하지 못한다. 파일 URL을 아는 외부 사용자가 이미지나 첨부 파일에 접근할 가능성이 있다. </div> 첨부 파일도 비공개로 운영하려면 MediaWiki의 <code>img_auth.php</code>와 웹 서버의 이미지 인증 구성을 별도로 적용해야 한다. Nginx 환경에서는 업로드 디렉터리를 직접 공개하지 않도록 구성한 뒤 내부 리다이렉트 방식으로 전달하는 구성이 필요하다. 문서 권한 설정만으로 첨부 파일까지 보호된다고 판단하면 안 된다. == 10. 장애 발생 시 복구 == 설정 추가 후 위키가 열리지 않으면 PHP 문법 오류 또는 변수 선언 오류를 우선 확인한다. <syntaxhighlight lang="bash" line> # 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 </syntaxhighlight> == 11. 운영 권장 사항 == * 일반 사용자에게 <code>sysop</code> 권한을 부여하지 않고 편집 전용 그룹만 사용한다. * 입사, 담당 변경, 퇴사 시 <code>wiki-editor</code> 그룹을 즉시 추가하거나 회수한다. * 사용자 그룹 변경 시 변경 사유를 반드시 기록한다. * 관리자 계정과 일반 편집 계정을 분리한다. * 권한 설정 변경 전 <code>LocalSettings.php</code>와 데이터베이스를 백업한다. * 비공개 자료가 첨부되는 경우 업로드 파일 직접 접근 차단을 별도로 검증한다. == 참고 자료 == * 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 [[분류:MediaWiki]] [[분류:서버 보안]] [[분류:권한 관리]]
MediaWiki 권한
문서로 돌아갑니다.
둘러보기 메뉴
개인 도구
로그인
associated-pages
문서
토론
한국어
보기
읽기
원본 보기
역사 보기
더 보기
검색
둘러보기
대문
최근 바뀜
임의 문서로
미디어위키 도움말
특수 문서 목록
도구
여기를 가리키는 문서
가리키는 글의 최근 바뀜
문서 정보