macOS Sierra: том монтирования AppleScript продолжает запрашивать логин

12

Для нескольких версий OS X я использовал:

/usr/bin/osascript -e mount volume "smb://yourserver" as user name  "yourusername" with password yourpassword

Это отлично сработало, приятное и тихое монтирование общего сетевого ресурса, если оно доступно, конечно.

Недавно я установил macOS Sierra (публичная бета-версия 10.12, сборка 16A238m), и сценарий все еще работает, однако теперь он внезапно будет всегда отображать диалоговое окно входа в систему, предварительно заполненное значениями «имя-пользователя» и «ваш пароль». Пользователю все равно придется нажать «Подключить», чтобы смонтировать общий ресурс.

Кто-нибудь знает, является ли это «ошибкой» в бета-версии (я сообщал об этом с помощью приложения Apple для обратной связи), или это ожидается и / или что будет «исправить» для этого?

См. Также: Документация AppleScript "том для монтирования"

Hanzaplastique
источник
3
Это может быть связано с тем фактом, что Apple заблокировала /Volumesпапку, в которой сетевой ресурс подключен только к корневому доступу, что требует авторизации пользователя для создания точки подключения. К сожалению, в настоящее время я не знаю, как обойтись, хотя я собираюсь поиграть с изменением sudoers на компьютере. У меня есть Open Radar на openradar.appspot.com/radar?id=4948585099558912, где Apple подтвердила, что она заблокирована.
Mattdwen

Ответы:

14

Как Apple ответила на билет, указанный в ссылке на открытый радар mattdwen выше, начиная с macOS Sierra 10.12,

вы больше не можете создавать элементы в / Volumes, кроме как root.

Кроме того, мое лучшее понимание команды тома AppleScript для монтирования состоит в том, что она не может указать точку монтирования и, следовательно, она монтирует тома только/Volumes через стандартный механизм Finder. Так что я не думаю, что вы можете сделать это через AppleScript.

Но есть и другой способ. Вы можете сделать то же самое, используя команду более низкого уровня mount:

mkdir -p ~/mnt
mount_smbfs "//my_username:my_password@my_hostname/share" ~/mnt

После монтирования тома таким образом вы должны увидеть обычный значок «громкость» на рабочем столе, и ~/mntкаталог будет отображаться как «общий доступ », когда вы просматриваете каталог пользователя через Finder.

Единственное, чего не хватает в этом подходе, - это сохранить учетные данные для входа в связку ключей. Чтобы сделать это, вы должны сделать немного больше сценариев. Что-то вроде этого.

Сохраните пароль:

security add-generic-password -a my_username -s my_hostname -w my_password

Восстановите пароль и смонтируйте общий ресурс:

pass=$(security find-generic-password -a my_username -s my_hostname -w)
mount_smbfs "//my_username:${pass}@my_hostname/share" ~/mnt

ПРИМЕЧАНИЕ. Если в вашем пароле есть специальные символы, вам, вероятно, потребуется URL-кодирование, возможно, так:

pass='my !@#%%^& password'
pass=$(php -r "echo urlencode(\"$pass\");")
>>> my+%21%40%23%25%25%5E%26+password
mnewt
источник
Спасибо Mnewt и Mattdwen! Это должно быть хорошая работа вокруг! (и, возможно, лучше, чем с помощью AppleScript)
Hanzaplastique,
4
по-видимому, этот подход сломал бы что-нибудь, на что ссылаются файлы /Volumes/share?
Джек,
Это определенно сломало бы что-нибудь подобное.
Br.Bill
3

Это было исправлено Apple в macOS Sierra 10.12.2:

https://support.apple.com/en-us/HT207112

Ян Дюбуа
источник
В их примере "отменить" есть опечатка. Правильный способ отмены: sudo defaults delete /Library/Preferences/com.apple.NetworkAuthorization AllowUnknownServers(убрал запись в этой строке).
Hanzaplastique