CentOS vsftpd 500 oops: cannot change directory

less than 1 minute read

다른 부분 편집이 완료된 후에 500에러가 발생하는 경우는 selinux의 문제

# setsebool -P ftp_home_dir = 1

이렇게 하면, ftp directory에 대한 접근을 허가 하게된다. “-P”는 Rebooting 될더라도 값을 저장하여, 정상적으로 동작 하도록 한다.

-—————————————————————————-

페도라 코어 4 까실때 SELinux 설정하셨나요? 그렇다면 디폴트로 사용자의 home 디렉토리에 쓰기를 막아놨을겁니다. SELinux 설정에서 FTP 부분을 변경하시면 될것 같습니다. 변경방법은 콘솔상에서 하는방법과 x윈도우에서 변경하는 방법이 있습니다.

콘솔상에서 변경하시려면

setsebool -P ftp_home_dir 1 service vsftpd restart

와 같이 home 디렉토리의 읽고쓰기를 1(True)로 변경하시고 vsftpd를 재시작 하시면 됩니다.

x윈도우 상에서는 데스크탑 -> 시스템 설정 -> 보안 수준에 가셔서 SELinux 텝에 들어가시면 정책 수정중에 FTP 라고 있습니다.

그곳의 삼각형을 클릭하시면 아래로 3개의 정책이 더 나오는데 Ftp의 사용자 홈디렉토리 읽고/쓰기 허가 를 클릭 하시면 됩니다.

또는 FTP에 관하여 SELinux 정책을 아예 적용하지 않는 옵션을 설정하셔도 됩니다. 콘솔 상에서는

setsebool -P ftpd_disable_trans 1

혹은 정책 수정중에 Disable SELinux protection for ftpd daemon 을 클릭 하시면 됩니다.

p.s. SELinux 설정에 보시면 다른 서비스들도 기본으로 많이 막혀 있습니다.

 

selinux 설정 확인

getsebool -a grep ftp

You’ll see something like

allow_ftpd_anon_write –> off allow_ftpd_full_access –> on allow_ftpd_use_cifs –> off allow_ftpd_use_nfs –> off ftp_home_dir –> on ftpd_connect_db –> off httpd_enable_ftp_server –> off tftp_anon_write –> off