Как смонтировать общий ресурс SMB, доступ к которому может получить любой пользователь Mac OS X El Capitan

10

Как я могу установить общий сетевой ресурс 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, имеет доступ к общему ресурсу

Ритис я
источник
Проверил свой первый метод и не нашел проблем. Я могу смонтировать и получить доступ к общему ресурсу с правами root, мной и другим пользователем. После монтажа независимо от noowners или nosuidфлагов у меня всегда текущего пользователя в качестве владельца и в staffкачестве группы на точку монтирования. (Кстати , у вас есть опечатка nownessв /etc/auto_master)
techraf
1
@techraf хороший улов! Спасибо за проверку, очень жаль, что у вас другой результат. Может ли разрешение самой папки иметь к этому какое-то отношение? Я постараюсь возиться с этим сегодня вечером
Rytis I
1
Привет @Rytis l, у меня та же проблема - ты решил это?
HankCa
@HankCa Нет, все еще есть эта проблема :(
Rytis I
Интересно, вы нашли способ решить эту проблему?
Lazy Log

Ответы:

2

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

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

/ и т.д. / auto_nfs:

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

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

Томми Уймонен
источник
1

Кажется, что 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, как вы упомянули.

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

Тэхён Ю
источник
-1

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

Марк Огье
источник
Не уверен, что это покрывает мой случай использования. Идея заключается в том, что общий ресурс должен быть установлен при запуске ОС для каждого пользователя. Но я попробую и
Rytis I
ОК, так что «Обмен» делится папкой с Mac другим. То, что я пытаюсь достичь - это наоборот. Я пытаюсь подключить существующий сетевой ресурс к моему Mac.
Rytis I
Хорошо, тогда вы хотите поделиться папкой из Linux? Извините, я искал неправильное направление ^ _ ^ Я делал это и в системе Debian. Возможно, мне лень, но вместо CLI я также использовал панель настроек Gnome, чтобы активировать общий доступ к папке.
Марк