1

ファイル書き込みの許可拒否に関する問題があります。問題は、webapps フォルダーの下にファイルを書き込もうとしたときに、この拒否を思いついたということです。しかし、/tmp フォルダに同じファイルを書き込んでも問題ありません。特に1つと各フォルダーの許可について、これら2つの違いを確認しました。drwxr-xr-x ルート ルート /tmp drwxr-xr-x ルート ルート /usr drwxr-xr-x ルート ルート /usr/share drwxr-xr-x ルート ルート /usr/share/tomcat7-examples drwxr-xr と同じ-x ルート ルート /usr/share/tomcat7-examples/source drwxr-xr-x ルート ルート /usr/share/tomcat7-examples/source/webapps drwxr-xr-x ルート ルート /usr/share/tomcat7-examples/source /webapps/brain03 drwxr-xr-x ルート ルート /usr/share/tomcat7-examples/source/webapps/brain03/WEB-INF drwxr-xr-x ルート ルート /usr/share/tomcat7-examples/source/webapps/brain03 /WEB-INF/bbs

/usr/share/tomcat7-examples/source/webapps/brain03/WEB-INF/bbs にないのに、/tmp の JSP ページからファイルを保存できるのはなぜですか?

とにかく、「chown -R tomcat7.tomcat7 /usr/share/tomcat7-examples/source」でこの問題を解決しました。しかし、謎は立っています。各ディレクトリに特別な隠しアクセス制御タグはありますか?

以下は、関連する html および jsp ソース コードです。

    <HTML>
    <HEAD>
        <META http-equiv="Content-Type" content="text/html;charset=euc-kr">
        <TITLE>BBS Writing</TITLE>
    </HEAD>
    <BODY>
        <H2>Write here</H2>
        <FORM ACTION=BBSPost_new.jsp METHOD=POST>
            Name: <INPUT TYPE=TEXT NAME=NAME><BR>
            Title: <INPUT TYPE=TEXT NAME=TITLE><BR>
            <TEXTAREA COLS=30 ROWS=5 NAME=CONTENT></TEXTAREA><BR>
            <INPUT TYPE=SUBMIT VALUE='Save'>
        </FORM>
    </BODY>
</HTML>
<%@page contentType="text/html; charset=euc-kr"%>
<%@page import="java.io.*, java.util.Date"%>
<%
    request.setCharacterEncoding("euc-kr"); 
    String name = request.getParameter("NAME");
    String title = request.getParameter("TITLE");
    String content = request.getParameter("CONTENT");
    Date date = new Date();
    Long time = date.getTime();
    String filename = time + ".txt";
    String result;
    PrintWriter writer = null;
    try {
        String filePath = application.getRealPath("/WEB-INF/bbs/" + filename);
        writer = new PrintWriter(filePath);
        writer.printf("Title: %s %n", title);
        writer.printf("Writer: %s %n", name);
        writer.println(content);
        result = "SUCCESS";
    }
    catch (IOException ioe) {
        out.println(ioe.getMessage());
        result = "FAIL";
    }
    finally {
        try {
            writer.close();
        } 
        catch (Exception e) {
        }
    } 
    response.sendRedirect("BBSPostResult.jsp?RESULT=" + result); 
%>
4

1 に答える 1

0
String filePath = application.getRealPath("/WEB-INF/bbs/" + filename);

推測ですが、/WEB-INF を書き込もうとしているという事実は、WEB-INF がドライブのルートにあることを意味します。

于 2015-02-20T23:44:03.520 に答える