UseModWiki소스수정/암호변경권한 페이지의 소스 보기
마지막으로 [b]
-- Loading page list... --
내용출력
로그인[l]
Diary
[f]
최근변경내역
[r]
페이지목록[i]
횡설수설[2]
게시판[3]
링크
수정할 수 없습니다: UseModWiki소스수정/암호변경권한 는 읽기 전용 페이지입니다.
== 다른 사용자의 암호를 변경할 수 있는 문제 해결 == * 환경설정에 들어가서, 아이디란에 다른 사람의 아이디를 넣으면 그 아이디의 환경설정을 변경해 버릴 수 있는 문제가 있었다. * 소스를 수정하여, 환경설정에 넣은 아이디가 이미 존재하는 아이디일 경우는, 그 아이디로 로긴한 사람만이 설정 변경을 할 수 있도록 하였다. * Jof:프로그래밍팁/Wiki 의 패치를 적용 * 이 경우, 암호를 잊어버리면 대책이 없다 ** 따라서, 관리자 권한을 가지고 있는 사람은 타인의 암호를 변경할 수 있도록 수정하였다. ** 관리자가 자신의 아이디로 로긴한 후, 환경설정에 들어가서, ID 란에 타인의 아이디를 입력하고, 암호를 지정해 준 후 저장을 하면 된다. **
주의!!! 이 때 반드시 "관리자암호" 란에 있는 "*" 마크를 지우고 공란으로 두어야 한다. 그렇지 않고 그냥 저장해버리면 관리자의 관리자암호가 그대로 적용되면서 타인에게 관리자권한을 주게 된다!!!
** 이런 위험에도 불구하고 굳이 관리자에게 변경 권한을 남기는 이유는, *** 패치 적용 이전에도 이미 존재하던 위험이고 *** 어쨌거나 user 디렉토리에 들어가서 암호를 까먹은 유저의 *.db 화일을 삭제하고 새로 만들도록 하는 것보다는 이 방법이 뽀대가 나기 때문이다. -_-; 게다가, root 권한이 없으면 유저 화일을 삭제하기도 쉽지 않다. : {{{#!vim perl sub DoUpdatePrefs { ... # 아래의 두 줄은 "사용자 아이디의 첫글자를 무조건 대문자로 만듦"에서 패치된 부분이다 # 원래코드에는 FreeToNormal( ) 로 둘러싸여 있지 않다. $UserID = &FreeToNormal(&GetParam("p_username", "")); $username = &FreeToNormal(&GetParam("p_username", "")); ### 다음 부분을 추가한다 my ($status, $data) = &ReadFile(&UserDataFilename($UserID)); if ($status) { if ((!(&UserIsAdmin)) && ($UserData{'id'} ne $UserID)) { print T('Error: Can not update prefs. That ID already exists and does not match your ID.'). '
'; print &GetCommonFooter(); return; } } ### 여기까지 if ($FreeLinks) { $username =~ s/^\[\[(.+)\]\]/$1/; # Remove [[ and ]] if added ... } }}} ---- [[위키위키분류]]
UseModWiki소스수정/암호변경권한
페이지로 돌아가기 |
다른 수정본 보기