FTP 사용자가 Oracle 소유 폴더의 내용을 수정하도록 허용

FTP 사용자가 Oracle 소유 폴더의 내용을 수정하도록 허용

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:ftpuserchmod 0750( ) 일 수 있습니다 .drwxr-x---
  • /home/ftpuser/Product_1제품 하위 폴더는 사용자, 그룹이 소유 할 수 있으며 사용자와 그룹 모두가 쓸 수 있습니다. setgid 비트는 그룹이 올바르게 설정되었는지 확인합니다. 그래서 그리고().oracleftpuserchown oracle:ftpuserchmod 2770drwxrws---
  • 가능하다면 FTP 서버를 다음과 같이 구성해야 합니다.아니요클라이언트 파일 권한은 유지됩니다. 표준 umask 022 또는 002를 적용해야 합니다. 따라서 Products 하위 폴더에 추가된 파일은 ftpuser, 그룹 ftpuser및 권한 0644 또는 0664( -rw-r--r--또는 -rw-rw-r--각각)가 소유하게 됩니다.

oracle이 그룹의 구성원이 되므로 액세스 ftpuser할 수 있습니다 /home/ftpuser. 제품 하위 폴더가 소유되어 있으므로 잘못된 권한으로 파일을 생성 oracle하더라도 최소한 해당 파일을 삭제할 수 있고 항상 생성할 수 있습니다. 필요할 때 새 파일. 제품 하위 폴더에 있는 파일은 해당 폴더에 액세스할 수 있는 모든 사람이 읽을 수 있으므로 이러한 파일을 읽고 가져오는 데 전혀 문제가 없습니다. FTP 서버에서 적용 하면 필요한 경우 파일을 쓸 수도 있습니다.ftpuseroracleumask 002oracle

노트: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/. 심볼릭 링크와 달리 이 바인드 마운트를 사용하면 백업에서 추가 복사본을 제외하지 않는 한 각 제품 하위 폴더가 백업 용량을 두 배로 소비할 수 있습니다.

관련 정보