Здесь регулярное выражение не требуется. Вы можете использовать простую звездочку оболочки, например:
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
Если 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---
). 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/
. Обратите внимание, что в отличие от символических ссылок такое использование привязки может привести к тому, что каждая вложенная папка продукта будет потреблять вдвое больше емкости резервного копирования, если только вы не исключите дополнительную копию из своих резервных копий.