Nextcloud 오류 : 소유권/허가 문제.

넥스트클라우드를 열심히 쓰지 않아서 몰랐던 문제. 타인 읽기 권한이 없으면 넥스트클라우드에서 인식이 되질 않는다. 심지어 권한을 고쳐도 넥스트클라우드는 변경을 인지하지 못한다.
사실 이게 정상이다. 넥스트 클라우드는 웹서버 사용자(www-data 등)의 권한으로 실행되므로, 이 사용자에게 읽기 허가권이 주어지지 않으면 당연히 표시할 수가 없다.

  • tldr:
    넥스트 클라우드 공유 디렉토리에 있는 파일의 소유권이 웹서버 사용자(www-data)가 아닐 경우, 적어도 644 허가권이 필요하다.
    따라서, 타인읽기권한(Others Read Permission)이 없는 파일을 복사하려면 cp 를 쓰지 말고 install 또는 rsync 를 사용하라!

ssh 개인키를 태블릿에 옮기려고 했다가 또 다시 꽃삽질 세계로 빠지고 말았다.
그나마 원인을 알아냈으니 다행이라고 해야할까.

태블릿에서 ssh 접속을 하기 위해, 개인키를 태블릿으로 전송하려 했다. 그냥 케이블 꽂고 날려버렸으면 1분도 안걸렸을 텐데, (사실 당시엔 그 방법을 생각하지 못했다. 너무 편리함에 익숙해진 탓일까. 케이블 생각을 못하다니..) 무선을 우선하다보니 Nextcloud 를 이용하자고 결론 내렸다.

사실 KDE Connect 도 생각했었는데, 이 태블릿과 KDE Connect 는 약간 잘 어울리지 못하는 구석이 있다. 그래서 굳이 태블릿에선 사용하지 않고 있다. 그게 됐으면 뭐 다른 생각을 할 여지도 없었을텐데.

아무튼, 개인키(id_ed25519)를 넥스트클라우드 디렉토리에 복사하고 태블릿에서 확인을 했는데.. 이게 도무지 보이질 않는다.

첫번째 든 생각. 파일이 텍스트이거나, 너무 작으면(400 바이트 정도였다.) 안보이나?
그런 생각에 그냥 touch 로 파일을 만들어봤다.

그러나, 보/인/다/

어쩌란 거냐 도대체.

이유를 찾기 위해 이런 저런 시험을 하다가, 혹시나 해서 공개키(id_25519.pub)를 넥스트클라우드로 복사해봤다.

어라? 이건 보인다.

ssh 개인키의 권한은 600 으로 설정되어 있다. 이것 외로 설정이 되면 ssh 를 실행할 때 경고문구가 나온다. 반면 공개키는 644 로 되어 있다. 당연히 ‘공개’키는 누구나 읽을 수 있어야 하므로, Others 에게 Read 권한이 있어야 한다.

여기서 답을 찾았다.

그런데..

600 이었던 개인키 권한을 바꾸고자, 넥스트클라우드 디렉토리에서 chmod 644 명령으로 개인키 권한 변경을 해줬다. 그럼에도 불구하고 보이질 않는다. 왜 또 이런거야??
그러다가, 아무 상관도 없는 다른 파일을 그 디렉토리로 복사했다.

그러고 나니 드디어 개인키가 보이기 시작했다.

이 상황의 경과는 이렇다.

  1. 파일이 넥스트클라우드 디렉토리로 복사될 때, 읽기 권한이 없다면 Nextcloud 는 그 파일을 인식하지 못한다.
  2. 후에 그 파일의 권한을 바꾼다해도, 넥스트클라우드는 여전히 바뀐 점을 인식하지 못한다.

아마도, 최초에 inode 변경 사항이 일어났을 때(위의 1 상황) Nextcloud 는 디렉토리를 검사하는 듯 하다. 그러나 읽기 권한이 없어 읽지를 못해서 파일을 반영시킬 수가 없었다.

나중에 chmod 를 한다고 해도, inode 변경은 없다. 따라서 여전히 넥스트클라우드는 감감무소식. 그러다가, 읽기 문제가 없는 새 파일을 복사하거나, 또는 touch 등으로 새 파일을 만들면, 그제서야 이 디렉토리를 다시 읽고, 변경된 파일을 감지하게 된다.

이 작업을 cp 로 하려면 이렇게 된다.

cd /nextcloud
cp ~/.ssh/id_ed25519 .
chmod +r id_ed25519
cp id_ed25519 id_ed25519_new # 또는
touch aaa

# 위 작업을 한 뒤엔 id_ed25519_new 또는 aaa 를 지워줘야 한다.

이 무슨 쓸데없는 짓의 연속인가.

이런 경우를 위해서 리눅스엔 install 이란 명령이 존재한다.
다음 명령이면 한방에 해결!

install -m 644 ~/.ssh/id_ed25519 .

긴 설명이 필요할까? -m 644 는 권한을 644 로 바꿔서 복사하라는 의미다. Octal Permission 을 사용할 때 한가지 단점은, 원래 권한을 그대로 유지하기는 불가능하다는 점인데, 그냥 644 로 밀어붙이면 되겠다.

또는, copy 계의 傳家寶刀 rsync 로도 된다.

rsync --chmod=+r ~/.ssh/id_ed25519 .

생소한 install 보다는 rsync 가 더 기억하긴 쉽겠다.
다만.. 이런 경우가 얼마나 자주 있을까, 또, 이런 일이 생겼을 때 과연 install 을 기억할 수 있을까.

이게 문제라면 문제다.

Author: 아무도안

2 thoughts on “Nextcloud 오류 : 소유권/허가 문제.

  1. 저는 외부 저장소로 루트의 모든 파일이 nextcloud 에 있는데 그외에 외장하드가 마운트 된 폴더를 일식하지 못합니다.
    권한을 루트로 주고 www data 로 줬는데도 인식못하고 chmod 를 바꿔도 계속 안바뀌는 상황이 나타납니다. 작성자님이 쓰신 내용이랑 비슷하려나요?

    1. 안녕하세요.
      글 남겨주셨습니다만, 무슨 상황인지 제가 잘 이해를 못하겠습니다.
      또, 이해했다하더라도 제겐 답변을 드릴만한 능력이 없습니다.
      여기 있는 모든 글은 제가 겪은 경험담을 정리해놓았을 뿐이고, 전 전문가가 아닙니다.

Leave a Reply to 아무도안 Cancel reply