우분투2012. 7. 7. 21:16

FTP 를 이용해서 계정에 파일을 올리게 되면 FTP 접속시 입력한 아이디가 바로 소유자가 됩니다. 하지만 PHP 를 이용해서 생성된 파일 또는 디렉토리는 일반적으로 nobody 소유가 됩니다.

 

이 소유권은 웹서버가 구동될때 지정된 소유권자 인데요. Apache 의 httpd.conf 파일을 보시면...

 

user nobody

group nobody

 

라는 설정이 있습니다. 이는 아파치 데몬이 작동할 때 nobody 라는 사용자로 작동하라는 것입니다. 그렇기에 Apache 서버하에 작동하는 PHP 역시 같은 사용자가 적용이 되겠지요.

그래서 PHP를 이용해서 파일 또는 디렉토리를 생성하면 nobody 소유가 됩니다.

 

이런 문제로 인해 프로그램시 주의해야 할 부분이 생깁니다.

 

첫번째로 PHP 에서 생성할 파일 또는 디렉토리가 저장될 디렉토리는 nobody 에게 쓰기 권한이 있어야 합니다. 그렇기 때문에 일반적으로 저장될 디렉토리는 707 퍼미션을 주게됩니다.

 

두번재로 PHP를 이용해서 파일 또는 디렉토리를 생성했을 경우 PHP 스크립트를 이용해서 해당 파일 또는 디렉토리의 권한을 707 로 변경해 주어야 합니다. 이는 nobody 소유의 파일이 생성된 상태에서 실제 계정 사용자가 ftp 로 접속해서 파일을 삭제하려 할때 nobody 소유의 파일은 삭제가 되지 않는 현상이 나타납니다.

 

그리고 질문에 다른 계정에서도 올린 자료에 접근을 할 수 있어야 한다고 하셨는데 이 역시 두번째에 해당합니다. nobody 소유이기 때문에 nobody 를 제외한 다른 모든 사용자에게 접근 권한이 있어야 하기 때문이죠. 그래서 퍼미션을 707로 변경해 주셔야 합니다.

 

음 도움이 되었길 바라며 추가 질문이 있으시면 http://cafe.naver.com/phpcafe 에 질문 주셔도 됩니다. 그럼 즐거운 하루되세요...^^/

 


'우분투' 카테고리의 다른 글

crontab 사용법 및 php 실행  (0) 2012.07.26
vsftpd 폴더 생성시 권퐇  (0) 2012.07.08
리눅스 권한 퍼미션 보는 법  (0) 2012.07.07
mysql 설정 영진이가 약간 수정  (0) 2012.07.07
우분투 APM설치부터 XE세팅까지  (0) 2012.07.07
Posted by 다오나무