Apache Tomcat / 8.5.3 Manager App 403错误

时间:2016-07-03 17:53:51

标签: tomcat amazon-web-services tomcat8

我在aws上的ubuntu实例上运行了tomcat,我可以成功访问#include <stdio.h> #include <stdlib.h> //don't forget to include this struct student { int studID; int *marks; }; int main(void) { struct student s[100]; int i, j, val, flag=0; printf(" \n Please enter the students ID# followed by their grades. When done entering\n"); printf(" grades, enter 101 to start a new student or 102 to exit entry.\n\n\n "); for(i=0;i<10;) { printf("Enter student ID#: "); scanf("%d",&s[i].studID); s[i].marks = malloc(100*sizeof(int)); //allocating memory printf("\nFor student ID# %d\n",s[i].studID); for(j=0;j<100;j++) { printf("Enter grades: "); scanf("%d",&val); if(val>=0 && val<=100) { s[i].marks[j]=val; } else if(val==101) { s[i].marks[j]=-1; s[i].marks = realloc(s[i].marks,(j+1)*sizeof(int)); //resize break; } else if(val==102) { s[i].marks[j]=-1; s[i].marks = realloc(s[i].marks,(j+1)*sizeof(int)); //resize flag=1; break; } else { printf("\ninvalid entry\n"); j--; } } printf("\n\n----------\n\n"); i++; if(flag==1) break; } int num=i; for(i=0; i<num ; i++) { printf("\nInformation for student ID number %d:\n",s[i].studID); for(j=0; s[i].marks[j]!=-1; j++) printf("Grades: %d\n",s[i].marks[j]); } //freeing memory for(i=0; i<num ; i++) { free(s[i].marks); } } 页面但是当我点击int quantity = 0; public void test(){ decrement2(null); decrement(null); } public void decrement(View view) { quantity = quantity -1; TextView t1 = (TextView)(findViewById(R.id.quant1)); t1.setText(""+quantity); } public void decrement2(View view) { quantity = quantity -1; displayMessage(quantity); } public void displayMessage(int qty) { TextView t1 = (TextView)(findViewById(R.id.quant1)); t1.setText(""+qty); } 时,我会立即导航到If you're seeing this, you've successfully installed Tomcat. Congratulations!页面。< / p>

我编辑了Manager App文件以获得manager-gui角色,甚至让用户也拥有了manager-status,manager-script。

然后我使用403 Access Denied关闭服务器,导航到该页面以检查它是否实际关闭,然后tomcat-users.xml重新启动它。

但每当我点击bin/shutdown.sh按钮时,它甚至都没有显示用户名/密码框,而是直接进入403页面。

我错过了别的什么吗?

编辑:这是我的整个用户xml文件

bin/startup.sh

3 个答案:

答案 0 :(得分:6)

这帮助我实现了它。 Tomcat manager never asking me ID/PASSWORD

您需要将manager.xml添加到conf / Catalina / localhost

根据文件:

“默认的Tomcat安装包括Manager。要将Manager Web应用程序Context的实例添加到新主机,请在$ CATALINA_BASE / conf / [enginename] / [hostname]文件夹中安装manager.xml上下文配置文件”

在我的例子中,我有这条路径:/ opt / tomcat / conf / Catalina / localhost

manager.xml示例

<Context privileged="true" antiResourceLocking="false" docBase="${catalina.home}/webapps/manager">
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^.*$" /></Context>

答案 1 :(得分:2)

我认为解决此问题的另一种方法是编辑应用程序中默认存在的context.xml文件:

$ CATALINA_HOME / web应用/经理/ META-INF / context.xml中

在Tomcat 8.5之前,Valve在这里被注释掉了:

<Context antiResourceLocking="false" privileged="true" >
  <!--
    Remove the comment markers from around the Valve below to limit access to
    the manager application to clients connecting from localhost
  -->
  <!--
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
  -->
</Context>

但默认情况下,它似乎在8.5中没有注释。如8.5x迁移指南中所述,https://tomcat.apache.org/migration-85.html#Migrating_from_8.0.x_to_8.5.x

从8.0.x迁移到8.5.x

本节列出了8.0.x和8.5.x之间的所有已知更改,这些更改可能会在升级时导致向后兼容性问题。

...

网络应用

Manager和HostManager Web应用程序默认配置为RemoteAddrValve,用于限制对来自localhost的连接的访问​​。

所以,最重要的是,我认为您可以调整应用中的context.xml,或者创建一个新的manager.xml文件并调整该上下文元素,如上所述。

答案 2 :(得分:1)

您需要为Manager App创建上下文并允许从Tomcat 8.5.x

进行访问

$CATALINA_BASE/conf/Catalina/localhost/主页下创建文件管理器

manager.xml内容,请注意我的源代码是172.31.254.37(我的电脑),将此更改为您的来源:

<Context privileged="true" antiResourceLocking="false"
         docBase="${catalina.home}/webapps/manager">
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="172\.31\.254\.37" />
</Context>

确保您的用户/角色已在$CATALINA_BASE/conf/tomcat-users.xml

中定义
<user username="tomcat" password="tomcat" roles="manager-gui,manager-status"/>

亲切的问候,

Jacques de Jager