afuse 사용자 수준 자동 마운트 프로그램은 sshfs와 통합되어 로컬 사용자 로그인에 의해 생성된 시스템 서비스 역할을 합니다.

afuse 사용자 수준 자동 마운트 프로그램은 sshfs와 통합되어 로컬 사용자 로그인에 의해 생성된 시스템 서비스 역할을 합니다.

2020 편집 : 나는 사용하고 있습니다systemd-답변은 아래에 게시되어 있습니다.몇년이 지났는데 정말 만족스럽습니다.

원격 파일 처리를 용이하게 하기 위해 다음을 설정했습니다.afuse그리고sshfs.bashrc로컬 사용자에서 실행하십시오. bash init 후에는 모든 원격 트리가 ~/.ssh/config/원하는 대로 마운트되고 ~/scp/올바른 액세스 권한/제한이 적용됩니다.

현재 위치(파일 출처) .bashrc:

exists(){ [[ ${1:0:1} == "/" ]] && { test -f $1 || test -d $1; } \
          || command -v $1 >/dev/null 2>&1;                        }

# Run an afuse process as daemon
if pgrep -u $USER -f "afuse.*$USER/scp" >/dev/null ; then
  echo "afuse/sshfs already running"
else
  exists afuse && exists sshfs && exists $HOME/scp \
  && export TAfuseX=$(mktemp --suffix=__afuse) && chmod u+x "$TAfuseX" \
  && echo -e "#!/bin/sh\ngrep '^Host ..' ~/.ssh/co* |colrm 1 5" > $TAfuseX \
  && echo "running afuse/sshfs with nohup" \
  && nohup afuse -o mount_template="sshfs %r:/ %m" \
                 -o unmount_template="fusermount -u -z %m" \
                 -o populate_root_command=$TAfuseX \
                 ~/scp 2>&1 > ~/afuse.log
fi

(@sato-katsura의 유용한 팁이 이미 위에 포함되어 있습니다)

위의 내용은 기계가 종료될 때까지 제대로 작동하도록 보장합니다. X개의 정지/시작 횟수와는 아무런 관련이 없습니다. 퓨즈 충돌이 발생하면(본 적이 없습니다) 다음 쉘이 이를 다시 생성합니다.

마이그레이션하기 전에도 유용한 최적화, 문제점 또는 다른 팁을 보셨나요 systemd? 이것을 시스템 사용자 단위로 어떻게 포장합니까?

답변1

나는 이것을 사용하고있다몇 년 전의 사용자 서비스 단위 정의 파일:afuse.service

[Unit]
Description="SSHFS via Afuse automounter"
AssertPathExists=%h/scp/
AssertFileIsExecutable=/usr/bin/afuse
AssertFileIsExecutable=/usr/bin/sshfs

[Service]
Type=forking
WorkingDirectory=%h/scp
ExecStart=/usr/bin/afuse \
    -o fsname=AutoSCP \
    -o timeout=300 \
    -o auto_unmount \
    -o flushwrites \
    -o mount_template="sshfs -o ServerAliveInterval=10 -o reconnect %%r:/ %%m" \
    -o unmount_template="fusermount -u -z %%m" .
Restart=always
PrivateTmp=true
#NoNewPrivileges=true  <- That option breaks this unit, why?

[Install]
WantedBy=default.target

afuse.service다음 위치에 위 내용이 포함된 파일을 만듭니다.

  • ~/.config/systemd/user/나만을 위해 설치하는 경우
  • /etc/systemd/user/모든 로컬 사용자용으로 설치하는 경우

이 서비스를 설치하십시오:

mkdir ~/scp  # Or Home Directories of all existing users + /etc/skel/ 
systemctl --user daemon-reload   # If root, then omit '--user'
# If enabling only for the current user:
systemctl --user enable afuse.service
# If enabling for all users, execute as root:
# systemctl --user --global enable service
systemctl --user start afuse.service

필요한 경우 소켓을 가 아닌 /tmp/...아래 어딘가에 배치하도록 SSH-AGENT를 구성할 수 ~있으며 서비스는 프록시를 사용할 수 있어야 합니다. (요청 시 정확한 단계를 추가할 수도 있습니다. @dirdi)

관련 정보