9

Как я могу подключить сетевой ресурс 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

разрешение на / мультимедиа после монтажа

drwxrwxrwx   1 root  wheel  16384 Nov  8 11:04 Multimedia

пока это работает

root# cd /Multimedia

tl; dr только 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

Работает!

tl; dr только пользователь, вызвавший автомонтирование и root, имеет доступ к общему ресурсу

3 ответа3

3

Сделайте общий ресурс SMB монтируемым в качестве гостя, тогда он будет подключен с соответствующими разрешениями.

У меня была точно такая же проблема, и это работает для меня в Высокой Сьерре:

/ и т.д. / auto_nfs:

Public -fstype=smbfs,soft,noowners,noatime,nosuid smb://guest@192.168.1.1/Public

И после монтирования у него будут права drwxrwxrwx, и я могу просматривать его от разных пользователей.

0

У меня есть вопрос, который может быть ответом ...
Почему вы не используете "Общий доступ" в Системных настройках?
Затем вы выбираете Общий доступ к файлам, настраиваете папки и пользователей, и под кнопкой "Опции" вы найдете SMB.
Это должно сработать, и гораздо проще, чем с CLI.

0

Похоже, что macOS не позволяет пользователям монтировать сетевой диск SMB с пользовательскими битами uid/gid. И это только позволяет пользователю, который монтирует диск, получить доступ к диску. Я не знаю, заботится ли Apple о безопасности, или это просто ошибка. Но, к сожалению, это годами. Я протестировал несколько случаев на общем диске macOS-to-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)

Одно из предложений - использовать Fuse для macOS. Он предоставляет пользовательские параметры битов uid/gid и разрешения с флагом -o ; проверьте bindfs, который монтирует диск FUSE и изменяет разрешение. С помощью bindfs вы можете смонтировать диск smb, полученный с разрешения, после монтирования диска smb, как вы упомянули.

Но, думаю, лучше всего то, что у каждого пользователя есть свои общие диски.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .