Я поддерживаю гетерогенную сеть Mac и Linux, поэтому я решил создать небольшой Perl-скрипт, чтобы унифицировать стратегии монтажа на разных машинах.
На самом деле, у меня уже есть рабочий Perl-скрипт, однако пароль, похоже, является частью командной строки, что мне не нравится:
mount_smbfs -d 755 -f 755 //username_here:password_here@myserver.com/cifs_share
Пытался прочитать страницы руководства для mount_smbfs и nsmb.conf, но я все еще не понимаю, как двигаться дальше.
Мои машины - это снежный барс, леопард и машина льва.
Более безопасное решение, чем то, что предлагает SvenW, и то, которое больше соответствует способу работы Apple, - это добавить пароль в связку ключей. Вот как вы бы сделали это для общего ресурса AFP (я предполагаю, что все, что вам нужно сделать, это изменить протокол, указанный параметром -r, но у меня нет возможности проверить это с помощью SMB прямо сейчас; обратите внимание, что пробел в "afp" преднамеренно и необходимо, и я использовал это только в среде 10.6):
sudo security add-internet-password -a "username_here" -D "Network Password" -r "afp " -l "cifs_share" -s "myserver.com" -p "cifs_share" -w "password_here" -T "/System/Library/CoreServices/NetAuthAgent.app/Contents/MacOS/NetAuthAgent"
Вот соответствующая часть справочной страницы для безопасность команда:
add-internet-password [-h] [-a account] [-s server] [-w password] [options...] [keychain]
Add an internet password item.
-a account Specify account name (required)
-c creator Specify item creator (optional four-character code)
-C type Specify item type (optional four-character code)
-d domain Specify security domain string (optional)
-D kind Specify kind (default is "application password")
-j comment Specify comment string (optional)
-l label Specify label (if omitted, service name is used as default label)
-p path Specify path string (optional)
-P port Specify port number (optional)
-r protocol Specify protocol (optional four-character SecProtocolType, e.g. "http", "ftp ")
-s server Specify server name (required)
-t authenticationType
Specify authentication type (as a four-character SecAuthenticationType, default is "dflt")
-w password Specify password to be added
-A Allow any application to access this item without warning (insecure, not recommended!)
-T appPath Specify an application which may access this item (multiple -T options are allowed)
-U Update item if it already exists (if omitted, the item cannot already exist)
By default, the application which creates an item is trusted to access its data without warning. You can remove this default access
by explicitly specifying an empty app pathname: -T "". If no keychain is specified, the password is added to the default keychain.
То же самое должно работать для общего ресурса SMB, но обратите внимание, что механизм сопоставления записей цепочки для ключей довольно специфичен (например, требует этого нечетного пробела в имени протокола), поэтому вам необходимо проверить и точно определить, как вы храните пароль. Когда я впервые применил этот подход, я обнаружил, что для правильного определения параметров он помог сначала создать пароль в связке ключей через графический интерфейс (т. Е. Смонтировать общий ресурс в Finder и установить флажок, чтобы сохранить учетные данные аутентификации в keychain) и работайте в обратном направлении, исследуя полученную запись в связке ключей.
Как отмечает SvenW, для того, чтобы этот подход работал, связка ключей должна быть разблокирована, но это должно происходить автоматически, когда пользователь входит в систему, и не должно быть проблемой, исходя из вашего описания. Я также хотел бы подтвердить, что Kerberos действительно работает в 10.5 и 10.6, но проблематичен в 10.7.
Поместите файл ~ / Library / Preferences / nsmb.conf со следующим содержимым в домашний каталог пользователя, которого вы хотите выполнить монтирование:
[myserver.com]
username=username_here
password=password_here
После этого вы можете просто сделать
mount -t smbfs -o -d=755,-f=755 //myserver.com/cifs_share /mountpoint
Для меня это был вопрос того, что было В моем брелке…
и соответствие который с моим auto_smb
карта...
/../Volumes/ServiceData -fstype=smbfs,soft ://home._smb._tcp.local/ServiceData