in runAs-agent/src/main/java/jetbrains/buildServer/runAs/agent/LinuxFileAccessService.java [120:146]
private Result<AccessControlEntry, Boolean> tryExecChmod(@NotNull final AccessControlEntry entry, @NotNull final Iterable<String> chmodPermissions)
{
final String chmodPermissionsStr = StringUtil.join("", chmodPermissions);
if(StringUtil.isEmptyOrSpaces(chmodPermissionsStr)) {
return null;
}
final ArrayList<CommandLineArgument> args = new ArrayList<CommandLineArgument>();
if (entry.getPermissions().contains(AccessPermissions.Recursive)) {
args.add(new CommandLineArgument("-R", CommandLineArgument.Type.PARAMETER));
}
args.add(new CommandLineArgument(chmodPermissionsStr, CommandLineArgument.Type.PARAMETER));
args.add(new CommandLineArgument(entry.getFile().getAbsolutePath(), CommandLineArgument.Type.PARAMETER));
final CommandLineSetup chmodCommandLineSetup = new CommandLineSetup(CHMOD_TOOL_NAME, args, Collections.<CommandLineResource>emptyList());
try {
final ExecResult result = myCommandLineExecutor.runProcess(chmodCommandLineSetup, EXECUTION_TIMEOUT_SECONDS);
if(result == null) {
return null;
}
return processResult(entry, result);
}
catch (ExecutionException e) {
LOG.error(e);
return new Result<AccessControlEntry, Boolean>(entry, e);
}
}