KMD
313
2017-10-25 17:42:09 작성 2017-10-25 17:42:46 수정됨
1
930

서블릿에서 웹서버에 파일 생성시 권한 문제


엑셀파일을 톰캣이 설치된 서버에 생성후 클라이언트에서 다운로드하려고 합니다.

파일 생성하는 부분에서 권한문제가 발생합니다.

오류메시지 :  test.xlsx (허가 거부)


한 회원님께서 방법을 알려주셨는데요 아래와 같습니다.

1. 파일이 생성되는 경로 확인

  ex) /usr/local/service/webroot/upload 라면

2. 톰켓을 실행한 계정에 해당 디렉토리의 소유 부여

  ex) chown [USER][:[GROUP]] /usr/local/service/webroot/upload 

3. 소유주에게 쓰기 권한 부여

  ex) chown o+w /usr/local/service/webroot/upload 


일단은 파일이 써지지 않으니 root 로  로그인해서 배포된 AAA .war 파일 위치를

찾아보니 /var/lib/tomcat7/webapps/ 였습니다.

war 파일안의 java class 에서 특정 위치를 정하지 않고 엑셀파일을 생성하게 하였기에

webapps/AAA/ 안에 엑셀파일을 생성할 것이라 생각하였습니다.(이부분 맞나요?)


자바소스에서 파일 생성하는 코드:

FileOutputStream fileOut = null;

Workbook xlsxWb = new XSSFWorkbook();

File xlsFile =  new File("test.xlsx");

fileOut = new FileOutputStream(xlsFile);

xlsxWb.write(fileOut);

fileOut.flush();


그래서 webapps (하위포함)에 권한을 rwxrwxrwx 로 변경하였으나 여전히 엑셀파일 쓰기가 안됩니다. 

권한 변경이후 디렉토리 정보를 보면 해당 디렉토리에 모든 사용자에게 읽기쓰기실행 권한있고

해당 디렉토리 소유자도 tomcat7  인 상태입니다.

drwxrwxrwx  6  tomcat7  tomcat7   .....  17:09  webapps 


어디서 잘못이 있었는지 모르겠습니다.
해결방법을 알려주시면 감사드리겠습니다.

0
  • 답변 1

  • bayleys
    1k
    2017-10-26 09:21:21

    war 파일안의 java class 에서 특정 위치를 정하지 않고 엑셀파일을 생성하게 하였기에

    webapps/AAA/ 안에 엑셀파일을 생성할 것이라 생각하였습니다.


    아닙니다.

    아마도 tomcat bin 디렉토리에 파일 쓰려고 시도하고 있을겁니다.

  • 로그인을 하시면 답변을 등록할 수 있습니다.