Fusionmount용 사용자별 fstab

Fusionmount용 사용자별 fstab

퓨저마운트에 대해 "사용자별 /etc/fstab"과 같은 것이 있는지 궁금합니다. ~/.fstab, ~/.config/fstab과 같은 것을 FUSE와 함께 사용할 수 있습니다.

나는 사용했다

sshfs foo.bar: foo.bar/

홈 디렉터리에서 원격 디렉터리에 연결합니다(foo.bar 디렉터리가 있고 이에 따라 .ssh/config가 설정되어 있습니다). 그러나 나는 foo.bar를 반복하는 것을 좋아하지 않으며 간단한 명령 [cmd] foo.bar/를 사용하여 원격 디렉토리를 마운트하고 싶습니다. 인터넷 검색 후 /etc/fstab에서 다음 줄과 함께 간단한 "mount foo.bar/"를 사용할 수 있다는 것을 발견했습니다(/etc/fuse.conf에서 "user_allow_other"도 활성화해야 함).

[email protected]:  /home/user/foo.bar  fuse.sshfs  user,IdentityFile=/home/user/.ssh/id_rsa,port=12345,allow_other  0  0

이제 "mount foo.bar"가 예상대로 작동합니다("umount"도 작동함). 그러나 사용자별 목적을 위해 시스템 전체 파일을 편집하는 것은 다소 이상해 보입니다. 또한 .ssh/config에 이미 있는 설정이 해당 위치(포트)에서 반복되고 ID 파일을 지정해야 합니다. 더 많은 사이트(사용자)에 대해 이를 유지하는 것은 불편해 보이며 분명히 /etc/fstab의 목적이 아닙니다. 또 다른 이상한 점은 이 솔루션을 사용할 때 FUSE가 루트(afaictl)에 의해 실행된다는 것입니다.

나는 사용자별 fstab에 "fusermount foo.bar/"와 같은 것을 선호합니다.

그런 게 있나요?

답변1

각 사용자에 해당하는 것은 없습니다 /etc/fstab. 선택한 파일을 읽고 적절한 설치 명령을 호출하는 쉘 스크립트를 작성할 수 있습니다. 매개변수에서 서버 위치 , 서버의 디렉터리(이 경우 홈 디렉터리), 그리고 가장 중요한 사실인 SSHFS 마운트 등 foo.bar여러 정보를 추론해야 합니다 .foo.bar

#!/bin/bash
####
if [ -e ~/.fstab ]; then
  args=("$@")
  ((i=${#args[@]}-1))
  target=${args[$i]}
  while read filesystem mount_point command options comments; do
    if [[ $filesystem = \#* ]]; then continue; fi
    if [[ $mount_point = "$target" || $filesystem = "$target" ]]; then
      if [[ -n $options ]]; then
        args[$((i++))]=-o
        args[$((i++))]=$options
      fi
      args[$((i++))]=$filesystem
      args[$((i++))]=$mount_point
      exec "$3" "${args[@]}"
    fi
  done
fi
## Fall back to mount, which looks in /etc/fstab
mount "$@"

(경고: 테스트되지 않은 코드입니다.)

~/.fstab/etc/fstab이 코드 조각은 "장치", 마운트 지점, 파일 시스템 유형, 옵션 구문을 사용하여 파일을 구문 분석합니다 . 여기서 파일 시스템 유형은 실행할 명령이고 "장치"는 파일 시스템과 관련이 있다는 점에 유의하시기 바랍니다. 일반적인 규칙이지만 모든 FUSE 파일 시스템 명령이 "device" 뒤에 마운트 지점이 오는 이 구문을 사용하는 것은 아닙니다.

ID 파일, 원격 사용자 이름 등과 같은 SSH 옵션을 에 남겨 둘 수 있습니다 ~/.ssh/config. 이를 입력하는 유일한 이유 /etc/fstab는 모든 사용자가 이러한 옵션을 사용할 수 있도록 하기 위해서입니다.

관련 정보