tomcat8程序执行命令权限问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了tomcat8程序执行命令权限问题相关的知识,希望对你有一定的参考价值。
参考技术A 为了在tomcat页面设置访问权限控制,在项目的WEB-INFO/web.xml文件中,进行如下设置:Java代码 复制代码
1. <web-app>
2. <!--servlet等其他配置-->
3. <security-constraint>
4. <web-resource-collection>
5. <web-resource-name>My Test</web-resource-name>
6. <url-pattern>/admin/*</url-pattern>
7. </web-resource-collection>
8. <auth-constraint>
9. <role-name>role1</role-name>
10. <role-name>tomcat</role-name>
11. </auth-constraint>
12. </security-constraint>
13. <login-config>
14. <auth-method>BASIC</auth-method>
15. <realm-name>My Test</realm-name>
16. </login-config>
<web-app>
<!--servlet等其他配置-->
<security-constraint>
<web-resource-collection>
<web-resource-name>My Test</web-resource-name>
<url-pattern>/admin/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>role1</role-name>
<role-name>tomcat</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>My Test</realm-name>
</login-config>
其中,<url-pattern>中指定受限的url,可以使用通配符*,通常对整个目录进行访问权限控制。
<auth-constraint>中指定哪些角色可以访问<url-pattern>指定的url,在<role-name>中可以设置一个或多个角色名。
使用的角色名来自tomcat的配置文件$CATALINA_HOME/conf/tomcat-users.xml。
<login-config>中设置登录方式,<auth-method>的取值为BASIC或FORM。如果为BASIC,浏览器在需要登录时弹出一个登录窗口。如果为FORM方式,需要指定登录页面和登录失败时的提示信息显示页面。 参考技术B 也就是说tomcat8将umask的值进行了修改,也就造成了上传文件权限的问题(这个问题从tomcat8才有,tomcat8以下版本是没有这个问题)
权限管理:文件特殊权限—SetUID
SetUID的功能
只有可以执行的二进制程序才能设定SUID权限
命令执行者要对该程序拥有x(执行)权限
命令执行者在执行程序时获得该程序文件属主的身份(在执行程序的过程中灵魂附体为文件的属主)
SetUID权限只在该程序执行过程中有效,也就是说身份改变只在程序执行过程中有效
passwd命令拥有SetUID权限,所以普通用户可以修改自己的密码(执行passwd实际写的是shadow文件,root用户可以对shadow文件读、写、执行)
[root@localhost chapter3]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 27856 Aug 9 2019 /usr/bin/passwd
[root@localhost chapter3]# ll /etc/shadow
----------. 1 root root 660 Apr 25 15:36 /etc/shadow
cat命令没有SetUID权限,所以普通用户不能查看/etc/shadow文件内容
[root@localhost chapter3]# ll /bin/cat
-rwxr-xr-x. 1 root root 54080 Aug 20 2019 /bin/cat
设定SetUID的方法
chmod 4755 文件名 # 4代表SUID
chmod u+s 文件名
给abc文件设置SetUID
[root@localhost chapter3]# touch abc
[root@localhost chapter3]# ll abc
-rw-r--r--. 1 root root 0 Jun 7 11:01 abc
[root@localhost chapter3]# chmod 4755 abc
[root@localhost chapter3]# ll abc
-rwsr-xr-x. 1 root root 0 Jun 7 11:01 abc
如果文件没有可执行权限(644),那么显示的是S,S表示没有作用
[root@localhost chapter3]# touch ABC
[root@localhost chapter3]# ll ABC
-rw-r--r--. 1 root root 0 Jun 7 11:05 ABC
[root@localhost chapter3]# chmod u+s ABC
[root@localhost chapter3]# ll ABC
-rwSr--r--. 1 root root 0 Jun 7 11:05 ABC
取消SetUID的方法
chmod 755 文件名
chmod u-s 文件名
给abc文件取消SetUID
[root@localhost chapter3]# chmod 755 abc
[root@localhost chapter3]# ll abc
-rwxr-xr-x. 1 root root 0 Jun 7 11:01 abc
危险的SetUID
关键目录应严格控制写权限,比如"/"、"/usr"等
用户的密码设置要严格遵守密码三原则
对系统中默认应该具有SetUID权限的文件做一列表,定时检查有没有这之外的文件被设置了SetUID权限
只要给vim赋予了SetUID权限,普通用户就可以使用vim修改所有系统文件,不光是用户密码文件,还有系统的启动文件,自动挂载文件等,所以这是很危险的
以上是关于tomcat8程序执行命令权限问题的主要内容,如果未能解决你的问题,请参考以下文章