<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _fix_permissions(self):
 """ Because docker run as root we need to fix permission and ownership to allow user to interact with it from their filesystem and do operation like file delete """


        state = yield from self._get_container_state()
        if state == "stopped" or state == "exited":
            # We need to restart it to fix permissions
            yield from self.manager.query("POST", "containers/{}/start".format(self._cid))

        for volume in self._volumes:
            log.debug("Docker container '{name}' [{image}] fix ownership on {path}".format(
                name=self._name, image=self._image, path=volume))
            process = yield from asyncio.subprocess.create_subprocess_exec(
                "docker",
                "exec",
                self._cid,
                "/gns3/bin/busybox",
                "sh",
                "-c",
                "("
                "/gns3/bin/busybox find \"{path}\" -depth -print0"
                " | /gns3/bin/busybox xargs -0 /gns3/bin/busybox stat -c '%a:%u:%g:%n' > \"{path}/.gns3_perms\""
                ")"
                " && /gns3/bin/busybox chmod -R u+rX \"{path}\""
                " && /gns3/bin/busybox chown {uid}:{gid} -R \"{path}\""
                .format(uid=os.getuid(), gid=os.getgid(), path=volume),
            )
            yield from process.wait()