호스팅 디렉토리별 적당한 퍼미션 부여

근래들어 이것저것 리눅스 개념을 잡는 도중에 무언가 머릿속에서 충돌이 발생하였습니다.
관련하여 질문과 함께 조언을 얻을수 있을련지 글을 남깁니다.

APM 설치후 웹서비스를 실행할때,
아파치를 보면 아파치데몬의 실행권한 설정부분이 있지 않습니까?
우분투의 경우 USER www-data, GROUP www-data로 기본설정되어 있습니다.

제가 서비스하려는 홈페이지의 루트 위치가 /home/$USER/public_html 과 같을때
$USER 디렉토리부터 그 이하의 디렉토리들은 모두 소유권이 $USER:$USER식으로 잡혀있습니다.

이 경우 아파치의 www-data 가 소유권을 가지지 못하고 있는겁니까?

관련하여 cafe24에 계정이 하나 있어 ssh로 접속해보니 그 곳의 소유권설정도 $USER:$USER와 같은 방식으로 잡혀 있습니다.

이 질문을 하게된 동기가 웹관련 애플리케이션을 검색해서 설치하다보면(대부분 외국포럼)
디렉토리와 파일의 소유권을 www-data:www-data로 변경하는 경우를 보아서 입니다.

보안상 www-data로 실행하는게 권한을 뺏겨도 안전하다고 대충 들은것 같은데, 소유권과 그룹을 www-data로 변경하면 해당 계정으로 FTP 접속후 업로드/다운로드/수정이 불가능해지더군요.
FTP 접속이 가능케하려면 그룹부분만 $USER로 변경하고 디렉토리 퍼미션이 기본 755인 것을 775로 변경하면 FTP상에서 문제가 없이 작동되긴 하는데 이게 의미가 있는 것인지도 모르겠구요.
그룹만 바꾸는것은 어짜피 보안상 $USER:$USER 일때 권한을 탈취당하는 것이나 매한가지일것 같아서요.

그리고 국내 XE보드나 그누보드 설치시 설치퍼미션을 777 혹은 707로 변경하라고들 하던데요.
707은 무슨의미인지?
그룹권한은 주지 않는게 무슨 차이가 있는건지요?
단순히 777을 권한을 서버에서 제한해둬서 707로 변경하라는 것일까요-_-?
머리가 복잡합니다.

안녕하세요.

너무 복잡하게 생각하실 것 없습니다. 일반적인 유닉스에서는 특별한 설정이 없는한, 계정을 생성하면 모든 유저는 자신의 이름과 같은 그룹에 속하게 되어있습니다. 이점은 유저를 생성하고나서 유저의 그룹을 www-data로 변경해주면 그만이지만, 말씀하신대로 아파치가 모든 유저의 파일들의 쓰기권한을 갖게된다면 그건 웹을 통한 접근 이외에도 보안상 위험이 없다고 할 수는 없겠죠. 크래커가 웹이 아닌 다른 경로로 시스템에 www-data 유저권한을 획득하게 된다면 의도하지 않는 결과를 불러올 수 있으니깐요.

모든 유저들을 위한 공통적인 웹서비스를 위해서라면 www-data:www-data를 주는게 상식적이긴 하지만, 이 경우 또한 마찬가지로 FTP로 접근시 파일의 업/다운이 불가능해진다는 점이 있습니다.

결국, "보안"과 "편리"는 서로 정 반대의 성향을 갖고있다고 봐야겠죠. 보안이 강해지면 그만큼 유저가 불편해지고, 유저가 편해질수록 그만큼 보안이 약해질 수도 있답니다.

707의 의미는, 7이 무슨 의미인지 몰라서 묻는 게 아니라 707 자체가 의미하는 바가 무엇이냐고 질문하신 것으로 이해하겠습니다. 사실 707 자체는 특별한 의미는 없구요, 707은 777과 같은 맥락으로 이해하시면 되겠습니다. 뭐 따지고보면 707이나 777이나 마찬가지죠.

저도 이러한 고민을 예전에 한 적이 있었는데, 제가 내린 해결책은 다음과 같습니다.

  1. 자주 쓰는 사용자 계정이나 혹은 관리자의 계정을 www-data 그룹에 추가한다.
  2. umask 값을 0002로 변경한다. (즉, 생성되는 모든 파일들의 퍼미션을 775로 하겠다는 얘기입니다)

이렇게 하면, 하나의 계정으로 웹과 관련된 대부분의 작업은 해결이 가능하시게 됩니다. 예를 들면, 파일 하나를 생성하게되면 파일의 퍼미션은 775가 되고, 소유권은 $USER:www-data가 되는 것이죠. 복수의 계정이 반드시 로그인을 해야하는 상황이라고 하더라도, 웹 관련 파일의 업/다운/수정의 경우는 Ajaxplorer 같은 웹 FTP 프로그램을 사용하시면 umask 0002 정도의 설정으로도 충분히 커버가 가능할 것으로 보입니다. 물론, www-data 그룹에 모든 사용자가 포함되어야겠죠.

도움이 되셨길 바랍니다.

말씀 감사합니다.
말씀하신 방법처럼 관리하는 경우를 많이 찾게 되었습니다.

이왕 찾아본 김에 cafe24처럼 호스팅업체에서 별다른 설정없이 어떻게 관련문제들을 해결하는지 궁금해 졌습니다.
기본 호스팅 디렉토리 퍼미션이 755 인 상태에서도 그누보드나 XE보드, 워드프레스등을 설치할때 디렉토리 퍼미션등을 변경하지 않아도 되는 이유가 무척 궁금해져서요.

검색해보니 아파치 데몬을 실행유저의 권한으로 돌리는 mod_ruid 라는게 있더군요.
보안상으로는 문제가 될것 같긴한데 편의성은 최고겟더라고요.
이 방법외에도 호스팅업체들이 사용하고 있을 방법이 있을지는 모르겠군요.

Cafe24에서 근무했던 동생한테 물어보니까, 회원용 화면에서 제로보드나 워드프레스 등의 설치버튼을 클릭하게 되면 소유권이나 퍼미션 등을 설치 전/후에 자동으로 처리해주는 스크립트를 돌려서 설치하고 처리해준다고 합니다. 보통 그런 일을 하는 사람들을 서버개발자 내지는 시스템 엔지니어라고 하는데요, 그러한 일들을 자동으로 처리해주기 위한 스크립트 (파이썬, 펄, BASH, AWK 등)을 미리 만들어놓고 그것들이 알아서 돌아가게끔 되어있다고 합니다.

유저 입장에서는 보이지 않게끔 백그라운드에서 돌아가니까 소유권이나 퍼미션 등을 손대지 않고 운영되는 것처럼 보이지만, 실은 상식적으로 생각해도 그렇게는 운영이 안되겠죠. 저도 그냥 생각만 그렇게 했었는데 실제로 물어보고 나니까 어느정도 궁금증이 풀리네요.

도움이 되셨길 바랍니다.

이 문제에 대해 귀하께서 신경 쓰셔야 하는 부분은 다른 곳에 있습니다.

아파치를 이용하는 경우 퍼미션, 소유권을 아무리 변경하고 고민해 보아도 httpd.conf의 설정을 따라 갑니다.
따라서 web에서 업로드 된 파일의 소유권은 항상 nobody(설정이 nobody라면)입니다.

이점을 해결하기 위해서 거의 대부분의 업체들이나 서버 관리자는 아파치 모듈을 이용합니다.
물론 질의 사항을 해결하기 위하여 3가지 정도의 모듈이 나와 있으나 모두 열거하기엔 그렇고
가장 많이 사용하는 것은 mod_ruid2 입니다.

이를 이용하면 소유권과 퍼미션 조정이 보다 용이함으로 공부해 두시는 것이 나을 것 입니다.

자세한 사항은 아래 링크를 참조하시기 바랍니다.

[url:3dvzwz1t]https://github.com/frenkel/mod_ruid2[/url:3dvzwz1t]

추가

일단 cafe24에 계신다는 분께서도 이 부분의 전문성은 없는 것 같습니다.(태클은 아닙니다.)
물론 말씀 대로 스크립트를 이용하여 소유권과 퍼미션을 조절해 주는 것이 가능은 하나 쓸 데 없는 일 입니다.
또한 그렇게 일 처리를 하는 서버 관리자는 관리자로서의 직능을 의심해 봐야 할 것 입니다.

""
일단 cafe24에 계신다는 분께서도 이 부분의 전문성은 없는 것 같습니다.(태클은 아닙니다.)
물론 말씀 대로 스크립트를 이용하여 소유권과 퍼미션을 조절해 주는 것이 가능은 하나 쓸 데 없는 일 입니다.
또한 그렇게 일 처리를 하는 서버 관리자는 관리자로서의 직능을 의심해 봐야 할 것 입니다.
"""

얼마나 대단한 분인지 모르겠지만 전문성을 운운하시는지?
서버 관리자로서의 직능을 의심해봐야 할 것 입니다?

거기다 (태클은 아닙니다) ? 일베 입니까? 남을 함부로 평가하는게 실력이 아주 출중하신 모양이신데, 그 실력으로 mod_ruid2 추천하는 것이라면
앗싸리 글을 올리지나 마세요. 라고 저도 말해도 되는거지요?

전문성 운운에 직능을 의심해봐야 한다라… 살다살다 별 피래미같은 새끼(욕은 아닙니다.) 의 글을 다 보네요.