Файловый интерфейс ABAP – контроль доступа и блокировки

cpanel-remote-access-keys

При работе с файлами, на стороне сервера приложений, срабатывает множество неявных проверок на полномочия:

  • Проверка со стороны ОС
  • Проверка на обработку директорий
  • Проверка на обработку файлов
  • Прочие системные проверки

Далее более подробно о каждой из них.

 

 

Проверки операционной системы

Сервер приложений, запускается под определенным пользователем ОС, для этого пользователя должны быть настроены проверки полномочий на уровне ОС. Если для пользователя не будет хватать прав, операторы файлового интерфейса будут возвращать код ошибки sy-subrc отличный от нуля, либо вызывать исключения. В зависимости от ОС, настройка полномочий будет отличаться, более подробно необходимо смотреть в справочной информации к ОС.

Доступ к директориям

Для операторов OPEN DATASET, READ DATASET, TRANSFER и DELETE DATASET срабатывают автоматические проверки, описанные в системной таблице – SPTH:

spth

Поле Значение
PATH Путь к директории
SAVEFLAG Если значение «X», файлы из директории PATH включаются в процедуру резервного копирования.
FS_NOREAD Если данное поле имеет значение «X», файлы из директории PATH, не могут быть открыты для чтения из ABAP. Данное значение перекрывает поле FS_NOWRITE, и FS_BRGRU, а так же проверки объекта S_DATASET.
FS_NOWRITE Если данное поле имеет значение «X», файлы из директории PATH не могут быть открыты для записи в ABAP. Данное значение перекрывает FS_BRGRU, а так же проверки  объекта S_DATASET.
FS_BRGRU В данном поле содержится группа полномочий. Группа определяется в объекте S_PATH: 

s_path

Ведение групп полномочий осуществляется в ракурсе: V_SPT

Пример таблицы:

PATH SAVEFLAG FS_NOREAD FS_NOWRITE FS_BRGRU
* X X
/tmp
/tmp/myfiles X FILE

Записи означают следующее:

  • В первой строке включается запрет на изменение и запись всех файлов на сервере приложений, за исключением директории /tmp.
  • Во второй строке разрешается изменение и чтение всех файлов (за исключением директории /myfiles), не зависимо от группы полномочий, при этом файлы не участвуют в системе резервного копирования.
  • В третьей строке разрешается запись и изменение файлов, при наличии группы полномочий FILE, файлы из данной директории включаются в резервное копирование.

Проверки, относящиеся к специальным файлам

Доступ к файлам с расширением .pse (Personal Security Environment), проверяется через объект полномочий: S_RZL_ADM, необходимо чтобы в поле ACTVT было значение 01.

Доступ к файлам через объект S_DATASET

Каждый раз, когда происходит обработка файлов через интерфейс, система неявно вызывает проверку объекта полномочий S_DATASET (тр. SU21):

s_dataset

Данный объект содержит следующие поля: PROGRAM — в котором определено имя программы, FILENAME — физическое имя файла, и ACTVT — обозначающее действие над файлом. Если пользователь не обладает необходимыми полномочиями, вызывается обрабатываемое исключение. Для того чтобы избежать вызова исключения, можно заранее проверить полномочия с помощью ФМ: AUTHORITY_CHECK_DATASET, или стандартной проверкой полномочий оператором AUTHORITY-CHECK.

Пример проверки полномочий:

Блокировка файлов

Файловый интерфейс не содержит встроенного механизма блокировки. Могут возникать ситуации, когда один файл обрабатывается сразу несколькими программами одновременно. Если несколько программ ведут запись в один файл одновременно, результат подобных действий будет непредсказуемым.

Для того чтобы избежать подобных ситуаций, можно воспользоваться концепцией блокировок SAP, либо использовать уникальные имена файлов через генерацию GUID (UUID).