fstab을 사용하여 posixovl 마운트

fstab을 사용하여 posixovl 마운트

다음 줄:

/path1  /path2  posixovl    none    0   0

오류로 인해 실패합니다:

/sbin/mount.posixovl: invalid option -- 'o'
Usage: /sbin/mount.posixovl [-F] [-S source] mountpoint [-- fuseoptions]

이는 mount.posixovl비표준 설치 구문이 사용되며 fstab기본 설치 구문이 이를 호출한다고 가정하기 때문입니다.

mount.posixovl /path1 /path2 -o [whatsoever_/etc/fstab_options]

편집 #1: 동일한 문제는 이 linuxquestions.org Q&A에서 다음과 같은 더 추악한 해킹으로 해결되었습니다.[해결됨] 시작 시 Fuse-posixovl 파티션을 어떻게 설치하나요?

답변1

래퍼 스크립트를 공유해 주신 vehystrix에게 감사드립니다. 나는 최근에 이를 사용자의 집에 디렉토리를 마운트하는 데 사용했습니다. 귀하의 스크립트에서 개선하고 싶은 두 가지 문제를 발견했습니다.

  1. 원시 mont.posixovl바이너리의 이름을 바꾸면 배포판의 패키지 관리자가 새 업데이트를 설치하면 실행이 중지될 수 있습니다.
  2. 원래 버전은 mount.posixovl항상 루트로 시작되었으며 설치 옵션을 무시하는 것 같았 uid=습니다 gid=. 이로 인해 파일 시스템을 마운트한 사용자가 파일 시스템에 액세스할 수 없게 됩니다.

스크립트를 약간 변경하고 (우분투 패키지 이름을 기준으로)에 저장하여 /sbin/mount.fuse-posixovlfstab의 유형을 사용하여 fuse-posixovl설치할 수 있었습니다.

다음은 스크립트의 수정된 버전입니다.

#!/bin/bash
# wrapper for mount.posixovl to conform with common mount syntax
# with this wrapper posixovl can be used in fstab
 
# location of the original mount.posixovl
origposixovl="/sbin/mount.posixovl"
 
# gather inputs
while [ $# -gt 0 ]; do
        if [[ "$1" == -* ]]; then
                # var is an input switch
                # we can only use the -o or -F switches
                if [[ "$1" == *F* ]]; then
                        optsF="-F"
                else
                        optsF=""
                fi
                if [[ "$1" == *o* ]]; then
                        shift
                        if [[ "$1" == *uid=* ]]; then
                                runas=$(getent passwd $(echo "$1" | sed -E -e 's/^.*uid=([^,]+)(,.*)?$/\1/') | cut -d: -f1)
                        fi
                        optsfuse="-- -o $1"
                else
                        optsfuse=""
                fi
                shift
        else
                # var is a main argument
                sourcedir="$1"
                shift
                if [[ "$1" != -* ]]; then
                        targetdir="$1"
                        shift
                else
                        targetdir="$sourcedir"
                fi
        fi
done
 
# verify inputs
if [ "$sourcedir" == "" ]; then
        echo "no source specified"
        exit 1
fi
if [ "$targetdir" == "" ]; then
        echo "no target specified"
        exit 1
fi
 
# build mount.posixovl command
if [[ -n "$runas" ]]; then
        su - "${runas}" -c "\"$origposixovl\" $optsF -S \"$sourcedir\" \"$targetdir\" $optsfuse"
else
        "$origposixovl" $optsF -S "$sourcedir" "$targetdir" $optsfuse
fi

다음은 이를 사용하는 fstab 줄의 예입니다.

/home/myuser/Nextcloud/homebin            /home/myuser/bin fuse-posixovl   uid=1000,gid=1000    0 0

답변2

mount.posixovl나는 이것을 사용할 수 있도록 래퍼를 작성했습니다.fstab

먼저 다음 /sbin/mount.posixovl과 같은 다른 이름으로 이름을 바꿉니다./sbin/mount.posixovl.orig

/sbin/mount.posixovl마지막으로 다음 내용으로 새 파일을 만듭니다.

#!/bin/bash
# wrapper for mount.posixovl to conform with common mount syntax
# with this wrapper posixovl can be used in fstab

# location of the original mount.posixovl
origposixovl="/sbin/mount.posixovl.orig"

# gather inputs
while [ $# -gt 0 ]; do
        if [[ "$1" == -* ]]; then
                # var is an input switch
                # we can only use the -o or -F switches
                if [[ "$1" == *F* ]]; then
                        optsF="-F"
                else
                        optsF=""
                fi
                if [[ "$1" == *o* ]]; then
                        shift
                        optsfuse="-- -o $1"
                else
                        optsfuse=""
                fi
                shift
        else
                # var is a main argument
                sourcedir="$1"
                shift
                if [[ "$1" != -* ]]; then
                        targetdir="$1"
                        shift
                else
                        targetdir="$sourcedir"
                fi
        fi
done

# verify inputs
if [ "$sourcedir" == "" ]; then
        echo "no source specified"
        exit 1
fi
if [ "$targetdir" == "" ]; then
        echo "no target specified"
        exit 1
fi

# build mount.posixovl command
"$origposixovl" $optsF -S "$sourcedir" "$targetdir" $optsfuse

물론 새로 생성된 것을 /sbin/mount.posixovl실행파일( chmod +x /sbin/mount.posixovl) 로 설정해주세요.

posixovl장착 슬롯이 유용합니다.fstab

관련 정보