1. web 상에서 파일 업로드(생성)시 로그인한 사용자의 소유로 변환하는 방법
web에서 [파일 찾아보기] 를 이용하여 파일을 업로드하게되면 기본적으로 Apache 구동 권한인 nobody 소유로 파일이 업로드 됩니다.
예) exam.txt 파일 업로드
-rw-r–r– 1 nobody nobody 15 3월 10 15:10 exam.txt
파일 업로드가 완료되면 shell_exec 함수를 이용하여 소유자 및 퍼미션을 바꾸어 줍니다.
예) 로그인한 사용자의 ID 가 $id 이고, 정해져있는 그룹이 $group, 업로드한 파일이 $filename 일때
$run = shell_exec(“chown $id.$group $filename”); // 소유자 및 소유그룹 변경
$run = shell_exec(“chmod 771 $filename”); // 퍼미션 변경
그런데 이렇게 하게되면 파일 개수(1개)마다 위와 같이 실행(2번)해주어야 하므로 파일개수가 많을 경우 처리가 느릴 수 있습니다.
그럴 경우 아래와 같이 업로드를 모두 한다음 한번에 소유자 및 퍼미션 변경 처리가 가능합니다.
$run = shell_exec(“chown $id.$group *”);
$run = shell_exec(“chmod 771 *”);
2. 각 사용자가 공유한 파일들만 web 상의 nobody (익명)사용자가 볼수 있도록 하는 방법
각 사용자는 자신이 가지고 있는 파일 리스트에서 공유할 리스트만 체크할수 있습니다.
체크를 하게 되면 공유 설정이 된 파일명은 DB에 저장이 됩니다.
나중에 nobody (익명) 사용자가 web으로 접속하여 공유된 파일을 불러오려고 하면
시스템내의 파일리스트와 DB에 공유설정을 해놓은 파일 리스트를 비교하여 일치할 경우에만 리스트 출력을 시킵니다.
그렇게 되면 nobody (익명) 사용자는 공유된 파일 목록 확인을 하고 다운로드 받을 수 있게 됩니다.
※ 참고
시스템 내의 파일리스트와 DB에 공유 설정을 해놓은 파일 리스트를 비교하지 않고
DB에 저장된 공유설정된 파일리스트만 보여줄 경우 아래와 같은 문제가 발생하므로
★★★반드시 시스템 내 파일리스트와 DB에서 공유설정된 파일리스트를 비교 해야합니다.★★★
이런 문제.. >>
기존 사용자가 web을 통하여 파일에 공유 설정을 해놓고 ftp 나 samba 를 통하여 파일을 삭제 했을 경우
DB에 공유된 파일이름은 삭제되지 않으므로 nobody (익명) 사용자가 web으로 접속하여 공유된 파일을 다운로드 할수 없음