虽然 macOS 自带的文件共享使用 smb 协议,但在我的其他硬盘上不支持为不同用户设置访问权限。此外,在使用Tuxera NTFS挂载的硬盘上开启共享会导致电脑死机。因此,本文将介绍如何在 macOS 上安装第三方 samba 服务端,并支持为不同用户设置访问权限。

安装 samba

首先需要安装有homebrew,在终端中执行:

brew install samba

由于安装的samba会将用户名和密码存储在 /usr/local/Cellar/samba/版本号/private 中,因此每次用更新时都要重新设置账号密码,因此新建一个文件夹存放:

mkdir /usr/local/Cellar/samba/private

编辑配置文件

随后新建配置文件/usr/local/etc/smb.conf,参考如下:

[global]
    # 全局配置。
    server string = Kyles Media Share
    # 服务器名称,可自定义。
    private dir = /usr/local/Cellar/samba/private
    # 修改private文件夹位置。
    # 示例 [kyle] 仅限特定用户访问,可读可写。
    # 示例 [tv] 存放影视资源,支持访客查看,只读不可写。
[kyle]
    # 共享名称,可自定义。
    comment = private share
    # 共享备注,可自定义。
    path = /Volumes/Kyle
    # 本地文件夹路径。
    valid users = kyle
    # 可以访问的用户,用逗号隔开。
    admin users = kyle
    # 管理员用户,上述用户的操作会以root权限执行。
    browseable = yes
    # 是否在可用共享列表中看到此共享。
    available = yes
    # 是否可用,输入no时无法访问。   
    public = no
    # 是否支持访客登录。同 guesk ok。
    read only = no
    # 是否只读。同 writable 相反(read only=yes和writable=no作用相同)。
[tv]
    comment = tv
    path = /Volumes/Kyle/0影视剧
    admin users = kyle
    browseable = yes
    available = yes
    public = yes
    # 公开的共享,可使用nobody账号登录。
    read only = yes
    # 只读。

如何访问usr文件夹:
1. 在终端中输入 touch /usr/local/etc/smb.conf 新建文件。
2. 在访达菜单栏中选择“前往-前往文件夹”,输入 /usr/local/etc 。
3. 打开smb.conf并编辑。

测试配置文件,运行后按enter可查看生效的配置:

testparm /usr/local/etc/smb.conf

新建 samba 用户

在终端中执行:

sudo smbpasswd -a kyle
# kyle是登录时的用户名,系统中也需要有对应的用户,否则会出现错误:
# Failed to add entry for user
sudo smbpasswd -a nobody
# 添加访客账号,可以不输入密码直接回车

如何新建本地用户:设置-用户与群组-添加账户,新账户选择“仅限共享”。

开启共享

首先测试是否正常运行:

sudo /usr/local/sbin/samba-dot-org-smbd -i -s /usr/local/etc/smb.conf
# -i 表示前台运行,可以查看是否报错
# -s 指定配置文件位置
# 可以通过新建终端,执行 sudo killall samba-dot-org-smbd 关闭进程。

如果提示 directory_create_or_exist: mkdir failed on directory /usr/local/Cellar/samba/4.17.5/private/msg.sock: No such file or directory,是因为没有按前文所说的修改private文件夹。或者手动创建该文件夹,但每次更新都要重新操作:

mkdir /usr/local/Cellar/samba/4.17.5/private
# 注意将其中的4.17.5替换为提示中的版本号
# 每次更新samba软件都要再次新建private文件夹

测试无误后通过下方代码让samba服务在后台运行:

sudo /usr/local/sbin/samba-dot-org-smbd -D -s /usr/local/etc/smb.conf
# -D 表示后台运行

如果要暂停共享,以下两行代码任意选择一行执行:

sudo smbcontrol smbd shutdown
sudo killall samba-dot-org-smbd

配置 samba 服务自启动

在终端中执行:

sudo vi /Library/LaunchDaemons/org.samba.smbd.plist

输入以下内容:

<!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>org.samba.smbd</string>
        <key>ProgramArguments</key>
        <array>
                <string>/usr/local/sbin/samba-dot-org-smbd</string>
                <string>-D</string>
                <string>-s</string>
                <string>/usr/local/etc/smb.conf</string>
        </array>
        <key>RunAtLoad</key>
        <true/>
        <key>KeepAlive</key>
        <true/>
</dict>
</plist>

备注:按i进入编辑模式,完成后按esc,输入:wq保存并退出。

接着在终端中执行:

sudo launchctl load /Library/LaunchDaemons/org.samba.smbd.plist

在活动监视器中看到 samba-dot-org-smbd 即表示软件已在后台运行。

samba

关闭自启动:

sudo launchctl unload /Library/LaunchDaemons/org.samba.smbd.plist

连接 samba 服务器

以iOS nPlayer为例:网络-菜单-新建服务器-SMB/CIFS,主机可填写电脑的NetBIOS名称或IP地址,并填写相应的用户名和密码。

查询电脑NetBIOS:在终端中输入 hostname。

查询电脑IP地址:按住option键的同时点击顶部的Wi-Fi按钮。


参考链接:

smb.conf

Mac Pro 开机自启动 PHP-FPM,Nginx,MySql 等软件