首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在系统启动/引导时通过sshfs安装文件系统

在系统启动/引导时通过sshfs安装文件系统
EN

Stack Overflow用户
提问于 2020-08-24 22:32:53
回答 2查看 1.2K关注 0票数 0

我在rsync.net有个账户。

我现在已经使用sshfs安装了这个文件系统。rsync.net帐户现在显示在查找器中,我可以使用查找器进行拖放。

莫哈韦10.14.6

现在,我希望在启动/系统启动时通过sshfs挂载rsync.net文件系统。这是如何做到的呢?如果在启动时很难挂载,那么登录时自动登录也是可以接受的。

下面是一些输出的各种命令,以更好地了解系统。

Tormods-MacBook:~ tormod$ sshfs --版本

SSHFS 2.5版(OSXFUSE SSHFS 2.5.0) OSXFUSE 3.10.3 FUSE库版本: 2.9.7 fuse:无挂载点Tormods-MacBook:~ tormod$

Tormods-MacBook:~ tormod$ kextstat\grep fuse 185 0 xffff7f85a93000 0x19000 0x19000

com.github.osxfuse.filesystems.osxfuse (3.10.3) AF3874A9-CF4E-39BF-A 807-F61D1E6FABBF <8 6 5 3 1> Tormods-MacBook:~tormod$

EN

回答 2

Stack Overflow用户

发布于 2020-08-28 15:12:01

我会就这件事作一次最新的说明。

脚本名为:脚本的startup.sh内容:

代码语言:javascript
复制
#!/usr/bin/env bash
#Load modules for Fuse
/Library/Filesystems/osxfuse.fs/Contents/Resources/load_osxfuse
/usr/sbin/sysctl -w vfs.generic.osxfuse.tunables.allow_other=1
#Connect to rsync_net
/usr/local/bin/sshfs XXXX@prio.ch-s011.rsync.net: /mnt/sshfs -oauto_cache,reconnect,local,volname=rsync_net,allow_other,defer_permissions

无论如何,我能够按终端运行脚本,但必须在终端中发出以下命令:

代码语言:javascript
复制
Tormods-MacBook-Pro:Scripts tormod$ sudo bash startup.sh
Password:
vfs.generic.osxfuse.tunables.allow_other: 1 -> 1
Tormods-MacBook-Pro:Scripts tormod$ 

输入脚本名称并输入脚本是不可能运行脚本的。所以,有些事情在起作用,有些事情不起作用.任何帮助都很感激!

最新情况:

我看过Launchd教程:https://medium.com/@chetcorcos/a-simple-launchd-tutorial-9fecfcf2dbb3

这是我试图运行时得到的错误代码:

代码语言:javascript
复制
Tormods-MacBook-Pro:LaunchDaemons tormod$ launchctl load com.startup.plist

来自Console.app的错误代码:

代码语言:javascript
复制
Sep  5 21:08:08 Tormods-MacBook-Pro com.apple.xpc.launchd[1] (com.apple.xpc.launchd.user.domain.501.100009.Aqua): com.startup (lint): UserName is not supported for non-System services.
Sep  5 21:08:08 Tormods-MacBook-Pro com.apple.xpc.launchd[1] (com.apple.xpc.launchd.user.domain.501.100009.Aqua): com.startup (lint): GroupName is not supported for non-System services.
Sep  5 21:08:08 Tormods-MacBook-Pro com.apple.xpc.launchd[1] (com.startup[680]): Could not find and/or execute program specified by service: 2: No such file or directory: /usr/bin/env bash /Users/root/Scripts/startup.sh
Sep  5 21:08:08 Tormods-MacBook-Pro com.apple.xpc.launchd[1] (com.startup[680]): Service setup event to handle failure and will not launch until it fires.
Sep  5 21:08:08 Tormods-MacBook-Pro com.apple.xpc.launchd[1] (com.startup[680]): Service exited with abnormal code: 78

我认为问题可能在于目录、文件或命令的chmod属性。

我相信脚本将以根用户的身份运行。那么,脚本所在的目录应该拥有什么所有权/ chmod呢?

脚本文件应该拥有什么所有权/ chmod?

我看到osx引线有几个属性。我在这里发现了不同的属性:

https://github.com/osxfuse/osxfuse/wiki/Mount-options

现在,我运行: allow_other

票数 0
EN

Stack Overflow用户

发布于 2020-09-29 10:57:42

新的"com.startup.plist“文件。现在,文件将在引导时加载并运行。

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.startup</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/local/bin/bash</string>
        <string>/Library/Scripts/Startup/startup.sh</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>StandardErrorPath</key>
    <string>/tmp/com.startup.stderr</string>
    <key>StandardOutPath</key>
    <string>/tmp/com.startup.stdout</string>
</dict>
</plist>

现在LaunchDaemons启动文件运行..。在这个系统上,我还配置了苹果的自动驾驶系统。我的坐骑清单:

代码语言:javascript
复制
bash-5.0# compgen -c | grep ^mount
mount_sshfs
mount_hfs
mount_apfs
mount_udf
mount_cd9660
mount_sshfs
mount_exfat
mount_webdav
mount_msdos
mount_9p
mount_ntfs
mount_nfs
mount_ftp
mount
mount_afp
mount_smbfs
mount_cddafs
mount_fdesc
mount_acfs
mount_devfs
bash-5.0# 

现在,当我禁用SIP时,一切都正常。sshfs与rsync.net的连接已启动,一个在启动/启动时连接。我为挂载点使用的设置:

代码语言:javascript
复制
/mnt/sshfs

这是需要的,以使自动驾驶和安装在启动时,能够一起工作。

“/etc/auto”的新内容

代码语言:javascript
复制
#
# Automounter master map
#
+auto_master       # Use directory service
/net               -hosts       -nobrowse,hidefromfinder,nosuid
/home              auto_home    -nobrowse,hidefromfinder
/Network/Servers   -fstab
/-                 -static
/mnt/sshfs         auto_sshfs   -nobrowse,nosuid

在finder中,磁盘或远程sshfs连接称为rsync_net,因为

代码语言:javascript
复制
volname=rsync_net

设置sshfs连接。

所以,现在一切都很好,直到我打开SIP,当这个打开时,保险丝将不再加载。

输出,输出

代码语言:javascript
复制
kextstat|grep fuse

没有启用SIP的输出。换句话说,当启用SIP时,用于fuse的模块不会加载在内核中……我希望有一个修复我可以做,因为我希望运行操作系统与SIP启用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63569542

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档