You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在macOS上为SMB网络共享设置稳定的挂载点?

如何在macOS上为SMB网络共享设置稳定的挂载点?

我在MacBook上创建了多个用户账号,比如给家里不同成员使用,或者用来区分不同的工作角色。这些用户经常需要访问一台通过SMB协议提供数据的文件服务器。

目前的情况是,当用户连接SMB共享时,共享会被挂载到/Volumes目录下。举个例子,假设共享名称是data

  • 第一个挂载该共享的用户(比如用户A)会得到挂载点/Volumes/data
  • 第二个挂载的用户(用户B)的挂载点会变成/Volumes/data-1
  • 第三个挂载的用户(用户C)则会拿到/Volumes/data-2
  • 以此类推

但这里有个麻烦的问题:如果系统重启后用户登录顺序变了,或者用户注销后重新登录,挂载点就会发生变化。比如下次用户C第一个挂载这个共享,他的挂载点就会变成/Volumes/data,而之前的用户可能就会拿到带后缀的路径。这种不稳定的挂载点会导致依赖固定路径的脚本、快捷方式或者应用程序出现问题,非常头疼。

解决方法:为每个用户设置专属固定挂载点

我们可以给每个用户创建独立的固定挂载目录,通过命令行或自动挂载配置来保证路径稳定,不会和其他用户冲突:

  1. 创建用户专属挂载目录
    打开终端,在当前用户的个人目录下创建一个固定的挂载文件夹,比如:

    mkdir ~/SMB-Data
    

    这个目录属于当前用户私有,不会和其他用户的挂载路径产生冲突。

  2. 手动挂载SMB共享到固定路径
    使用mount_smbfs命令指定挂载点,终端输入:

    mount_smbfs //你的SMB用户名@服务器地址/data ~/SMB-Data
    

    输入命令后终端会提示你输入SMB密码,这种方式比直接把密码写在命令里更安全;如果密码包含特殊字符,记得用反斜杠\转义。

  3. 设置登录自动挂载(可选)
    如果想让用户登录时自动完成挂载,可以创建一个Launch Agent:

    • ~/Library/LaunchAgents/目录下新建一个名为com.user.smb-data.plist的文件,内容如下:
      <?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.user.smb-data</string>
          <key>ProgramArguments</key>
          <array>
              <string>/sbin/mount_smbfs</string>
              <string>//你的SMB用户名@服务器地址/data</string>
              <string>/Users/你的用户名/SMB-Data</string>
          </array>
          <key>RunAtLoad</key>
          <true/>
          <key>KeepAlive</key>
          <false/>
      </dict>
      </plist>
      
    • 保存文件后,在终端执行命令加载这个配置:
      launchctl load ~/Library/LaunchAgents/com.user.smb-data.plist
      

    这样每次用户登录时,共享就会自动挂载到指定的固定路径下。

备选方案:全局固定挂载点(适合多用户共享同一路径)

如果多个用户需要共用同一个固定挂载点,可以在系统级目录下创建挂载路径:

  1. 创建全局挂载目录:
    sudo mkdir /mnt/smb-data
    sudo chmod 777 /mnt/smb-data
    
  2. 编辑/etc/fstab文件,添加一行配置:
    //你的SMB用户名:SMB密码@服务器地址/data /mnt/smb-data smbfs rw,auto,user 0 0
    
    注意:这种方法需要把SMB密码明文写在配置文件里,安全性较低,仅推荐在信任的环境中使用。

备注:内容来源于stack exchange,提问作者herzbube

火山引擎 最新活动