Nextcloud 오류 : 소유권 문제.

넥스트클라우드를 열심히 쓰지 않아서 몰랐던 문제. 타인 읽기 권한이 없으면 넥스트클라우드에서 인식이 되질 않는다. 심지어 권한을 고쳐도 넥스트클라우드는 변경을 인지하지 못한다.

  • tldr: 이 문제를 해결하려면, 타인읽기권한이 없는 파일을 복사할 때 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 을 기억할 수 있을까.

이게 문제라면 문제다.

안녕하세요. 글 남겨주셔서 고맙습니다.