- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个小型 java web 应用程序(grails),部署在 tomcat 8 下,我想使用 sudo 在本地服务器上执行脚本。在常规 debian/ubuntu 服务器上,我所要做的就是使用 visudo 允许 tomcat 用户在该特定脚本上无需密码即可执行 sudo,并且一切都按预期运行。当我尝试在树莓派(型号 3b+、raspbian 10 - buster)上安装相同的 war 文件时,从 SD 卡启动,脚本的执行总是失败,并出现错误“sudo: effective uid is not 0, is/usr/bin/sudo on a file system with the 'nosuid' option set or an NFS file system without root权限”。
为了解决这个问题,我编写了另一个小的可执行 jar 来执行相同的功能(即尝试使用 sudo 启动脚本)。当以“pi”和“tomcat8”用户交互登录(bash)时,该测试程序按预期工作(我必须为 tomcat8 用户设置一个 shell 才能获得交互式登录)。然后我使用 strace 尝试诊断问题。我可以从中收集到的是,在 tomcat8 服务下运行时尝试启动 sudo 时 getuid() 返回 111 (tomcat8),但在 bash 中运行时将返回 0。
我还编写了一个小型 C 程序,它只调用 getuid() 并打印结果。如果我在 tomcat8 用户下交互运行它(即 sudo su tomcat8),当我在没有 sudo 的情况下运行它时,它会打印“111”,而当我使用 sudo 运行它时,它会打印“0”。当我尝试从网络应用程序(使用进程生成器)启动此程序时,如果在没有 sudo 的情况下运行命令,我会收到“111”,但当命令以 sudo 为前缀时,我会收到“有效 uid 不是 0 ...”错误。
我检查了挂载,有很多挂载具有“nosuid”属性,但没有/usr/bin 所在的根“/”目录,并且/usr/bin/sudo 看起来具有正确的权限:
pi@raspberrypi:~/dev $ ls -l /usr/bin/sudo
-rwsr-xr-x 1 root root 147560 Jan 13 2019 /usr/bin/sudo
无奈之下,我尝试了其他一些方法来看看它们可能会产生什么效果:* 添加tomcat8用户到adm、sudo等组* 尝试在没有 nosuid 属性的情况下重新挂载其他挂载,尽管我无法重新挂载大约 6 个挂载,因为这些挂载正在使用中。
这些似乎都没有任何效果。
所以在我看来,tomcat8 用户可以在 bash 中使用 sudo,但不能在作为守护进程运行时使用。谁能给我一些关于这里发生的事情的想法?是否有办法诊断或跟踪操作系统如何确定有效的 uid?
其他可能重要的事情:我通过 apt 安装了 openjdk-8-jdk 和 tomcat8,即使 raspbian 使用 systemd,tomcat8 也是通过 init.d 脚本启动的。不确定这是否会导致 uid 问题。
如果是SD卡有一些带有nosuid属性的挂载导致问题,为什么交互运行时不会失败?
最佳答案
事实证明,这是守护进程启动方式的问题,可能是由于 Debian 10 启动守护进程进程的方式发生了变化。我删除了 tomcat init.d 脚本,并将其替换为 systemd 单元文件,并包含以下属性:
[Service]
...
NoNewPrivileges=false
AmbientCapabilities=CAP_SETGID CAP_SETUID
SecureBits=keep-caps
这允许守护进程实际成功调用 setUid(0)。
关于java - 须藤: effective uid is not 0 when running under tomcat service,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58177956/
我希望在某些环境中使用用户名和密码保护某个角色,但在其他环境中甚至不需要提示。如果我在 tomcat web.xml 中有一个 auth-constraint,我可以创建一个具有“匿名”访问权限的角色
我正在使用 Tomcat jmxproxy 和状态来监视 Web 应用程序,但是 jmxproxy 页面中有很多无用的信息,并且其中没有任何信息,例如事件连接数。有谁知道如何过滤 jmxproxy 页
是否可以通过执行 JSP 来重启 Tomcat6? 这是因为我想通过使用网络服务器远程部署应用程序的更改。 部署脚本是用 bash 编写的,它从 svn 中 check out 最新版本,然后将其打包
我有一个包含 2 个子项目(后端和 ui)的 gradle 项目。 Ui由gradle tomcatRunWar完美启动.后端有我们在生产地点的配置描述符/conf/Catalina/localhos
发现 XAMPP 控件认为 tomcat 正在运行但无法停止它的问题。 在catalina下的tomcat logs目录下可以找到如下错误 “严重:无法联系 localhost:8005。Tomcat
PuppetLabs 在 PuppetForge 上有一个模块,用于部署 Tomcat 及其配置。 https://forge.puppet.com/puppetlabs/tomcat Tomcat
我有一个部署到 Tomcat 实例中的 Web 应用程序。我希望能够将 tomcat 配置为在 Tomcat 本身启动时不自动启动该应用程序。但是,我确实希望启动 Tomcat 管理器,以便我可以根据
操作系统:windows XP。 我已经安装了 Tomcat 7.0.25,文件夹“manager”位于 webapps 文件夹中。 我已阅读此处的文档:http://tomcat.apache.or
我们在 server.xml 文件中启用了以下访问日志模式 pattern="%h %H %l %u %t "%r" %s %b location: %{location}o"。 有人可以帮助理解模式
我最近开始使用 tomcat,我有一个关于 Tomcat 请求路由/映射的查询。 假设我在 tomcat 服务器中部署了四个应用程序 A、B、C 和 D,当有请求到来时,tomcat 如何知道要调用哪
我在我的计算机上使用 Tomcat,它可以通过端口 8080 访问。我想要的是我应该能够使用我的计算机的 IP 地址访问我的 Tomcat 服务器页面。我以前读过很多主题,但找不到一个可以帮助我的主题
我有一个 tomcat 7 服务器和一个 postgreSQL 9.0 数据库。我用它来为地理网络元数据编辑器设置开发环境。一切都是根据 geonetwork 网站教程设置的。我在将服务器与数据库连接
我的服务器有 物理 ip 和 虚拟 ip 由网络管理员设置。在我安装的服务器内部 Apache tomcat 7.0.29并创建一个网络应用程序。当我运行 wget http://:8080/xxx或
我有多个应用程序在不同的端口上运行(tomcat 实例) 都有相同的CATALINA_HOME 目前我必须在所有实例中部署和安装psi 探针,并在不同的窗口中分别监控每个端口。 我如何在一个单一的探测
based on this question 我尝试将 Tomcat 控制台输出重定向到一个文本文件,它对我的 Web 应用程序工作正常,但问题是,每次 Tomcat 启动时它都会被覆盖。我需要创
我需要阐明我的问题。问题是:有什么方法可以影响 Tomcat 为特定部署的应用程序分配多少堆内存?更多详细信息 - 我如何为已部署的应用程序设置特定的 Java 选项(考虑我想为每个应用程序设置特殊的
应用服务器内部的类加载机制是开发人员常见的困惑来源;这就是为什么我想问一个关于 tomcat 7 服务器中这个机制的问题:我有一个网络应用程序 sample.war,它依赖于 jgroups 库, 放
尝试将嵌入式 Tomcat 5 迁移到嵌入式 Tomcat 7。在启动过程中获取 NPE。 我扩展了 Embedded 类并按照正确的顺序执行所有建议的初始化。 NPE 发生在这里: Caused b
我可以使用随附的 start.sh 文件启动 tomcat,但是是否有任何参数可以用来执行以下操作: 在指定的根目录启动 Tomcat 服务 强制 Tomcat 在浏览器中拉出指定的主页 谢谢 最佳答
我在两台 diff 机器 tomcat 服务器上做一个简单的集群配置。每次我启动 tomcat 时,我都会收到一个错误,就像集群组中没有事件成员一样。我正在附加集群配置
我是一名优秀的程序员,十分优秀!