macOS Sierra: AppleScript-Mount-Volume fordert ständig zur Anmeldung auf

Für mehrere OS X-Versionen habe ich verwendet:

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

Das hat super geklappt, ein schönes und leises Einbinden der Netzwerkfreigabe, sofern vorhanden natürlich.

Jetzt habe ich kürzlich macOS Sierra (10.12 Public Beta, Build 16A238m) installiert, und das Skript funktioniert immer noch, aber es zeigt jetzt plötzlich immer einen Anmeldedialog, der mit den Werten "IhrBenutzername" und "IhrPasswort" vorbelegt ist. Der Benutzer muss immer noch auf „Verbinden“ klicken, um die Freigabe bereitzustellen.

Weiß jemand, ob dies ein "Bug" in der Beta-Version ist (ich habe dies mit Apples Feedback-App gemeldet), oder ist dies zu erwarten und / oder was wäre die "Behebung" dafür?

Siehe auch: AppleScript-Dokumentation "mount volume"

Dies könnte damit zusammenhängen, dass Apple den /VolumesOrdner, in dem die Netzwerkfreigabe gemountet ist, nur für den Root-Zugriff gesperrt hat, sodass eine Benutzerautorisierung erforderlich ist, um den Mount-Punkt zu erstellen. Leider kenne ich im Moment keinen Workaround, obwohl ich mit dem Ändern von Sudoers auf dem Computer spielen werde. Ich habe ein Open Radar unter openradar.appspot.com/radar?id=4948585099558912 , wo Apple bestätigt hat, dass es gesperrt ist.
Sie können es auch direkt mit mounten openund den Benutzernamen und das Passwort in der URL angeben. Siehe "Methode 2" in meiner anderen Antwort hier

Antworten (2)

Als Apple auf das Ticket geantwortet hat, auf das in mattdwens Open Radar-Link oben verwiesen wird, ab macOS Sierra 10.12,

Sie können keine Elemente mehr in /Volumes erstellen, es sei denn, Sie sind root.

Außerdem ist mein bestes Verständnis des AppleScript -Mount-Volume- Befehls, dass er keine Möglichkeit hat, den Mount-Punkt anzugeben, und folglich nur Volumes /Volumesüber den Standardmechanismus des Finders mountet. Also, ich glaube nicht, dass Sie es über AppleScript tun können.

Aber es geht auch anders. Sie können dasselbe mit dem mountBefehl auf niedrigerer Ebene erreichen:

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

Nachdem Sie das Volume auf diese Weise gemountet haben, sollten Sie ein normales „Volume“-Symbol auf Ihrem Desktop sehen und das ~/mntVerzeichnis wird als „Freigabe“ erscheinen, wenn Sie Ihr Benutzerverzeichnis über den Finder durchsuchen.

Das einzige, was bei diesem Ansatz fehlt, ist das Speichern der Anmeldeinformationen im Schlüsselbund. Dazu müssen Sie etwas mehr Skripting durchführen. Etwas wie das.

Passwort speichern:

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

Rufen Sie das Passwort ab und mounten Sie die Freigabe:

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

HINWEIS: Wenn Sie Sonderzeichen in Ihrem Passwort haben, müssen Sie es wahrscheinlich URL-kodieren, vielleicht so:

pass='my !@#%%^& password'
pass=$(php -r "echo urlencode(\"$pass\");")
>>> my+%21%40%23%25%25%5E%26+password
Danke mnewt und mattdwen! Dies sollte eine gute Umgehung sein! (und möglicherweise besser als die Verwendung von AppleScript)
Vermutlich würde dieser Ansatz alles beschädigen, was auf Dateien unter /Volumes/share?
Es würde definitiv so etwas kaputt machen.

Dies wurde von Apple in macOS Sierra 10.12.2 behoben:

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

Es gibt einen Tippfehler in ihrem "Undo"-Beispiel. Der korrekte "Rückgängig"-Weg wäre: sudo defaults delete /Library/Preferences/com.apple.NetworkAuthorization AllowUnknownServers(das "Schreiben" in dieser Zeile wurde entfernt).