使用 mount 命令

使用 mount 命令

如何安装任何人都可以访问的 SMB 网络共享?以下是我尝试的方法:

使用 mount 命令

me$ sudo mkdir /Multimedia
me$ sudo chmod 777 /Multimedia
me$ sudo mount -t smbfs -o nosuid,-d=777 //user:password@qnap/Multimedia /Multimedia/

然后

me$ cd /Multimedia      
-bash: cd: /Multimedia: Permission denied

安装后对 /Multimedia 的权限

drwxrwxrwx   1 root  wheel  16384 Nov  8 11:04 Multimedia

但这有效

root# cd /Multimedia

总结只有 root 可以访问已挂载的共享

使用自动挂载

/etc/auto_master

#
# Automounter master map
#
+auto_master            # Use directory service
/net                    -hosts          -nobrowse,hidefromfinder,nosuid
/home                   auto_home       -nobrowse,hidefromfinder
/Network/Servers        -fstab
/-                      -static
### SMB shares
/-                      /etc/automounts/smb -nosuid,noowners

/etc/automounts/smb

/Multimedia        -fstype=smbfs,soft,noowners,noatime,nosuid ://user:password@qnap/Multimedia

然后

me$ sudo automount -vc
automount: /net updated
automount: /home updated
automount: /Multimedia mounted
automount: no unmount

在那之后

me$ cd /Multimedia
me$ ls -ld /Multimedia/
drwx------  1 me  staff  16384 Nov  8 11:04 /Multimedia/

有效!但不幸的是其他用户无法访问

otheruser$ cd /Multimedia 
-bash: cd: /Multimedia: Permission denied

但如果我

me$ umount /Multimedia

进而

otheruser$ cd /Multimedia
otheruser$ ls -ld /Multimedia 
drwx------  2 otheruser  staff  1 Nov  8 15:17 /Multimedia

有用!但是

me$ cd /Multimedia
-bash: cd: /Multimedia: Permission denied

但是

root# cd /Multimedia

作品!

总结只有导致自动挂载的用户和 root 才有权访问共享

答案1

使 SMB 共享可以作为客户机安装,然后它将以正确的权限安装。

我遇到了完全相同的问题,并且在 High Sierra 中这对我有用:

在 /etc/auto_nfs 中:

Public -fstype=smbfs,soft,noowners,noatime,nosuid smb://[email protected]/Public

挂载后,它将具有 drwxrwxrwx 权限,我可以从不同的用户那里浏览它。

答案2

似乎 macOS 不允许用户使用自定义 uid/gid 位挂载 SMB 网络驱动器。并且它只允许挂载驱动器的用户访问该驱动器。我不知道 Apple 是否关心安全性,或者这只是一个错误。但不幸的是,多年来一直如此。我在 macOS 到 macOS 的共享驱动器上测试了几种情况:

    known-user@a-server:~% sudo ls -l
    -rw-r-----  1 known-user    known-group    0 Jun 13 10:50 a-file
    -rw-r-----  1 known-user    unknown-group  0 Jun 13 10:50 b-file
    -rw-r-----  1 unknown-user  known-group    0 Jun 13 10:50 c-file
    -rw-r-----  1 unknown-user  unknown-group  0 Jun 13 10:50 b-file

    who-mount@my-desktop:~% sudo ls -l
    -rw-r-----  1 who-mount     whose-group  0 Jun 13 10:50 a-file
    -rw-r-----  1 who-mount     whose-group  0 Jun 13 10:50 b-file
    -rw-r-----  1 who-mount     whose-group  0 Jun 13 10:50 c-file
    -rw-r-----  1 who-mount     whose-group  0 Jun 13 10:50 d-file

    who-mount@my-desktop:~% cat a-file
    who-mount@my-desktop:~% echo hello > a-file

    who-mount@my-desktop:~% cat b-file
    who-mount@my-desktop:~% echo hello > b-file

    who-mount@my-desktop:~% cat c-file
    who-mount@my-desktop:~% echo hello > c-file
    zsh: permission denied: c-file

    who-mount@my-desktop:~% cat d-file
    cat: d-file: Permission denied
    who-mount@my-desktop:~% echo hello > d-file
    zsh: permission denied: d-file
  1. 共享文件/文件夹的 uid/gid 始终who-mount:whose-group
  2. 共享服务器上的权限位相同a-server
  3. 服务器将其who-mount视为known-user:known-group (此处known-group为默认组know-user

一个建议是使用适用于 macOS 的 Fuse。它提供了带有标志的自定义 uid/gid 和权限位选项-o;请查看绑定文件系统它会挂载 FUSE 驱动器并更改权限。使用 bindfs,您可以在按照您提到的方式挂载 smb 驱动器后挂载获取权限的 smb 驱动器。

但是,我认为最好的是每个用户都有自己的共享驱动器。

答案3

我有一个问题可以回答...
为什么不使用系统偏好设置中的“共享”?
然后选择文件共享,设置文件夹和用户,在“选项”按钮下,您将找到 SMB。
这应该可以解决问题,而且比使用 CLI 容易得多。

相关内容