itzg / docker-minecraft-server

Docker image that provides a Minecraft Server that will automatically download selected version at startup
https://docker-minecraft-server.readthedocs.io/
Apache License 2.0
9.5k stars 1.55k forks source link

java.io.FileNotFoundException: ./world/data/dsurround.dat (Permission denied) #840

Closed SkyBlade1978 closed 2 years ago

SkyBlade1978 commented 3 years ago

I believe this error originates from the Dynamic Surroundings mod.

The file it is trying to access is there, I can see it on the volume.

The full stack trace is;

[13:04:47] [Server thread/INFO] [STDERR]: [net.minecraft.world.storage.MapStorage:func_75747_a:99]: java.io.FileNotFoundException: ./world/data/dsurround.dat (Permission denied) [13:04:47] [Server thread/INFO] [STDERR]: [net.minecraft.world.storage.MapStorage:func_75747_a:99]: at java.io.FileOutputStream.open0(Native Method) [13:04:47] [Server thread/INFO] [STDERR]: [net.minecraft.world.storage.MapStorage:func_75747_a:99]: at java.io.FileOutputStream.open(FileOutputStream.java:270) [13:04:47] [Server thread/INFO] [STDERR]: [net.minecraft.world.storage.MapStorage:func_75747_a:99]: at java.io.FileOutputStream.(FileOutputStream.java:213) [13:04:47] [Server thread/INFO] [STDERR]: [net.minecraft.world.storage.MapStorage:func_75747_a:99]: at java.io.FileOutputStream.(FileOutputStream.java:162) [13:04:47] [Server thread/INFO] [STDERR]: [net.minecraft.world.storage.MapStorage:func_75747_a:99]: at net.minecraft.world.storage.MapStorage.func_75747_a(SourceFile:94) [13:04:47] [Server thread/INFO] [STDERR]: [net.minecraft.world.storage.MapStorage:func_75747_a:99]: at net.minecraft.world.storage.MapStorage.func_75744_a(SourceFile:78) [13:04:47] [Server thread/INFO] [STDERR]: [net.minecraft.world.storage.MapStorage:func_75747_a:99]: at net.minecraft.world.WorldServer.func_73042_a(WorldServer.java:1059) [13:04:47] [Server thread/INFO] [STDERR]: [net.minecraft.world.storage.MapStorage:func_75747_a:99]: at net.minecraft.world.WorldServer.func_73044_a(WorldServer.java:1006) [13:04:47] [Server thread/INFO] [STDERR]: [net.minecraft.world.storage.MapStorage:func_75747_a:99]: at net.minecraft.server.MinecraftServer.func_71267_a(MinecraftServer.java:355) [13:04:47] [Server thread/INFO] [STDERR]: [net.minecraft.world.storage.MapStorage:func_75747_a:99]: at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:636) [13:04:47] [Server thread/INFO] [STDERR]: [net.minecraft.world.storage.MapStorage:func_75747_a:99]: at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:471) [13:04:47] [Server thread/INFO] [STDERR]: [net.minecraft.world.storage.MapStorage:func_75747_a:99]: at java.lang.Thread.run(Thread.java:748)

Thanks

itzg commented 3 years ago

I believe this error originates from the Dynamic Surroundings mod.

In that case it sounds like an issue to report with them.

The file it is trying to access is there, I can see it on the volume.

Using ls -l can you see if that's the only file owned or marked with different permissions than others? Have you changed any volume attachments that caused this to start failing?

SkyBlade1978 commented 3 years ago

Since their mod works fine normally, outside of a docker container, I doubt very much they would support this specific scenario, besides this looks like a general java i/o error so I could probably occur for any mod.

I haven't changed any volume attachments, I creates this volume on the docker command line.

image

itzg commented 3 years ago

Thank you for updating your comment.

Those files owned by root certainly explains the permission denied error. Without knowing how you have been iteratively been running the container, then it's hard to guess what happened. I'd say use a sudo chown minecraft:minecraft to fix those files.

The container startup script does a recursive chown before dropping root privileges; however, right now it only does that if it sees the top-level directory has an ownership mismatch. I could add an option to force the chown'ing.

SkyBlade1978 commented 3 years ago

Thanks,

I think that has fixed the dsurround error, getting some similar errors which I suspect are the same problem but in different files, I found the -R to recursively chown the whole folder structure, now I am down to the last few file access errors I think

SkyBlade1978 commented 3 years ago

Ok so, and I think these errors probably occur because the world was copied from a windows file system into the linux one and the permissions got lost in translation.

My guess is that as its trying to call the method createFileExclusively on the unix file system that its to do with the permissions on a folder, and at a guess maybe the config folder, but I don't know how to, in linux, set those up .


[16:23:27] [Server thread/INFO] [STDERR]: [net.minecraftforge.common.config.Configuration:load:1055]:   at java.io.UnixFileSystem.createFileExclusively(Native Method)
[16:23:27] [Server thread/INFO] [STDERR]: [net.minecraftforge.common.config.Configuration:load:1055]:   at java.io.File.createNewFile(File.java:1012)
[16:23:27] [Server thread/INFO] [STDERR]: [net.minecraftforge.common.config.Configuration:load:1055]:   at net.minecraftforge.common.config.Configuration.load(Configuration.java:835)
[16:23:27] [Server thread/INFO] [STDERR]: [net.minecraftforge.common.config.Configuration:load:1055]:   at net.minecraftforge.common.config.Configuration.runConfiguration(Configuration.java:133)
[16:23:27] [Server thread/INFO] [STDERR]: [net.minecraftforge.common.config.Configuration:load:1055]:   at net.minecraftforge.common.config.Configuration.<init>(Configuration.java:151)
[16:23:27] [Server thread/INFO] [STDERR]: [net.minecraftforge.common.config.Configuration:load:1055]:   at net.minecraftforge.common.config.Configuration.<init>(Configuration.java:111)
[16:23:27] [Server thread/INFO] [STDERR]: [net.minecraftforge.common.config.Configuration:load:1055]:   at zc_villages.server.ServerConfigFile.<init>(ServerConfigFile.java:10)
[16:23:27] [Server thread/INFO] [STDERR]: [net.minecraftforge.common.config.Configuration:load:1055]:   at zc_villages.server.ServerProxy.<clinit>(ServerProxy.java:17)
[16:23:27] [Server thread/INFO] [STDERR]: [net.minecraftforge.common.config.Configuration:load:1055]:   at java.lang.Class.forName0(Native Method)
[16:23:27] [Server thread/INFO] [STDERR]: [net.minecraftforge.common.config.Configuration:load:1055]:   at java.lang.Class.forName(Class.java:348)
[16:23:27] [Server thread/INFO] [STDERR]: [net.minecraftforge.common.config.Configuration:load:1055]:   at net.minecraftforge.fml.common.ProxyInjector.inject(ProxyInjector.java:71)
[16:23:27] [Server thread/INFO] [STDERR]: [net.minecraftforge.common.config.Configuration:load:1055]:   at net.minecraftforge.fml.common.FMLModContainer.constructMod(FMLModContainer.java:593)
[16:23:27] [Server thread/INFO] [STDERR]: [net.minecraftforge.common.config.Configuration:load:1055]:   at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source)
[16:23:27] [Server thread/INFO] [STDERR]: [net.minecraftforge.common.config.Configuration:load:1055]:   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[16:23:27] [Server thread/INFO] [STDERR]: [net.minecraftforge.common.config.Configuration:load:1055]:   at java.lang.reflect.Method.invoke(Method.java:498)
[16:23:27] [Server thread/INFO] [STDERR]: [net.minecraftforge.common.config.Configuration:load:1055]:   at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
[16:23:27] [Server thread/INFO] [STDERR]: [net.minecraftforge.common.config.Configuration:load:1055]:   at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)
[16:23:27] [Server thread/INFO] [STDERR]: [net.minecraftforge.common.config.Configuration:load:1055]:   at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)
[16:23:27] [Server thread/INFO] [STDERR]: [net.minecraftforge.common.config.Configuration:load:1055]:   at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)
[16:23:27] [Server thread/INFO] [STDERR]: [net.minecraftforge.common.config.Configuration:load:1055]:   at com.google.common.eventbus.EventBus.post(EventBus.java:275)
[16:23:27] [Server thread/INFO] [STDERR]: [net.minecraftforge.common.config.Configuration:load:1055]:   at net.minecraftforge.fml.common.LoadController.sendEventToModContainer(LoadController.java:243)
[16:23:27] [Server thread/INFO] [STDERR]: [net.minecraftforge.common.config.Configuration:load:1055]:   at net.minecraftforge.fml.common.LoadController.propogateStateMessage(LoadController.java:221)
[16:23:27] [Server thread/INFO] [STDERR]: [net.minecraftforge.common.config.Configuration:load:1055]:   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[16:23:27] [Server thread/INFO] [STDERR]: [net.minecraftforge.common.config.Configuration:load:1055]:   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[16:23:27] [Server thread/INFO] [STDERR]: [net.minecraftforge.common.config.Configuration:load:1055]:   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[16:23:27] [Server thread/INFO] [STDERR]: [net.minecraftforge.common.config.Configuration:load:1055]:   at java.lang.reflect.Method.invoke(Method.java:498)
[16:23:27] [Server thread/INFO] [STDERR]: [net.minecraftforge.common.config.Configuration:load:1055]:   at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
[16:23:27] [Server thread/INFO] [STDERR]: [net.minecraftforge.common.config.Configuration:load:1055]:   at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)
[16:23:27] [Server thread/INFO] [STDERR]: [net.minecraftforge.common.config.Configuration:load:1055]:   at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)
[16:23:27] [Server thread/INFO] [STDERR]: [net.minecraftforge.common.config.Configuration:load:1055]:   at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)
[16:23:27] [Server thread/INFO] [STDERR]: [net.minecraftforge.common.config.Configuration:load:1055]:   at com.google.common.eventbus.EventBus.post(EventBus.java:275)
[16:23:27] [Server thread/INFO] [STDERR]: [net.minecraftforge.common.config.Configuration:load:1055]:   at net.minecraftforge.fml.common.LoadController.distributeStateMessage(LoadController.java:145)
[16:23:27] [Server thread/INFO] [STDERR]: [net.minecraftforge.common.config.Configuration:load:1055]:   at net.minecraftforge.fml.common.Loader.loadMods(Loader.java:559)
[16:23:27] [Server thread/INFO] [STDERR]: [net.minecraftforge.common.config.Configuration:load:1055]:   at net.minecraftforge.fml.server.FMLServerHandler.beginServerLoading(FMLServerHandler.java:98)
[16:23:27] [Server thread/INFO] [STDERR]: [net.minecraftforge.common.config.Configuration:load:1055]:   at net.minecraftforge.fml.common.FMLCommonHandler.onServerStart(FMLCommonHandler.java:328)
[16:23:27] [Server thread/INFO] [STDERR]: [net.minecraftforge.common.config.Configuration:load:1055]:   at net.minecraft.server.dedicated.DedicatedServer.func_71197_b(DedicatedServer.java:121)
[16:23:27] [Server thread/INFO] [STDERR]: [net.minecraftforge.common.config.Configuration:load:1055]:   at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:431)
[16:23:27] [Server thread/INFO] [STDERR]: [net.minecraftforge.common.config.Configuration:load:1055]:   at java.lang.Thread.run(Thread.java:748)```
SkyBlade1978 commented 3 years ago

What I'll do, is now I'm down to just these few config I/O errors I'll do some hands on play testing and see if these errors actually cause a problem or if they're just mods trying to reach outside the container to load external files..

itzg commented 3 years ago

You can also do a recursive chown by adding -R.

SkyBlade1978 commented 3 years ago

I think it is working now, I won't be 100% sure without a lot more testing, you could close this but I think it should be converted to a feature request for the container to automatically script the change ownership and change permissions commands on the files in the volume as I expect I won't be the last person to hit permissions issues especially when moving a MC instance from a windows volume

github-actions[bot] commented 3 years ago

This issue is stale because it has been open 30 days with no activity. Please add a comment describing the reason to keep this issue open.