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)

おすすめ記事