개인위키에서페이지수정권한

FrontPage|FindPage|TitleIndex|RecentChanges| UserPreferences P RSS

1. 노스모크 모인모인 수정하기

1.1. 다른 사람이 편집 불가한 개인 위키

moin_config.py에서 아래 항목을 찾아서(없다면 새로 만들면 됩니다) 고쳐줍니다.

edit_requires_login=1
access_requires_login=0
root_name=("Khakii",)
excluded_actions_for_general_users=('edit','rename','saverename','savepage',\
                                    'DeletePage','CleanHistories','DeleteUploadedFile',\
                                    'UploadFile')

를 추가합니다. root_name에는 허용할 아이디 목록이 들어갑니다. ""으로 아이디를 둘러싸야하고, , 으로 구분해야 합니다.

만약 현재 사용 중인 모인모인이 excluded_actions_for_general_users를 지원하지 않는다면(노스모크 모인모인 최신 버젼에서 지원하는 걸로 기억하는데 확인은 안했습니다.) 다음 파일들을 수정하세요.

#wikiaction.py에서 def getHandler를 찾은 다음 함수가 시작하는 맨 윗줄에 아래 내용을 추가
    if user.current.name not in config.root_name and action in config.excluded_actions_for_general_users:
        return None

#action/__init__.py에서 맨 마지막 줄에 아래 내용을 추가
if user.current.name not in config.root_name:
    for action in config.excluded_actions_for_general_users:
        try:
            extension_actions.remove(action)
        except ValueError:
            pass

이 때, user.current.name을 사용하는 파일에는 맨 위에 from MoinMoin import user가 있어야 합니다.

그리고 소스를 수정할 때는 파이썬 특유의 들여쓰기를 주의해야 합니다.

2. 설정 방법

개인위키를 만들었을때, 오직 자신만이 접근할 수 있는 위치에 설치할 수도 있겠고 (자기 방의 컴퓨터에 설치한다던가, 웹서버 인증을 요구한다던가 등), 일반적인 홈페이지처럼 누구나 접근 가능하게 설치할 수도 있겠습니다. 후자의 경우, 페이지수정권한을 어찌할 것인가가 고민거리가 됩니다. 물론 자신이 만든 위키의 목적이 어떤 주제에 관한 토론이라던가, 정보의 공유 등을 위한 것이라면 당연히 페이지 수정권한을 개방하여 누구나 수정이 가능하게 만들어야겠지요.

그러나 만일 자신이 설치한 위키가 말 그대로 "개인홈페이지"를 위한 것이라면, 이 경우는 어떻게 될까요? 제가 지금 이것 때문에 계속 고민하고 있습니다. 선택가능한 사항들을 비교해보면,

2.1. 완전폐쇄

2.2. 완전자유

주인의 의도와 다른 방향으로 상황이 전개될 수 있겠죠. 특히나 평소에 방문자가 많지 않은 곳이라면, 한두 명의 악의를 가진 사람에 의해서 엉망이 되어 버리지 않을까 걱정이 되기도 합니다. 노스모크에서도 가끔씩 그런 사람들이 찾아오나 보던데, 이곳은 한명의 악행을 백명의 의인들이 무력화할 수 있지만, 개인 홈페이지라면 두명의 악행을 한명의 주인이 끙끙대며 막아야 하는 일이 생기지 않을까... (기우인가요?)

남이 맘대로 수정하는 곳이 과연 "개인 홈페이지"로 남을 수 있는가.. 주인의 개성이나 의도, 그 홈페이지의 본모습이 변질되지 않을 수 있는가.. 이런 문제는 추상적인 얘기가 될 테니 논외로 하더라도 말이죠.


2.3. 주인만 수정

주인은 훨씬 간편하게 관리할 수 있지만, 일반 홈페이지보다 더 폐쇄적입니다. 위키로 만들면서 게시판을 같이 사용해도 따로 놀겠지요.

2.4. 회원제

친구에게만 수정권한을 주거나 (몇몇 위키엔진은 회원제가 가능합니다) 메일로 알려주는 방식. 귀찮지 않을까요?

2.5. 페이지별 접근제어

한글패치 버전에서만 가능한 건지는 모르겠는데, UseModWiki에는 페이지 별로 lock 을 걸 수가 있더군요. 그런데 이 lock 기능을 너무 믿지 말라는 말이 있어서 불안하긴 합니다. 기본적으로 수정을 아무나 할 수 있게 하고, 원하는 페이지에만 lock을 걸 수 있지요. lock을 걸었다 풀었다 하기가 귀찮을 뿐이지요. (UseModWiki 에서도 관리자로 로긴할 경우는 lock을 풀지 않아도 수정이 가능하네요) 그러고 보면 더 안전해지기만 한다면 제일 무난한 방법 같네요.

wikiX는 페이지별로 lock을 걸 수 있습니다. 그리고 그 페이지는 관리자만이 고칠 수 있지요. 일반인이 lock 걸린 페이지에 접근하면 소스보기까지만 됩니다. 관리자는 lock을 풀거나 하는 별도의 조치없이 바로 그 페이지를 고칠 수 있습니다. 관리자의 권한을 여러 명에게 줄 수도 있으니 관리하기도 편하지요.

2.6. 여러 위키

제 친구의 홈페이지의 경우는 UseModWiki를 두 디렉토리에 설치하여, 하나는 자신만이 수정할 수 있게, 하나는 아무나 수정할 수 있게 하였더군요. 그런데 한글로 된 페이지의 경우 InterWiki를 하려면 UTF-8을 꺼야하네요.


애초에 소망이 "내가 만든 페이지들을 방문객들이 보완하거나 새로운 페이지들을 만들어 연결해줬으면 한다. 그러나 안 좋은 방향으로 수정한다던가, 변경하지 말아야 할 부분을 실수이든 고의든 변경하는 일은 없었으면 좋겠다" 라는 것이기 때문에, 그 자체로 이미 딜레마에 빠져 있는 것인지도 모르겠네요. 성선설에 기초한.. :)

제가 한국의위키위키를 돌아다녀봤는데 주로 수정권한을 완전히 공개했더군요. 운영하시는 분들의 조언이나 경험담을 들어봤으면 합니다.

UseModWiki 의 경우, 관리자 암호와 편집자 암호가 따로 있는 것을 이용하여, 아무나 수정하는 것은 막아두고, 편집자 암호는 공개하여, 일단 자신의 아이디를 만들고(이 때 편집자 암호를 같이 넣으면 편집권한을 얻지요) 나서 페이지를 수정할 수 있게 해 두는 게 제일 나아 보이네요. 아이디를 만들어야 하는 귀찮은 과정을 한 번 거치게 하면 별 생각없이 나쁜 짓하는 것을 조금은 차단할 수 있지 않을까.. 그리고 절대 변경되지 않기를 바라는 페이지만 관리자암호를 사용하여 lock을 걸어두고요.

wikiX의 경우는 모든 history를 가지고 있다보니 DB용량이 꽤 됩니다. 그러나 테러를 당했을때 되돌리는것도 그만큼 간단하지요. 그런걸 두려워서 열어두지 않는다 란건. 글쎄요. 최악의 상황의 경우 DB덤프해둔것을 아예 원점으로 돌려버릴수도 있기 때문에 크게 신경쓰지 않습니다. 정기적인 DB백업만이 살길이다 란걸까요. MoinMoin 같은 경우는 약간 힘들겠네요. 하지만 이런 문제는 위키엔진고르기문제로 옮겨가는것이 아닐까요.

MoinMoin방식의 Text based 파일 백업은 히스토리가 늘어나면 계속 쌓여서 성능이 저하되는 문제가 있습니다. 이 때문에 RCS혹은 CVS를 백앤드로 하려는 시도가 있었다는 것을 메일링 리스트에서 보았는데 진전이 없는 듯 하네요. PhpWiki는 CVS를 백앤드로 사용할 수 있습니다. 이렇게 하면 현재 파일 + 백업본(CVS혹은 RCS백업) 두개가 있게 됩니다. CVS+SQL하면 좋을 듯 한데... --무신

UseModWiki 를 써서 개인 홈페이지를 운영하고 있습니다. 거의 모든 페이지는 열어두고, 몇 개 정도 개인적인 페이지만 lock을 걸어두었습니다. 제 홈에 놀러오는 사람들을 믿는 거죠. ^^; --지양

모인모인 위키를 이용해서 개인 홈에 딸린 장난식 위키를 운영하고 있습니다. 위키위키로 홈페이지를 만들기는 굉장히 편하지만, 디자인 상의 문제랄까 (^^;)하는 것들이 마음에 걸려서, 홈페이지는 html로, 그에 딸린 아는 사람들끼리 페이지 고치고 놀기 위해서 만들어 둔 위키는 구동 3일째인 지금 상당히 만족스럽게 돌아가고 있습니다. 테러위험에서 안전한 것은 아니지만, 굳이 그런 구석진 곳의 위키까지 와서 테러를 할 사람이 있을까.. 의심스럽기도 하고, 애초에 프론트 페이지에 언제 데이터가 지워져도 모른다 고 써놨으니. :) - Dizzy



"; if (isset($options[timer])) print $menu.$banner."
".$options[timer]->Write()."
"; else print $menu.$banner."
".$timer; ?> # # ?>