Oracle DB 및 APEX가 설치된 Oracle Linux VM이 있습니다. 데이터베이스는 에 있습니다 . 이 폴더에는 APEX 제품과 관련된 /home/oracle/product/11.2.0/dbhome_1
폴더가 있습니다 /Product_1
./Product_2
현재 FTP를 사용하는 Oracle 사용자를 통해 이러한 제품 폴더에 파일이 추가됩니다. 이는 이러한 자격 증명을 가진 사람은 누구나 상자에 로그인하여 해서는 안 될 많은 작업을 수행할 수 있음을 의미합니다.
ftpuser를 설정하는 방법
$ usermod -d /home/oracle/products/11.2.0/dbhome_1/ ftpuser
이렇게 하면 ftpuser는 하위 폴더의 파일만 읽고 쓸 수 있습니다. APEX가 이러한 폴더의 파일을 읽고 데이터베이스로 가져올 수 있도록 이러한 파일은 Oracle에 속해야 한다는 것을 기억하십니까?
내가 보는 모든 기사에는 ftpuser가 사용할 새 폴더를 생성하라는 내용이 나와 있습니다.
감사해요
답변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는 마치 FTP를 통해 있는 것처럼 홈 디렉토리를 볼 수 있도록 루트를 변경할 수 있으므로 실제 /home/oracle/...
디렉토리 트리에 전혀 액세스할 수 없습니다. 반면 APEX는 심볼릭 링크를 실제 디렉터리와 동일하게 처리하고(심볼릭 링크를 특별히 확인하지 않는 한) 링크를 통해 제품 하위 폴더에 액세스해야 합니다.
ftpuser
자체 그룹이 있어야 합니다 . groupadd ftpuser
즉, 먼저 필요한 경우 다음으로 그룹을 지정해야 합니다 usermod -g ftpuser ftpuser
. 사용자는 oracle
또한 그룹의 보조 구성원이어야 합니다 ftpuser
. usermod -a -G ftpuser oracle
또는 gpasswd -a oracle ftpuser
.
권한 및 소유권:
/home/ftpuser
루트가 소유할 수 있지만 ftpuser가 액세스할 수 있어야 하므로 ftpuser에 개인 그룹이 있는 경우 최대 한도는chown root:ftpuser
및chmod 0750
( ) 일 수 있습니다 .drwxr-x---
/home/ftpuser/Product_1
제품 하위 폴더는 사용자, 그룹이 소유 할 수 있으며 사용자와 그룹 모두가 쓸 수 있습니다. setgid 비트는 그룹이 올바르게 설정되었는지 확인합니다. 그래서 그리고().oracle
ftpuser
chown oracle:ftpuser
chmod 2770
drwxrws---
- 가능하다면 FTP 서버를 다음과 같이 구성해야 합니다.아니요클라이언트 파일 권한은 유지됩니다. 표준 umask 022 또는 002를 적용해야 합니다. 따라서 Products 하위 폴더에 추가된 파일은
ftpuser
, 그룹ftpuser
및 권한 0644 또는 0664(-rw-r--r--
또는-rw-rw-r--
각각)가 소유하게 됩니다.
oracle
이 그룹의 구성원이 되므로 액세스 ftpuser
할 수 있습니다 /home/ftpuser
. 제품 하위 폴더가 소유되어 있으므로 잘못된 권한으로 파일을 생성 oracle
하더라도 최소한 해당 파일을 삭제할 수 있고 항상 생성할 수 있습니다. 필요할 때 새 파일. 제품 하위 폴더에 있는 파일은 해당 폴더에 액세스할 수 있는 모든 사람이 읽을 수 있으므로 이러한 파일을 읽고 가져오는 데 전혀 문제가 없습니다. FTP 서버에서 적용 하면 필요한 경우 파일을 쓸 수도 있습니다.ftpuser
oracle
umask 002
oracle
노트:FTP 사용자는 FTP 서버의 chroot 기능이 사용되는 경우에도 Product_1
제품 하위 폴더를 볼 수 있습니다 . APEX 구성은 전혀 변경할 필요가 없습니다. 기호 링크를 사용하면 기존 경로 이름을 있는 그대로 사용할 수 있기 때문입니다(APEX가 기호 링크를 특별히 확인하고 거부하지 않는 한).~/Product_1
/Product_1
제품 하위 폴더의 실제 디스크 공간은 이제 디렉터리 계층 구조 /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/
. 심볼릭 링크와 달리 이 바인드 마운트를 사용하면 백업에서 추가 복사본을 제외하지 않는 한 각 제품 하위 폴더가 백업 용량을 두 배로 소비할 수 있습니다.