container-common/src/main/java/com/streamsets/datacollector/security/SdcSecurityManager.java
private void ensureProperPermissions(String path) {
    ClassLoader cl = Thread.currentThread().getContextClassLoader();
    // 1) Container can access anything
    if(cl instanceof ContainerClassLoader) {
        return;
    }

    // 2. Some files are whitelisted globally for all stage libraries
    if(exceptions.contains(path)) {
      return;
    }

    // 3. Some stage libraries have some files whitelisted globally
    if(cl instanceof SDCClassLoader) {
      String libraryName = ((SDCClassLoader)cl).getName();
      if(stageLibExceptions.containsKey(libraryName) && stageLibExceptions.get(libraryName).contains(path)) {
        return;
      }
    }

    // No whitelist, no fun, go away
    throw new SecurityException(Utils.format(
      "Classloader {} is not allowed access to Data Collector internal directories ({}).",
      cl.toString(),
      path
    ));
  }
private void ensureProperPermissions(String path) {
    ClassLoader cl = Thread.currentThread().getContextClassLoader();
    // 1) Container can access anything
    if(cl instanceof ContainerClassLoader) {
        return;
    }

    // 2. Some files are whitelisted globally for all stage libraries
    if(exceptions.contains(path)) {
      return;
    }

    // 3. Some stage libraries have some files whitelisted globally
    if(cl instanceof SDCClassLoader) {
      String libraryName = ((SDCClassLoader)cl).getName();
      if(stageLibExceptions.containsKey(libraryName) && stageLibExceptions.get(libraryName).contains(path)) {
        return;
      }
    }

    // No whitelist, no fun, go away
    throw new SecurityException(Utils.format(
      "Classloader {} is not allowed access to Data Collector internal directories ({}).",
      cl.toString(),
      path
    ));
  }
private void ensureProperPermissions ( String path ) { ClassLoader cl = Thread . currentThread ( ) . getContextClassLoader ( ) ; // 1) Container can access anything if ( cl instanceof ContainerClassLoader ) { return ; } // 2. Some files are whitelisted globally for all stage libraries if ( exceptions . contains ( path ) ) { return ; } // 3. Some stage libraries have some files whitelisted globally if ( cl instanceof SDCClassLoader ) { String libraryName = ( ( SDCClassLoader ) cl ) . getName ( ) ; if ( stageLibExceptions . containsKey ( libraryName ) && stageLibExceptions . get ( libraryName ) . contains ( path ) ) { return ; } } // No whitelist, no fun, go away throw new SecurityException ( Utils . format ( "Classloader {} is not allowed access to Data Collector internal directories ({})." , cl . toString ( ) , path ) ) ; }
Make sure that the active code have proper rights to access the file inside protected directory.
Make sure that the active code have proper rights to access the file inside protected directory .