[첫화면으로]UseModWiki소스수정/화일관리용스크립트

마지막으로 [b]

wiki.pl 스크립트가 생성하는 데이타들은 소유자와 그룹ID 가 nobody 로 되어 있기 때문에 사용자가 수작업으로 삭제할 수 없다. root 권한을 얻을 수 있다면 상관없지만 그렇지 못한 경우 락 화일 등을 삭제할 방법이 없기 때문에 다른 방법이 필요하다.

다음의 두 스크립트는 UseModWiki 와는 별개로, 화일 관리를 위해서 사용하는 CGI 스크립트이다. 평소에는 퍼미션을 644 로 하여 보관하고 (/Download에 있는 패키지 안에도 644 퍼미션으로 들어 있다) 사용할 때만 755 로 실행퍼미션을 주어서 사용하라.

kimsnobody.pl

이것은 K3 버전에 이미 들어 있던 것이다. kimsBOARD 의 김성호님이란 분이 만든 스크립트로, nobody 소유의 화일을 삭제할 수 있다.

사용하기 위해서는, 다음과 같이 한다. 스크립트에 실행 퍼미션을 준 후 UseModWiki 데이타 디렉토리 아래에 스크립트를 두고, 웹브라우저에서 다음과 같이 실행한다.
http://자기계정/위키데이타디렉토리/kimsnobody.pl

데이타 디렉토리가 웹브라우저를 통해서 접근할 수 없는 곳에 있을 경우는, 스크립트를 적당한 곳에 위치시킨 후 아래와 같이 할 수도 있다.
http://자기계정/스크립트가있는디렉토리/kimsnobody.pl?action=view&value=위키데이타디렉토리

직접 해 보면 쉽게 사용법을 알 수 있다. View 로 디렉토리로 들어가고, Del 로 화일을 삭제한다.

restore.pl

이것은 주인장이 어줍짢은 실력으로 급조한 스크립트이다. 지정한 디렉토리를 복사하여 nobody 소유의 데이타를 만들 수 있다. 이런 게 과연 필요한 지는 모르겠는데..

홈페이지를 다른 서버로 옮기거나, 데이타가 날아가서 복원해야 하는 경우에, cp 명령어 등으로 복사할 경우 소유자가 nobody 가 아니라 자기 자신이기 때문에, wiki.pl 이 복원된 데이타를 수정하기 위해서는 별 수 없이 디렉토리에는 777, 화일에는 666 으로 퍼미션을 주어야 한다. (즉 타인에게 write 를 전부 허용해야 한다. Unix의Permission참조) 이게 아무래도 기분이 나쁘다는 것이 스크립트의 제작 동기이다.

홈페이지를 이전하는 경우를 예로 들면, 일단 기존의 홈페이지에서 위키 디렉토리를 통채로 복사해 온다. 그러면 새 계정에 복사된 데이타는 소유자가 자기로 되어 있을 것이다. 이 데이타 디렉토리를 임의의 임시 디렉토리에 따로 옮겨 두고, restore.pl 화일에 실행 퍼미션을 주고, 적당한 곳에 위치시킨 후 브라우저로 실행한다.

http://자기계정/스크립트가있는경로/restore.pl

실행이 되면 텍스트 입력 필드가 두 개가 나오는데 각각 자기가 위에서 가져온 디렉토리와, 위키가 데이타 디렉토리로 사용할 곳 ($DataDir 로 지정한) 의 경로를 각각 적어준다. 이 때 타겟 디렉토리는 "이미 존재하고" "스크립트가 쓸 수 있게 퍼미션이 지정되어 있으며(777)" "디렉토리 안에 아무 화일 또는 디렉토리도 없어야" 한다. 잘못해서 덮어쓰는 것을 막기 위함이다.

실행이 정상적으로 되면 nobody 소유의 데이타 디렉토리가 복원이 된다. 그 이후에는 자기가 복사해온 자기 소유의 디렉토리는 삭제해도 된다. 삭제하기에는 불안할 테니, 따로 보관해 두던가 :-)

플랫폼에 관계없이 화일을 복사할 수 있는 방법을 몰라서 그냥 일일이 화일을 읽어서 새 화일에 기록하는 방법을 사용했는데... 좀 더 세련된 방법을 아는 분의 제보를 기다린다. :-)


위키위키분류

마지막 편집일: 2003-3-10 11:10 pm (변경사항 [d])
1322 hits | Permalink | 변경내역 보기 [h] | 페이지 소스 보기