타오나스를 구매하고 난 뒤에 시롤로지 시스템을 매번 업그레이드 할때마다 수작업 하는게 싫어서 opensource 로 되어 있는 나스 운영 시스템을 사용하기로 했다.
그 와 중에 freenas 라는 시스템이 눈에 들어왔고 일단 설치해서 사용하는 도중에 JAIL
이라는 VM 시스템이 있어서 이를 통해 다양한 시스템을 올려보고 있는 상황이이었다. 그런데 이게 서비스가 돌아가는 시스템이 익숙한 시스템이 아닌지라 공부를 할 필요가 있었다.
minidlna 를 통해서 부모님 집에 파일을 올려주고 있는데, 이게 rwxrwx---
권한으로 파일이 올려지는 것이다. 그리고,, dlna 권한은 이 dataset 의 폴더 권한이 없었다.
이를 해결하기 위해서 공부시작.
이렇게 freebsd와 jail 에 대해서 알아간다.
시작
데이터셋에 있는 데이터에 접근하기 위해서는 다음과 같은 설정이 되어야 합니다.
dataset/folder 에 접근할 수 있게 마운트
data folder 의 쓰기 권한
플러그인 jail 에서 접근할 수 있는 dataset 만들기
dataset은 jail 외부에 구성을해서 정기적인 snapshot 또는 백업 환경을 구성해 주는 것이 좋습니다. 이를 jail 에서 마운트 해서 사용하는 것입니다.
일반적으로 jail 에서는 외부의 파일에 접근 할 수 없습니다.
jail 에 dataset 연결하기
Mount points
를 통해서 접근하게 설정할 수 있습니다.
다음 문서를 참조해서 설정을 합시다.
Permission 설정
플러그인에서 파일에 접근하기 위해서는 4가지 방법이 있습니다.
모든 파일와 폴더는 UNIX Permision level, UID 소유권한(ownership), GID 권한(ownership)을 가지고 있으며, 사용자/그룹 구성원을 권한을 결정합니다. 기본 UNIX 권한은 FreeBSD의 가이드 북에 설명되어 있습니다.
Value | Permission | Directory Listing |
---|---|---|
0 | No read, no write, no execute | --- |
1 | No read, no write, execute | --x |
2 | No read, write, no execute | -w- |
3 | No read, write, execute | -wx |
4 | Read, no write, no execute | r-- |
5 | Read, no write, execute | r-x |
6 | Read, write, no execute | rw- |
7 | Read, write, execute | rwx |
JAIL
과Freenas HOST
는 user/group 에 대한 정보를 공유하지 않습니다.
에직 매핑되어 있는 사용자가 있으면 그 정보가 공유 됩니다.
jail 사용자 영역(plugin) 내에 실행 중인 프로세스는 jail 의 user/group 설정에 따라 파일 파일/폴더 에 읽고 쓸 수 있습니다.
가본적으로 대부분의 플러그인은 특정 UID를 가진 특정 사용자로 실행되며 데이터 디렉토리라고 하는 구성(Configuration)/db/logs 를 유지합니다.
절대 감옥 데이터 세트의 소유권 또는 권한 수준을 변경하지 마십시오.
여기에 포함된 운영시스템과 앱 파일들이 수정되면 시스템이 제대로 동작하지 않을 수 있습니다. 오직, dataset의 소유권한과 권한수준만 변경하시기 바랍니다.
사용자 쓰기 가능
plugin 기본 사용자로 UID 가 일치하는 FreeNas WebUI 사용자를 추가합니다.
dataset/folder 소유권을 새로 추가한 사용자로 변경하십시오.
UID
는cat /etc/passwd
명령어를 통해서 알 수 있습니다.nomad:*:472:472:Nomad Daemon:/var/tmp/nomad:/usr/sbin/nologinminio:*:473:473:Minio Daemon:/var/tmp/minio:/usr/sbin/nologinnetdata:*:302:302:NetData Daemon:/var/cache/netdata:/usr/sbin/nologin
에 있는 302:302 에서 앞에 숫자
사용자 쓰기 가능
- 이게 잘 작동함
jail
안에서 dataset/folder 소유권한이 일치하는 UID 가진 사용자를 추가히십시오.
pw useradd -n USER -u UID -d /nonexistent -s /usr/sbin/nologin
jail 에서 플러그인이 실행되는 사용자를 변경하고 data 디렉토리의 소유권한을 변경합니다.
service 플러그인 onestopchown -R USER:GROUP /var/db/PLUGINsysrc '플러그인_user=USER'service 플러그인 start
그룰 쓰기 가능 추가
그룹쓰기가 가능하도록 dataset/folder의 소유권한을 변경합니다.
jail 에서 일치하는 GID를 가진 그룹을 dataset/folder의 그룹 소유자로 추가 합니다.
pw groupadd -n 그룹 -g GID
jail 에서 플러그인이 실행되는 사용자를 새로 추가 된 그룹에 추가합니다.
pw groupmod 그룹 -m 사용자
다른 쓰기 가능
- 잘 안됨
dataset/folder 에 다른쓰기 권한을 변경합니다.
smb 를 통해서 파일을 추가할 때 사용자의 기본 user/group 으로 파일이 저장이 된다.
dlna 에서 권한이 없어서 dlna에서 파일을 읽을 수 없는 상태가 된다.
결론
jail
안에서 HOST에 있는 그룹(gid)을 추가해서 서비스(dlna)를 그 그룹에 추가 했다
# meida group 생성pw groupadd -n media -g 8888888pw groupmod media -m dlna
그런데 이렇게 하니 권한이 없다며 안되다.
이번에는 media 유저를 추가했다. 이것은 HOST의 media의 사용자 권한을 가져가는 것과 같다
pw useradd -n media -u 8888888 -d /nonexistent -s /usr/sbin/nologin
까지 설정 한 뒤에 /usr/local/etc/minidlna.conf
의 설정해서 아래와 같이 실행하는 USER를 변경 해 줬다.
# specify the user account name or uid to run asuser=media
연구를 좀 더 해봐야 한다.
'컴퓨터' 카테고리의 다른 글
개발자에게 유용한 Github 저장소 10가지 (0) | 2020.04.08 |
---|---|
MAC | grep 과 sed 를 통한 파일 변경 (0) | 2020.03.24 |
노트북 올바른 자세로 사용하기 (0) | 2020.02.03 |
현재 wiki 문서 도입 중... (1) | 2019.08.06 |
실리콘 밸리의 개발자 대부분은 Linux, Window 보다 MacOS를 선호할까? (1) | 2019.06.02 |