현재 위치: > 최신 기사 목록> ftp_site 및 ftp_chdir를 조합하여 사용하는 방법, 디렉토리 권한을 잘 제어하는 ​​방법은 무엇입니까?

ftp_site 및 ftp_chdir를 조합하여 사용하는 방법, 디렉토리 권한을 잘 제어하는 ​​방법은 무엇입니까?

gitbox 2025-06-16

PHP에서는 일반적으로 FTP 기능을 사용하여 FTP 서버와 상호 작용합니다. 두 기능의 조합 FTP_SITEFTP_CHDIR의 조합을 통해 FTP 서버에서 파일 또는 디렉토리의 권한을 효과적으로 제어 할 수 있습니다. 이러한 기능을 통해 개발자는 특정 디렉토리에 대한 액세스 제어 및 운영 권한의 정제 된 관리를 실현할 수 있습니다.

이 기사에서는 FTP_SITEFTP_CHDIR 기능을 사용하여 디렉토리 권한을 잘 제어하는 ​​방법을 소개합니다.

1. ftp_siteftp_chdir 를 이해하십시오

  1. ftp_site ()
    이 기능은 특정 FTP 명령을 FTP 서버로 보내는 데 사용되므로 권한 설정, 디렉토리 변경 등과 같은 일부 고급 작업을 수행 할 수 있습니다.이 기능은 종종 표준 FTP 프로토콜의 일부가 아닌 서버 특정 작업을 제어하는 ​​데 사용되지만 많은 FTP 서버는 이러한 사용자 정의 명령을 지원합니다.

    문법:

     <span><span><span class="hljs-keyword">bool</span></span><span> </span><span><span class="hljs-title function_ invoke__">ftp_site</span></span><span> ( resource </span><span><span class="hljs-variable">$ftp_stream</span></span><span> , </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$command</span></span><span> )
    </span></span>
    • $ ftp_stream : ftp_connect () 또는 ftp_ssl_connect ()를 통해 FTP 서버에 연결하는 리소스.

    • $ 명령 : FTP 서버로 전송 된 명령 문자열.

  2. ftp_chdir ()
    이 기능은 FTP 연결에서 현재 작업 디렉토리를 변경하는 데 사용됩니다. 이를 통해 후속 작업을 수행 할 수있는 특정 디렉토리로 이동할 수 있습니다.

    문법:

     <span><span><span class="hljs-keyword">bool</span></span><span> </span><span><span class="hljs-title function_ invoke__">ftp_chdir</span></span><span> ( resource </span><span><span class="hljs-variable">$ftp_stream</span></span><span> , </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$directory</span></span><span> )
    </span></span>
    • $ ftp_stream : FTP 서버에 대한 연결 자원.

    • $ 디렉토리 : 전환 할 대상 디렉토리.

2. FTP_SITEFTP_CHDIR을 사용하여 잘 제어하십시오

일부 시나리오에서 개발자는 사용자가 특정 디렉토리에 액세스하는 것을 제한하거나 사용자 역할에 따라 다양한 권한을 부여하는 등 특정 디렉토리에 대한 액세스 권한을 제어 할 수 있습니다. 이 경우, FTP_SITEFTP_CHDIR 기능을 효과적으로 결합하여 복잡한 디렉토리 관리 작업을 수행 할 수 있습니다.

FTP 서버의 다른 사용자에 대해 다른 디렉토리 액세스 권한을 설정해야한다고 가정하면 단계는 다음과 같습니다.

1. ftp_chdir를 사용하여 대상 디렉토리를 입력하십시오

먼저 ftp_chdir를 사용하여 권한을 설정하려는 대상 디렉토리를 입력하십시오. 우리가 이미 FTP 서버에 연결되어 있고 사용자가 user_data 라는 디렉토리에 액세스하려고한다고 가정합니다.

 <span><span><span class="hljs-variable">$ftp_server</span></span><span> = </span><span><span class="hljs-string">'ftp.example.com'</span></span><span>;
</span><span><span class="hljs-variable">$ftp_user</span></span><span> = </span><span><span class="hljs-string">'username'</span></span><span>;
</span><span><span class="hljs-variable">$ftp_pass</span></span><span> = </span><span><span class="hljs-string">'password'</span></span><span>;

</span><span><span class="hljs-comment">// 연결을 설정하십시오</span></span><span>
</span><span><span class="hljs-variable">$ftp_conn</span></span><span> = </span><span><span class="hljs-title function_ invoke__">ftp_connect</span></span><span>(</span><span><span class="hljs-variable">$ftp_server</span></span><span>);
</span><span><span class="hljs-variable">$login_result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">ftp_login</span></span><span>(</span><span><span class="hljs-variable">$ftp_conn</span></span><span>, </span><span><span class="hljs-variable">$ftp_user</span></span><span>, </span><span><span class="hljs-variable">$ftp_pass</span></span><span>);

</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-variable">$ftp_conn</span></span><span> || !</span><span><span class="hljs-variable">$login_result</span></span><span>) {
    </span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">'FTP connection has failed!'</span></span><span>);
}

</span><span><span class="hljs-comment">// 대상 디렉토리를 입력하십시오</span></span><span>
</span><span><span class="hljs-variable">$target_dir</span></span><span> = </span><span><span class="hljs-string">'/user_data/'</span></span><span>;
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">ftp_chdir</span></span><span>(</span><span><span class="hljs-variable">$ftp_conn</span></span><span>, </span><span><span class="hljs-variable">$target_dir</span></span><span>)) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Successfully changed to <span class="hljs-subst">$target_dir</span></span></span><span>\n";
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Failed to change directory to <span class="hljs-subst">$target_dir</span></span></span><span>\n";
}
</span></span>
2. ftp_site를 사용하여 디렉토리 권한을 설정하십시오

대상 디렉토리로 전환 한 후 FTP_SITE 를 통해 서버로 명령을 보내 디렉토리 권한을 제어 할 수 있습니다. 예를 들어 디렉토리를 읽기 전용으로 설정하거나 사용자가 쓰기 작업 등을 수행하도록 허용하려면 해당 명령을 보낼 수 있습니다.

다른 FTP 서버는 다른 명령을 지원합니다. 예를 들어 일부 서버에서 다음과 같은 명령으로 디렉토리 권한을 설정할 수 있습니다.

 <span><span><span class="hljs-comment">// 읽기 전용으로 설정합니다</span></span><span>
</span><span><span class="hljs-variable">$command</span></span><span> = </span><span><span class="hljs-string">'CHMOD 444 '</span></span><span> . </span><span><span class="hljs-variable">$target_dir</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">ftp_site</span></span><span>(</span><span><span class="hljs-variable">$ftp_conn</span></span><span>, </span><span><span class="hljs-variable">$command</span></span><span>);

</span><span><span class="hljs-comment">// Writable로 설정합니다</span></span><span>
</span><span><span class="hljs-variable">$command</span></span><span> = </span><span><span class="hljs-string">'CHMOD 755 '</span></span><span> . </span><span><span class="hljs-variable">$target_dir</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">ftp_site</span></span><span>(</span><span><span class="hljs-variable">$ftp_conn</span></span><span>, </span><span><span class="hljs-variable">$command</span></span><span>);
</span></span>

참고 : FTP_SITE는 모든 FTP 서버에서 지원하는 표준 명령이 아니므로 먼저 FTP 서버를 사용할 때 지원하는 명령 세트를 이해해야합니다. 서버가 이러한 명령을 지원하지 않으면 다른 방식으로 권한 관리가 필요할 수 있습니다 (예 : FTP 서버에서 제공 한 제어판 또는 API 사용).

3. 사용자에 대해 다른 액세스 권한을 설정하십시오

FTP_CHDIRFTP_SITE 의 조합을 통해 다른 사용자 또는 그룹에 대해 다른 권한을 설정할 수 있습니다. 예를 들어 관리자는 모든 디렉토리에 액세스 할 수 있지만 일반 사용자는 특정 디렉토리에만 액세스 할 수 있습니다. 간단한 구현 예는 다음과 같습니다.

 <span><span><span class="hljs-comment">// 사용자 역할이 통과한다고 가정합니다 $user_role 판단하자</span></span><span>
</span><span><span class="hljs-variable">$user_role</span></span><span> = </span><span><span class="hljs-string">'admin'</span></span><span>; </span><span><span class="hljs-comment">// 또는 'user'</span></span><span>

</span><span><span class="hljs-comment">// 관리자는 전체 권한이 있습니다</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$user_role</span></span><span> == </span><span><span class="hljs-string">'admin'</span></span><span>) {
    </span><span><span class="hljs-title function_ invoke__">ftp_chdir</span></span><span>(</span><span><span class="hljs-variable">$ftp_conn</span></span><span>, </span><span><span class="hljs-string">'/admin_data/'</span></span><span>);
    </span><span><span class="hljs-title function_ invoke__">ftp_site</span></span><span>(</span><span><span class="hljs-variable">$ftp_conn</span></span><span>, </span><span><span class="hljs-string">'CHMOD 777 /admin_data'</span></span><span>);
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Admin access granted to /admin_data\n"</span></span><span>;
} </span><span><span class="hljs-keyword">elseif</span></span><span> (</span><span><span class="hljs-variable">$user_role</span></span><span> == </span><span><span class="hljs-string">'user'</span></span><span>) {
    </span><span><span class="hljs-title function_ invoke__">ftp_chdir</span></span><span>(</span><span><span class="hljs-variable">$ftp_conn</span></span><span>, </span><span><span class="hljs-string">'/user_data/'</span></span><span>);
    </span><span><span class="hljs-title function_ invoke__">ftp_site</span></span><span>(</span><span><span class="hljs-variable">$ftp_conn</span></span><span>, </span><span><span class="hljs-string">'CHMOD 444 /user_data'</span></span><span>);
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"User access granted to /user_data\n"</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Invalid role\n"</span></span><span>;
}
</span></span>

이러한 방식으로 사용자 역할에 따라 디렉토리 액세스 권한을 동적으로 설정할 수 있습니다.

3. 요약

FTP_SITEFTP_CHDIR을 결합하여 개발자는 FTP 서버에서 파일 및 디렉토리 권한을 유연하게 관리 할 수 ​​있습니다. FTP_CHDIR 기능은 디렉토리를 전환하는 데 도움이되며 FTP_SITE를 사용하면 파일 권한 설정, 디렉토리 작성 등과 같은 일부 고급 작업을 수행 할 수 있습니다.

이러한 기능은 강력한 제어 기능을 제공하지만 사용하면 서버의 권한 관리에 대한 명확한 이해를 보장하고 서버의 특정 요구 사항에 따라 명령을 조정하는 것이 중요합니다.

적절한 권한 제어를 통해 불필요한 허가 누출 또는 남용을 피하면서 FTP 서버의 보안을 보장 할 수 있습니다.