Package org.italiangrid.voms.util

# Class FilePermissionHelper

java.lang.Object
org.italiangrid.voms.util.FilePermissionHelper

public class FilePermissionHelper extends Object
A helper class for performing basic Unix file permission checks.

This class is intended to provide simple permission validation and modification for specific files, such as private keys and proxy certificates. It relies on executing system commands to fetch and update file permissions.

Note: This implementation is a workaround until proper support for POSIX file permissions is available in Java.

## Nested Class Summary

Nested Classes
Modifier and Type
Class
Description
`static enum`
`FilePermissionHelper.PosixFilePermission`
Enumeration representing POSIX file permissions.

## Field Summary

Fields
Modifier and Type
Field
Description
`static final String`
`CHMOD_CMD_TEMPLATE`
The command used to set file permissions on a given file
`static final String`
`LS_CMD_TEMPLATE`
The command used to retrieve file permissions for a given file
`static final EnumSet<FilePermissionHelper.PosixFilePermission>`
`PRIVATE_KEY_PERMS`
Required file permissions for the private key file
`static final String`
`PRIVATE_KEY_PERMS_STR`
String representation of private key required permissions.

## Constructor Summary

Constructors
Constructor
Description
`FilePermissionHelper()`

## Method Summary

Modifier and Type
Method
Description
`static void`
`checkPKCS12Permissions(String pkcs12File)`
Checks whether a pkcs12 file has the 'right' permissions
`static void`
`checkPrivateKeyPermissions(String privateKeyFile)`
Checks whether a private key file has the 'right' permissions
`static void`
`checkProxyPermissions(String proxyFile)`
Checks whether a proxy file has the right permissions
`static void`
`matchesFilePermissions(String filename, FilePermissionHelper.PosixFilePermission expectedPerm)`
Checks that a given file has the appropriate unix permissions.
`static void`
`setFilePermissions(String filename, FilePermissionHelper.PosixFilePermission perm)`
Sets the specified POSIX permissions on a file.
`static void`
`setPKCS12Permissions(String filename)`
Sets the default POSIX permissions on a p12 identified by filename.
`static void`
`setPrivateKeyPermissions(String filename)`
Sets the default POSIX permissions on a private key identified by filename.
`static void`
`setProxyPermissions(String filename)`
Sets the default POSIX permissions on a proxy identified by filename.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Field Details

### PRIVATE_KEY_PERMS

public static final EnumSet<FilePermissionHelper.PosixFilePermission> PRIVATE_KEY_PERMS
Required file permissions for the private key file

### PRIVATE_KEY_PERMS_STR

public static final String PRIVATE_KEY_PERMS_STR
String representation of private key required permissions.

### LS_CMD_TEMPLATE

public static final String LS_CMD_TEMPLATE
The command used to retrieve file permissions for a given file

See Also:
  - Constant Field Values

### CHMOD_CMD_TEMPLATE

public static final String CHMOD_CMD_TEMPLATE
The command used to set file permissions on a given file

See Also:
  - Constant Field Values

## Constructor Details

### FilePermissionHelper

public FilePermissionHelper()

## Method Details

### checkProxyPermissions

public static void checkProxyPermissions(String proxyFile) throws IOException
Checks whether a proxy file has the right permissions

Parameters:
  `proxyFile` - the file to be checked
Throws:
  `IOException` - if an error occurs checking file attributes
  `FilePermissionError` - if permissions are not as expected

### checkPrivateKeyPermissions

public static void checkPrivateKeyPermissions(String privateKeyFile) throws IOException
Checks whether a private key file has the 'right' permissions

Parameters:
  `privateKeyFile` - the file to be checked
Throws:
  `IOException` - if an error occurs checking file attributes
  `FilePermissionError` - if the permissions are not correct

### checkPKCS12Permissions

public static void checkPKCS12Permissions(String pkcs12File) throws IOException
Checks whether a pkcs12 file has the 'right' permissions

Parameters:
  `pkcs12File` - the file to be checked
Throws:
  `IOException` - if an error occurs checking file attributes
  `FilePermissionError` - if the permissions are not correct

### matchesFilePermissions

public static void matchesFilePermissions(String filename, FilePermissionHelper.PosixFilePermission expectedPerm) throws IOException
Checks that a given file has the appropriate unix permissions. This naive implementation just fetches the output of ls -al on a given file and matches the resulting string with the permissionString passed as argument. So the permissionString must be something like:

     -rw-------

Parameters:
  `filename` - the filename to be checked
  `expectedPerm` - the permission string that must be matched
Throws:
  `IOException` - if an error occurs checking file attributes
  `FilePermissionError` - if file permissions are not as requested

### setProxyPermissions

public static void setProxyPermissions(String filename)
Sets the default POSIX permissions on a proxy identified by filename.

Parameters:
  `filename` - the file to modify

### setPKCS12Permissions

public static void setPKCS12Permissions(String filename)
Sets the default POSIX permissions on a p12 identified by filename.

Parameters:
  `filename` - the file to modify

### setPrivateKeyPermissions

public static void setPrivateKeyPermissions(String filename)
Sets the default POSIX permissions on a private key identified by filename.

Parameters:
  `filename` - the file to modify

### setFilePermissions

public static void setFilePermissions(String filename, FilePermissionHelper.PosixFilePermission perm)
Sets the specified POSIX permissions on a file.

Parameters:
  `filename` - the file to modify
  `perm` - the permissions to apply