타오나스를 구매하고 난 뒤에 시롤로지 시스템을 매번 업그레이드 할때마다 수작업 하는게 싫어서 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
연구를 좀 더 해봐야 한다.