从本地用户登录生成的afuse用户级自动挂载程序与sshfs集成为systemd服务

亚历克斯·斯特吉斯(Alex Stragies)

2020年修改版:几年来,我一直在使用下面发布systemd-answer,对此感到非常满意。

为了便于与远程文件,我设置的工作afusesshfs从运行.bashrc本地用户。bash初始化后,所有远程树~/.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停止/启动无关。万一发生灾难性崩溃(我从未见过),下一个shell将重新生成它。

即使将其迁移到之前,您是否看到任何有用的优化,陷阱或其他提示systemd您如何将其包装到systemd用户单元中?

亚历克斯·斯特吉斯(Alex Stragies)

几年来,我一直在使用这个用户服务单元定义文件: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

如果需要,您可以将SSH-AGENT配置为不将套接字放置在中/tmp/...,而是将其放置在之下~,那么该服务应该能够使用代理。(如果有需求,我也可以添加确切的步骤,@ dirdi)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

登录到隐藏的本地用户

来自分类Dev

向IdentityServer3注册后自动登录本地用户

来自分类Dev

Windows AD用户登录到Windows服务-在本地用户和组中不可见的用户

来自分类Dev

无法拒绝选定的本地用户登录ftp服务器

来自分类Dev

XRDP:如何在没有本地用户登录的情况下获得远程终端服务?

来自分类Dev

无法在没有密码的本地用户帐户下运行服务(“登录失败”)

来自分类Dev

仅当用户SSH进入远程服务器时才设置SSHFS自动挂载吗?

来自分类Dev

审核远程服务器上的本地用户帐户

来自分类Dev

如何以本地用户身份运行btsync服务?

来自分类Dev

无需本地用户身份验证本地用户

来自分类Dev

从 Azure 清除本地用户

来自分类Dev

以本地用户身份在启动时自动启动python GUI应用程序(beagle bone black)

来自分类Dev

getent passwd仅输出本地用户

来自分类Dev

VB获取本地用户列表

来自分类Dev

以root身份运行本地用户cronjob

来自分类Dev

WDF桌面应用程序带有MDF,所有本地用户都在本地使用

来自分类Dev

CentOS本地用户无法通过FTP登录查看目录/文件

来自分类Dev

无法在Windows 10中使用新的本地用户登录

来自分类Dev

Linux:如何向登录X11的本地用户发送消息?

来自分类Dev

VirtualBox仅在登录本地用户之后才允许通过NAT的ssh

来自分类Dev

每次创建新的本地用户帐户时,如何防止Windows 8.1自动重新安装Metro应用程序?

来自分类Dev

如何通过来自同一本地用户的密钥登录使用两个不同的用户名登录同一台远程服务器?

来自分类Dev

如何正确退出远程桌面会话?tsdiscon现在以本地优先级记录本地用户

来自分类Dev

以本地系统而非本地用户身份读取本地文件

来自分类Dev

Azure移动服务本地用户名和通行证

来自分类Dev

如何将本地用户迁移到域用户?

来自分类Dev

Crontab找不到本地用户的bin目录中安装的程序

来自分类Dev

如何运行要从常规用户的systemd服务中成为根用户的进程?

来自分类Dev

启用的systemd用户服务未在登录时启动

Related 相关文章

  1. 1

    登录到隐藏的本地用户

  2. 2

    向IdentityServer3注册后自动登录本地用户

  3. 3

    Windows AD用户登录到Windows服务-在本地用户和组中不可见的用户

  4. 4

    无法拒绝选定的本地用户登录ftp服务器

  5. 5

    XRDP:如何在没有本地用户登录的情况下获得远程终端服务?

  6. 6

    无法在没有密码的本地用户帐户下运行服务(“登录失败”)

  7. 7

    仅当用户SSH进入远程服务器时才设置SSHFS自动挂载吗?

  8. 8

    审核远程服务器上的本地用户帐户

  9. 9

    如何以本地用户身份运行btsync服务?

  10. 10

    无需本地用户身份验证本地用户

  11. 11

    从 Azure 清除本地用户

  12. 12

    以本地用户身份在启动时自动启动python GUI应用程序(beagle bone black)

  13. 13

    getent passwd仅输出本地用户

  14. 14

    VB获取本地用户列表

  15. 15

    以root身份运行本地用户cronjob

  16. 16

    WDF桌面应用程序带有MDF,所有本地用户都在本地使用

  17. 17

    CentOS本地用户无法通过FTP登录查看目录/文件

  18. 18

    无法在Windows 10中使用新的本地用户登录

  19. 19

    Linux:如何向登录X11的本地用户发送消息?

  20. 20

    VirtualBox仅在登录本地用户之后才允许通过NAT的ssh

  21. 21

    每次创建新的本地用户帐户时,如何防止Windows 8.1自动重新安装Metro应用程序?

  22. 22

    如何通过来自同一本地用户的密钥登录使用两个不同的用户名登录同一台远程服务器?

  23. 23

    如何正确退出远程桌面会话?tsdiscon现在以本地优先级记录本地用户

  24. 24

    以本地系统而非本地用户身份读取本地文件

  25. 25

    Azure移动服务本地用户名和通行证

  26. 26

    如何将本地用户迁移到域用户?

  27. 27

    Crontab找不到本地用户的bin目录中安装的程序

  28. 28

    如何运行要从常规用户的systemd服务中成为根用户的进程?

  29. 29

    启用的systemd用户服务未在登录时启动

热门标签

归档