타오나스를 구매하고 난 뒤에 시롤로지 시스템을 매번 업그레이드 할때마다 수작업 하는게 싫어서 opensource 로 되어 있는 나스 운영 시스템을 사용하기로 했다.
그 와 중에 freenas 라는 시스템이 눈에 들어왔고 일단 설치해서 사용하는 도중에 JAIL이라는 VM 시스템이 있어서 이를 통해 다양한 시스템을 올려보고 있는 상황이이었다. 그런데 이게 서비스가 돌아가는 시스템이 익숙한 시스템이 아닌지라 공부를 할 필요가 있었다.

minidlna 를 통해서 부모님 집에 파일을 올려주고 있는데, 이게 rwxrwx---권한으로 파일이 올려지는 것이다. 그리고,, dlna 권한은 이 dataset 의 폴더 권한이 없었다.

이를 해결하기 위해서 공부시작.

이렇게 freebsd와 jail 에 대해서 알아간다.

시작

데이터셋에 있는 데이터에 접근하기 위해서는 다음과 같은 설정이 되어야 합니다.

  1. dataset/folder 에 접근할 수 있게 마운트

  2. data folder 의 쓰기 권한

플러그인 jail 에서 접근할 수 있는 dataset 만들기

dataset은 jail 외부에 구성을해서 정기적인 snapshot 또는 백업 환경을 구성해 주는 것이 좋습니다. 이를 jail 에서 마운트 해서 사용하는 것입니다.
일반적으로 jail 에서는 외부의 파일에 접근 할 수 없습니다.

jail 에 dataset 연결하기

Mount points를 통해서 접근하게 설정할 수 있습니다.

Imgur

다음 문서를 참조해서 설정을 합시다.

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

JAILFreenas HOST는 user/group 에 대한 정보를 공유하지 않습니다.
에직 매핑되어 있는 사용자가 있으면 그 정보가 공유 됩니다.

jail 사용자 영역(plugin) 내에 실행 중인 프로세스는 jail 의 user/group 설정에 따라 파일 파일/폴더 에 읽고 쓸 수 있습니다.

가본적으로 대부분의 플러그인은 특정 UID를 가진 특정 사용자로 실행되며 데이터 디렉토리라고 하는 구성(Configuration)/db/logs 를 유지합니다.

절대 감옥 데이터 세트의 소유권 또는 권한 수준을 변경하지 마십시오.

여기에 포함된 운영시스템과 앱 파일들이 수정되면 시스템이 제대로 동작하지 않을 수 있습니다. 오직, dataset의 소유권한과 권한수준만 변경하시기 바랍니다.

사용자 쓰기 가능

plugin 기본 사용자로 UID 가 일치하는 FreeNas WebUI 사용자를 추가합니다.

dataset/folder 소유권을 새로 추가한 사용자로 변경하십시오.

UIDcat /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

연구를 좀 더 해봐야 한다.

반응형

+ Recent posts