가장 일반적인 이유 중 하나는 파일 또는 디렉토리에 대한 권한이 잘못 설정 되었기 때문입니다. 파일 또는 디렉토리에 대한 쓰기 권한은 일반적으로 운영 체제의 파일 시스템에 의해 관리됩니다. 파일 또는 디렉토리에 대한 권한이 쓸 수있는 것으로 설정되지 않으면 is_writable 함수는 false를 반환합니다.
CHMOD 명령을 사용하여 파일 또는 디렉토리에 대한 권한을 수정할 수 있습니다. Linux 또는 MacOS 시스템에서는 다음 명령을 따라 쓸 수있는 파일 또는 디렉토리를 설정할 수 있습니다.
<span><span><span class="hljs-built_in">chmod</span></span><span> 777 파일 이름
</span></span>이 접근 방식은 모든 사용자 (소유자, 그룹 사용자 및 기타 사용자)의 권한을 읽고, 쓰기 및 실행할 수 있도록합니다. 그러나 보안상의 이유로 필요한 권한 만 부여하는 것이 가장 좋습니다. 예를 들어, 쓰기 권한이있는 파일 소유자 만 필요하면 다음을 사용할 수 있습니다.
<span><span><span class="hljs-built_in">chmod</span></span><span> 644 파일 이름
</span></span>대상 파일 또는 디렉토리 자체에 쓰기 권한이 있더라도 IS_Writable은 부모 디렉토리에 쓰기 권한이없는 경우 여전히 False를 반환합니다. 파일 쓰기 작업에는 부모 디렉토리에서 파일의 생성 또는 수정이 필요하기 때문입니다.
파일의 상위 디렉토리에도 쓰기 권한이 있는지 확인하십시오. CHMOD 명령을 사용하여 디렉토리를 관련 사용자에게 쓸 수 있도록 부모 디렉토리의 권한을 확인하고 설정할 수 있습니다.
<span><span><span class="hljs-built_in">chmod</span></span><span> 755 부모 디렉토리 이름
</span></span>다른 프로세스에서 파일이나 디렉토리를 사용하거나 다른 프로그램에서 잠겨있는 경우 IS_WRIBLE는 False를 반환 할 수 있습니다. 일반적으로 파일이 다른 프로그램에 의해 작성되거나 일부 파일 관리 도구가 파일을 잠글 때 발생합니다.
다른 프로세스가 파일의 작동을 완료 할 때까지 기다리거나 비 분쇄 기간 동안 작동을 시도하십시오. 플록 함수를 사용하여 파일을 잠그기 위해 파일을 잠그면 다른 프로그램에서 파일이 수정되지 않도록 할 수도 있습니다.
경우에 따라 파일 시스템이 읽기 전용 모드 일 수 있습니다. 예를 들어, 파일 시스템에 오류가 발생하거나 디스크가 읽기 전용 상태에있을 때 IS_WRIBLE 도 False를 반환합니다.
파일 시스템의 상태를 확인하여 디스크가 손상되지 않았고 파일 시스템이 읽기 및 쓰기 모드에 있는지 확인하십시오. Linux Systems에서는 Mount 명령을 사용하여 파일 시스템이 읽기 전용 모드인지 확인할 수 있습니다.
<span><span>mount | grep </span><span><span class="hljs-string">'ro'</span></span><span>
</span></span>파일 시스템이 읽기 전용 인 경우 읽기 쉽고 쓸 수있는 것으로 다시 실행하십시오.
<span><span>sudo mount -o remount,rw /장착 지점
</span></span>많은 웹 환경에서 웹 서버는 특정 사용자로 실행됩니다. 예를 들어 Apache는 일반적으로 www-data 또는 apache 사용자로 실행됩니다. 파일 또는 디렉토리의 소유자가 웹 서버 사용자와 다르고 파일에 대한 권한이 올바르게 설정되지 않으면 IS_WRIBLIE가 거짓을 반환 할 수도 있습니다.
웹 서버 사용자에게 적절한 파일 쓰기 권한이 있는지 확인하십시오. Chown 명령을 사용하여 파일 또는 디렉토리의 소유자를 변경할 수 있습니다.
<span><span><span class="hljs-built_in">chown</span></span><span> www-data:www-data 파일 이름
</span></span>또한 파일 또는 디렉토리에 웹 서버 사용자가 쓸 수 있도록 적절한 권한 설정이 있는지 확인하십시오.
매우 안전한 Linux 시스템에서 Selinux 또는 Apparmor와 같은 보안 모듈은 파일 쓰기 권한을 제한 할 수 있습니다. 이러한 보안 메커니즘으로 인해 파일 시스템과 파일 권한이 모두 올바른 경우에도 IS_WRITE가 False를 반환 할 수 있습니다.
추가 액세스 제어 제한이 없는지 Selinux 또는 Apparmor의 구성을 확인하십시오. selinux가 활성화 된 경우 getenforce 명령을 사용하여 현재 상태를 확인할 수 있습니다.
<span><span>getenforce
</span></span>출력이 시행 되는 경우 SELINUX를 일시적으로 비활성화하거나 쓰기 작업을 허용하도록 정책을 조정할 수 있습니다.
<span><span>setenforce 0
</span></span>하드 디스크 공간이 충분하지 않으면 파일 시스템에 새 데이터가 작성 될 수 있으며, 이로 인해 is_writable이 False를 반환하게합니다. 디스크가 가득 차면 파일 권한이 올바른 경우에도 운영 체제는 쓰기 작업을 수행 할 수 없습니다.
남은 공간이 충분한 지 확인하려면 하드 디스크 공간을 확인하십시오. DF 명령을 사용하여 디스크 공간을 확인할 수 있습니다.
<span><span><span class="hljs-built_in">df</span></span><span> -h
</span></span>디스크 공간이 가득 차면 쓸모없는 파일 또는 확장 디스크 공간을 청소해야합니다.
네트워크 공유 파일 시스템 (예 : NFS)을 사용하는 경우 IS_Writable은 False를 반환합니다. 이는 네트워크 장착 파일 시스템에 쓰기 권한을 올바르게 구성하지 않았기 때문일 수 있습니다.
파일 시스템이 읽기 및 쓰기 모드에 장착되어 있는지 확인하려면 NFS 또는 기타 네트워크 파일 시스템의 마운트 옵션을 확인하십시오. NFS 인 경우 /etc /fstab 에서 RW 마운트 옵션을 구성 할 수 있습니다.
<span><span>nfs-server:/path/to/directory /mount/point nfs defaults,rw 0 0
</span></span>