Разрешить пользователю FTP изменять содержимое папки, принадлежащей Oracle

Здесь регулярное выражение не требуется. Вы можете использовать простую звездочку оболочки, например:

tar cvzf /home/workspace/build/bundle.tar.gz /home/workspace/js/jai.*.js

Если вы не хотите сохранять структуру каталогов, проще всего cd /home/workspace/js/, а затемtar cvzf /home/workspace/build/bundle.tar.gz jai.*.js

0
01.11.2019, 22:50
1 ответ

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

Я не знаю APEX, но я бы рассмотрел возможность настройки домашнего каталога пользователя FTP как

usermod -d /home/ftpuser ftpuser

, затем перемещение папок продуктов APEX в /home/ftpuser/Product_1и т. д., а затем создание символических ссылок, подобных этой:

ln -s /home/ftpuser/Product_1 /home/oracle/products/11.2.0/dbhome_1/Product_1

так что /home/oracle/products/11.2.0/dbhome_1/Product_1 -> /home/ftpuser/Product_1.

Теперь ftpuser может быть chroot, так что он будет видеть свой домашний каталог как /по FTP, и поэтому он вообще не сможет получить доступ к фактическому дереву каталогов /home/oracle/.... APEX, с другой стороны, должен рассматривать символическую ссылку как эквивалентную реальному каталогу (, если он специально не проверяет символические ссылки )и не получает доступ к подпапкам продукта через ссылки.

У ftpuserдолжна быть своя группа, т.е. сначала groupadd ftpuserпри необходимости, затем usermod -g ftpuser ftpuser. Пользователь oracleтакже должен быть второстепенным членом группы ftpuser:usermod -a -G ftpuser oracleили gpasswd -a oracle ftpuser.

Разрешения и права собственности:

  • /home/ftpuserможет принадлежать root, но должен быть доступен ftpuser, поэтому, если ftpuser имеет выделенную для него группу, это могут быть chown root:ftpuserиchmod 0750(drwxr-x---)для максимального ограничения.
  • Вложенные папки продукта -, такие как /home/ftpuser/Product_1, могут принадлежать пользователю oracle, группе ftpuserи доступны для записи как пользователю, так и группе. Бит setgid гарантирует, что группа будет установлена ​​правильно. Итак, chown oracle:ftpuserи chmod 2770(drwxrws---).
  • Если возможно, FTP-сервер должен быть настроен на , а не на сохранение прав клиента -на стороне файла; вместо этого он должен применять стандартный umask 022 или 002. В результате файлы, добавленные в подпапки продукта -, будут принадлежать ftpuser, группе ftpuserи разрешениям 0644 или 0664(-rw-r--r--или -rw-rw-r--соответственно ).

Поскольку oracleбудет членом группы ftpuser, он сможет получить доступ к /home/ftpuser. Поскольку вложенные папки продукта принадлежат oracle, даже если ftpuserудастся создать файлы с неправильными разрешениями, oracleвсе равно сможет по крайней мере удалить их и всегда сможет создать новые файлы, если это необходимо. А поскольку файлы в подпапке продукта будут доступны для чтения всем, у кого есть доступ к папке, чтение и импорт файлов вообще не должно быть проблемой; если umask 002принудительно используется FTP-сервером, oracleсможет даже записывать в файлы, если это необходимо.

Примечание.:FTP-пользователь увидит вложенную папку продукта Product_1как ~/Product_1или даже как /Product_1, если используется функция chroot FTP-сервера. Конфигурацию APEX, вероятно, вообще не нужно будет менять, поскольку символические ссылки позволят использовать существующие имена путей, например -или (, если только APEX специально не проверяет и не отклоняет символические ссылки ).

Фактическое дисковое пространство для подпапок продукта -теперь будет использоваться в /home/ftpuser/Product_1и т. д., а не в иерархии каталогов /home/oracle/.... Если это проблема, вы можете использовать монтирование привязки Linux вместо символических ссылок, сначала создав пустые каталоги /home/ftpuser/Product_1и т. д. в качестве точек монтирования, а затем добавив строки, подобные этой, в ваш файл /etc/fstab:

/home/oracle/products/11.2.0/dbhome_1/Product_1 /home/ftpuser/Product_1 none bind 0 0

После перезагрузки или выполнения mount -a,фактические подпапки продукта теперь также должны быть доступны в /home/ftpuser/. Обратите внимание, что в отличие от символических ссылок такое использование привязки может привести к тому, что каждая вложенная папка продукта будет потреблять вдвое больше емкости резервного копирования, если только вы не исключите дополнительную копию из своих резервных копий.

0
28.01.2020, 03:09

Теги

Похожие вопросы