마운트 시점 폴더에 사용자 권한을 주기 위해서 자료조사, 테스트한것을 정리한다.
마운트 시점에서의 사용자 권한?
리눅스 부팅시 보안관련한 세팅을 해야한다. 구글링을 해보면, 대부분의 솔루션들이 mount
한 이후에 chmod
나 chown
명령어로 권한을 설정하면된다고 하고있다. 하지만, 뭔가 깔끔하지가 않다고 생각하였다.
부팅되는 처음 마운트 시점에서 권한 설정을 하면되는것 아닌가?!
마운트 된 이후에, 권한설정을 위해서 systemd service
를 추가하는것이 깔끔하지 않은것 같아서 다음과 같은 삽질을 하게되었다.
mount 시점에서의 사용자 권한 (permission mask) 설정
결론부터 이야기하자면, mount 시점에서 옵션으로 사용자 권한 설정은 불가능하다. (테스트 및 자료조사한 바로는 그렇다 ㅠㅠ)
단
ext3
,ext4
계열의 리눅스 파일시스템 말고,fat
,ntfs
같은 윈도우 파일시스템은 가능하다.
mount 명령어의 도움말 https://man7.org/linux/man-pages/man8/mount.8.html 을 살펴보면.. umask
와 같은 옵션을 통한 설정이 가능한것처럼 보이기도 하는데... 해당 문서를 잘 살펴보면, 권한 mask
설정이 가능한 파일시스템이 따로있다. 즉 ext3
, ext4
파일시스템을 쓴다면 마운트 옵션으로 permission
설정은 불가능한것 같다.
마운트를 한 마운트 포인트의 최상의 폴더에 대한 권한은 어쩔수없이 마운트 한 이후에 따로 서비스를 돌려야 할것 같다.
systemd 를 이용한 파일 마운트 시점 서비스
systemd 에서 파일 마운트 시점에 대해서는 다음의 포스팅을 참고.
mount 시점에서의 guid / uuid 설정
결론부터 이야기하자면, mount 시점에서 옵션으로 소유자 설정은 불가능하다.
단
ext3
,ext4
계열의 리눅스 파일시스템 말고,fat
,ntfs
같은 윈도우 파일시스템은 가능하다.
mount 명령어의 도움말 https://man7.org/linux/man-pages/man8/mount.8.html 을 살펴보면.. uid
와 같은 옵션을 통한 설정이 가능한것처럼 보이기도 하는데... 해당 문서를 잘 살펴보면, 권한 uid
설정이 가능한 파일시스템이 따로있다. 즉 ext3
, ext4
파일시스템을 쓴다면 마운트 옵션으로 uid
설정은 불가능한것 같다.
단, 마운트 될 타겟의 파티션의 파일시스템을 만들때 uid
, gid
를 설정하여 만들면 설정가능!!
mkfs 의 사용자 지정옵션
mkfs.ext4
, mkfs.ext3
명령어의 확장 옵션을 사용하면된다.
mkfs 명령어 도움말 https://man7.org/linux/man-pages/man8/mke2fs.8.html 에서 -E extended-options
부분을 살펴보자
-E extended-options
의root_owner
을 사용하면된다.
간단하게 다음의 예제를 보자.
mkfs.ext4 -F /dev/mmcblk0p3 -E root_owner=0:1000
-E root_owner=0:1000
옵션을 통해 owner id 를0:1000
으로 설정한다.- uid:gid 를 직접지정가능하다.
위와같이 하면, mount 시점에서 uid:gid
가 설정된 상태에서 마운트된다.
yocto wic 명령어를 통한설정
임베디드 시스템의 경우 yocto wic 를 사용하여, 파티션을 잡는경우가 많을것이다.
역시 part 명령어의 옵션중에 위의 mkfs 의 명령어를 그대로 사용한다. mkfs 의 확장명령어를 사용하기 위해서는 --mkfs-extraopts
옵션을 사용한다.
간단하게, 다음의 예제를 보자.
part --source rootfs [...각종옵션들...] --mkfs-extraopts "-E root_owner=0:1000"
--mkfs-extraopts "-E root_owner=0:1000"
옵션을 통해 owner id 를0:1000
으로 설정한다.- uid:gid 를 직접지정가능하다.
위와같이 하면, mount 시점에서 uid:gid
가 설정된 상태에서 마운트된다.