왜 setgid를 쓰나 ?

보안상의 이유로 웹서버는 php 스크립트를 nobody, www, apache 혹은 httpd같은 특별히 제한된 계정으로 실행하게 됩니다. 이러한 이유로 모니위키 스크립트가 생성하게 되는 여러 파일 혹은 디렉토리는 이러한 특별한 계정의 소유가 되며 진짜 사용자가 소유하지 못하게 되는 일이 발생하고 어떤 경우는 이렇게 만들어진 파일을 읽을수도 지울 수도 없게 됩니다.

이런 경우를 막기 위해서 chmod 2777 대신에 chmod 777을 하는 경우도 있으나, 이로서 문제가 모두 해결되지는 않습니다.

이러한 것을 방지하기 위해서 모니위키가 특별한 파일을 생성하게 되는 몇몇 디렉토리에 대하여 그룹 아이디로 퍼미션을 가지게 할 수 있습니다. 이렇게 Setgid를 사용하도록 그룹 퍼미션을 주게되면 wiki.php에 의해 새롭게 만들어지는 모든 파일은 진짜 사용자의 그룹아이디와 같게 되며, 그룹 아이디가 가지는 퍼미션을 진짜 사용자도 누릴 수 있게되어 읽거나 고치거나 지울 수 있게 됩니다.

Setgid 퍼미션을 작동시키려면 간단히 "chmod 2777 dir 명령을 내리면 되는데, 모니위키가 여러 파일들을 만들게되는 디렉토리에 대해 이 명령을 내려주면 됩니다. 모니위키를 최초 설치하는 과정에서 setgid를 사용하려면 우선 모니위키 최상위 디렉토리를 먼저 chmod 2777을 해 줍니다. 아마 wiki.php가 들어있는 디렉토리가 될것입니다.

그런 다음 monisetup.php를 웹상에서 실행시키면 monisetup.php는 필요한 여러 디렉토리를 만들게 되며 이 디렉토리들은 setgid에 적용을 받게 되고, 이렇게 최초 setgid 설정을 마친 후에는 최상위 디렉토리의 퍼미션을 원래의 퍼미션으로 되돌려야 합니다. (보통 chmod 755로)

/!\ 모니위키는 config.sh/monisetup.php 설치 스크립트를 통해 setgid를 최초 설치할 때 부터 지원하고 있습니다.


Retrieved from http://memorecycle.com/w/wiki.php/HelpOnInstallation/SetGid
last modified 2016-03-09 20:57:18