Назад | Перейти на главную страницу

Безопасный способ смонтировать защищенный паролем общий ресурс cifs на Mac

Я поддерживаю гетерогенную сеть 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