Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
非root用户无法读取linux上具有文件写入/输出的JAVA应用程序_Java_Linux_Web Services_File_Tomcat - Fatal编程技术网

非root用户无法读取linux上具有文件写入/输出的JAVA应用程序

非root用户无法读取linux上具有文件写入/输出的JAVA应用程序,java,linux,web-services,file,tomcat,Java,Linux,Web Services,File,Tomcat,我们有一个在Tomcat9上运行的JavaWebService(由root用户安装) webservice为我们的客户端创建一个通用文件日志。问题是只有root用户才能读取和访问正在生成的文件 我的问题是,在默认情况下,我是否可以将输出文件更改为对所有用户都可读?(每次生成文件时不使用chmod) 它应该在代码级别还是在linux上配置 我读过这方面的文章 但是我们的一个老redhat服务器在其Web服务上没有代码级配置,并且工作正常 谢谢您不应该从“java io”的角度来看待这个问题。 这是

我们有一个在Tomcat9上运行的JavaWebService(由root用户安装)

webservice为我们的客户端创建一个通用文件日志。问题是只有root用户才能读取和访问正在生成的文件

我的问题是,在默认情况下,我是否可以将输出文件更改为对所有用户都可读?(每次生成文件时不使用chmod)

它应该在代码级别还是在linux上配置

我读过这方面的文章

但是我们的一个老redhat服务器在其Web服务上没有代码级配置,并且工作正常


谢谢

您不应该从“java io”的角度来看待这个问题。 这是一个用户权限问题。换句话说:可能您的tomcat服务器一开始就不应该以root运行

考虑创建一个用于运行tomcat实例的特殊用户。你可以在Ubuntu系统中找到如何做到这一点的指南。你最喜欢的搜索引擎肯定也知道你最喜欢的Linux发行版的类似链接

安全角度看,这可能更好:你真的希望人们攻击你的tomcat吗。。。如果他们成功的话,你会成为你系统的根吗

长话短说:您的问题不是tomcat中编写文件的java代码;然后系统上的其他用户无法访问这些文件。您的问题是您的tomcat服务正在以root身份运行!修正后者;你最初的问题也会得到解决


警告的最后一句话:我并不是说为您更改用户设置很容易。也许是这样;但是,特别是如果您的设置长时间使用“根”,那么您放置的其他东西很可能依赖于“成为根”。所以,“不做根”是正确的方向;但从现在的位置出发,这可能是一条痛苦的道路。

您发布的Oracle链接有一个指向“管理元数据”网页的链接。你读到了吗?是的,问题是我在想我是否应该在代码级别上做这件事。来自@GhostCat的答案可能就是答案。非常感谢你!我现在就读。一旦我解决了我的问题,我将更新答案。仅供参考:刚刚用一些警告的话更新了我的答案。我希望你不需要它们;但另一方面,;我想避免让你觉得更改设置可能是一件“简单”的事情。是的,这就是我现在的问题。看起来仅仅转换成tomcat用户有点棘手,尤其是当应用程序已经处于生产阶段时。谢谢