Synopsis
ERROR EC2109: agent reports: [bad root “[path]”: a directory path component is not accessible due to permission problems]
Description
This error message indicates that the user has included in emake root a path that is not accessible by the CloudBees Build Acceleration agent. Note that the agent runs as the root user (as it must, in order to mount filesystems), so the paths used in emake root must be accessible by the root user on each cluster host. Access is not required within those paths, only up to the path itself.
Reasons
Usually this error occurs when the user has specified an emake root that
is on an NFS share, but the NFS share is mounted with root squash
enabled, and some component of the emake root path has restrictive
permissions that allow the user herself to access the directory, but not
other users. For example, imagine an NFS share mounted at /net/home
with root squash enabled, with directories and permissions as follows:
|| Permissions || Owner || Path || | drwxr-xr-x | root | / | | drwxr-xr-x | root | /net | | drwxr-xr-x | root | /net/home | | drwx—— | build | /net/home/build | | drwx—— | build | /net/home/build/src |
If the user specifies /net/home/build/src
as the emake root, error
EC2109 will result, because the root user on the cluster host is not
able to access that directory – even though the user herself can access
that directory on both the emake client host and the cluster host.
Fixes
There are generally three ways to address this issue:
-
Disable root squash on the NFS mount point.
-
Add world/other read and execute permission to the directory components of the offending path (that is,
chmod a+rx
each component of the path). -
Use a higher directory as emake root. For example, in the scenario described above, the user could use
/net/home/build
instead of/net/home/build/src
, since the root user will be able to access that path sufficiently to mount a filesystem at that location.