SFTP 파일 전송 실패(permisson denied) 해결 방법

리눅스는 여러 사용자에게 사용되곤 합니다. 각 사용자 별로 자신 계정의 디렉토리 이외에는 접근을 제한받는 방식으로 사용됩니다. 그래서 리눅스는 파일 및 디렉토리에 대한 소유자, 소유그룹, 대상에 대한 권한이 중요하게 여겨집니다.

 

이런 연장선에서 자주 마주칠 수 있는 에러가 바로 permisson denied입니다. 권한이 없으니 요청한 작업을 수행할 수 없다는 의미입니다.

SFTP permisson denied

파일질라 등의 sftp로 원하는 경로에 파일을 업로드하려는데 open for write: permission denied 에러가 발생할 수 있습니다. 이는 쓰기 권한이 없기 때문에 파일을 업로드할 수 없다는 의미입니다.

 

예를 들어, test라는 사용자로 로그인한 상태에서 test2 경로에 파일을 옮기려고 할 때 발생이 가능합니다.

예시) test와 test2 사용자

test 계정으로 로그인한 상태에서 ls -l 명령어로 test2의 권한을 확인해보면 아래와 같습니다.

[test@localhost home]$ ls -l
total 2
drwxr--r--.  5 test  test   164 Jan 16 06:14 test
drwxr-xr-x.  5 test2 test2  107 Jan 16 06:01 test2
  • test2는 디렉토리입니다. (첫번째 알파벳이 d로 시작)
  • 소유자는 읽기(r), 쓰기(w), 실행(x) 권한을 모두 갖습니다. 소유그룹은 읽기(r), 실행(x) 권한을 갖습니다. 그 외 사용자도 읽기(r), 실행(x) 권한을 갖습니다.
  • 소유자와 소유그룹은 모두 test2입니다. (test2 test2)

 

전송 오류

 

이때 test로 접속한 사용자가 test2 디렉토리에 파일을 올리려고 하면 권한 거부 에러가 발생합니다. 파일을 업로드하는 이벤트는 쓰기(w)에 해당하는데 읽기(r)와 실행(x) 권한 밖에 없기 때문입니다. 

 

업로드를 가능하게 만들기 위해서는 그 외 사용자에게 쓰기 권한을 줘야합니다. 권한을 주기 위해서는 root 계정으로 접속해야 합니다.

[root@localhost home]# chmod -R 757 test2

 

3자리 숫자는 순서대로 소유자, 소유그룹, 그 외 사용자에 대한 권한 부여를 의미합니다. -R은 모든 하위 디렉토리를 대상으로 적용한다는 의미입니다. 7권한은 rwx 모든 권한을 부여합니다. 

[root@localhost home]# ls -l
total 2
drwxr--r--.  5 test  test   164 Jan 16 06:14 test
drwxr-xrwx.  5 test2 test2  107 Jan 16 06:01 test2

그 외 사용자 권한에 쓰기(w)가 생성됐습니다.

 

파일 업로드 성공

 

이제 파일이 정상적으로 업로드됩니다.

반응형

댓글

Designed by JB FACTORY