다음 줄:
/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에게 감사드립니다. 나는 최근에 이를 사용자의 집에 디렉토리를 마운트하는 데 사용했습니다. 귀하의 스크립트에서 개선하고 싶은 두 가지 문제를 발견했습니다.
- 원시
mont.posixovl
바이너리의 이름을 바꾸면 배포판의 패키지 관리자가 새 업데이트를 설치하면 실행이 중지될 수 있습니다. - 원래 버전은
mount.posixovl
항상 루트로 시작되었으며 설치 옵션을 무시하는 것 같았uid=
습니다gid=
. 이로 인해 파일 시스템을 마운트한 사용자가 파일 시스템에 액세스할 수 없게 됩니다.
스크립트를 약간 변경하고 (우분투 패키지 이름을 기준으로)에 저장하여 /sbin/mount.fuse-posixovl
fstab의 유형을 사용하여 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