Передача имени пользователя и пароля UNC в пути UNC

23

Можно ли передать имя пользователя и пароль UNC в пути UNC?

Подобно тому, как FTP и SMB поддерживают это:

smb://user:pass@destination.com/share
ftp://user:pass@destination.com/share

Я пытаюсь получить (не доменный ПК) сервис доступ к пути DFS.

Есть ли другой способ обойти это? Я мог бы связать ПК с доменом и запустить службу как пользователь домена, но что, если я использовал Linux?

Kvad
источник

Ответы:

20

В Windows вы не можете поместить учетные данные в пути UNC. Вы должны предоставить им с помощью net use, runas /netonlyили когда его спросили Windows. (Если у вас есть некоторые навыки программирования, вы можете сохранить пароль SMB как «учетные данные домена» CredWrite(), что эквивалентно установке флажка «Запомнить пароль» в Windows.)

В Linux это зависит от программы.

  • Gvfs GNOME принимает user@hostсинтаксис, но, похоже, полностью игнорирует пароль. (Однако вы можете сохранить его в GNOME Keyring заранее.)

  • smbclientиспользует тот же синтаксис UNC, что и Windows; однако у него есть --authentication-fileопция, из которой можно прочитать учетные данные.

  • Обе программы выше используют libsmbclient и могут использовать аутентификацию Kerberos вместо паролей: запустите kinit user@YOUR.DOMAINи используйте smbclient -k //host/share. Это более безопасно, чем аутентификация по паролю.

Обратите внимание, что ввод паролей в URI устарел, и вы не должны полагаться на его поддержку где-либо .

grawity
источник
Есть ли у вас рекомендации относительно того, что «ввод паролей в URI устарел»?
Алексис Уилке
2
@AlexisWilke RFC 1738 § 3.3 начал с запрета их использования в HTTP, RFC 2396 § 3.2.2 имел более общее «не рекомендуется», а в RFC 3986 § 3.2.1 говорится «Использование формата« user: password »в userinfo поле устарело ".
grawity
14

Вы можете отобразить «диск» на путь UNC, используя net use. Будущие доступы должны разделить существующее соединение

Net Use \\yourUNC\path /user:uname password

Примечание: вам не нужно указывать букву диска

uSlackr
источник
1

Я думаю, что имя пользователя и пароль должны быть переданы на сервер для проверки подлинности, прежде чем будет осуществлен доступ к любому файлу, поэтому код, обрабатывающий соединение SMB, должен иметь возможность анализировать и извлекать имя пользователя и пароль из URL. Вам нужно проверить, поддерживает ли этот код этот формат или нет.

Если это не так, вы можете смонтировать этот общий ресурс SMB через SAMBA и указать вашей программе использовать этот «локальный» путь. Вы можете поместить монтирование fstabи использовать файл паролей SAMBA для предоставления учетных данных пользователя. Не забудьте установить правильные разрешения для файла паролей, чтобы обычные пользователи не могли его прочитать.

Обратите внимание, что хранить пароли в виде открытого текста в файлах конфигурации - это плохая практика, поэтому даже если ваша программа может обрабатывать пароли в URL-адресах, вам следует рассмотреть метод смонтированного общего ресурса.

billc.cn
источник
Разве это fstabне «файл конфигурации с открытым текстом»?
grawity
1
Да, но в fstab вы обращаетесь к файлу паролей вместо непосредственного включения пароля. Затем вы можете защитить файл паролей, изменив владельца на root и установив режим на 400.
billc.cn 10.10.11
Это все еще файл конфигурации открытого текста. Любой, у кого есть физический доступ к машине, может иметь права root через перезагрузку. Среды рабочего стола, такие как XFCE, KDE и Gnome, могут хранить учетные данные в хранилище паролей, что, вероятно, является лучшим вариантом.
Бобпаул
0

Вы можете добавить учетные данные в Панель управления / Пользователи / Диспетчер учетных данных Windows, чтобы учетные данные кэшировались. Вы должны добавить имя устройства (server.domain.local) с именем пользователя / паролем домена, после чего вы сможете получить доступ к общему ресурсу без повторного предоставления учетных данных.

Matt
источник
0

Компьютер, не являющийся доменом, не должен заботиться о DFS, на которую он не подписывается и не участвует напрямую. Ему просто нужно увидеть путь к общему ресурсу (т. Е. Сервер / имя_ресурса). Sharenames удаляет все соображения пути к файловому серверу хоста.

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

Простейшим непосредственным решением было бы предоставление учетным данным службы прямого доступа к входу в общий ресурс (например, соответствие имени пользователя / пароля). В долгосрочной перспективе это не столь очевидное совпадение может затруднить обновление прав доступа, когда что-то меняется. И это также область, в которой MS может изменить то, как система безопасности снова передает учетные данные и ломает вещи.

В долгосрочной перспективе самая простая и простая вещь - это, вероятно, постоянное сопоставление буквы локального диска с сетевым ресурсом. Защитите подключенный диск с разрешениями только для службы (и соответствующих администраторов и т. Д.), А имя Sharename может быть скрыто с помощью символа &

Но DFS дает ключ к более элегантному решению. Linux требует, чтобы сетевые папки сначала монтировались ... обычно в качестве каталога в корневой файловой системе, очень похоже на DFS. Команда монтирования Linux позволяет указать файл учетных данных для имени пользователя и пароля, что делает их более легкими для обновления и более безопасными, чем сценарий командной строки или fstab (то есть таблица файловой системы). Я почти уверен, что командные оболочки Windows и DFS могут делать то же самое (давно). Это будет просто другая система DFS, частная для целевого ПК, для включения подключенных общих сетевых ресурсов с использованием сохраненных учетных данных, передаваемых SMB и службами входа в систему, а не жестко закодированных в сценарии и отправляемых в виде открытого текста UNC.

Также подумайте, останется ли этот недоменный ПК долгосрочным. Серверы входа Kerberos в * NIX Realms могут быть связаны с доменами Windows AD. Вероятно, что вы хотите сделать для любого серьезного долгосрочного проекта с участием более чем нескольких человек. С другой стороны, это, вероятно, избыточно для большинства ситуаций в домашней сети. Хотя, если вы используете DFS по любой другой причине, кроме самообороны, это, вероятно, лучше.

любознательный
источник
0

Ответ хранилища учетных данных Мэтта - самый элегантный для современного ПК с Windows. Хотя не указано, что хранилище учетных данных должно использоваться для учетной записи службы. Это необходимо как для обеспечения доступности службы, так и для того, чтобы другие пользователи, которым вы не хотите получать доступ к этой общей папке, не могли этого сделать (например, не забудьте удалить учетные данные, ошибочно добавленные под неверной учетной записью).

Но если это устаревшая Windows или Linux, вам, возможно, придется пойти немного шире.

Компьютер, не являющийся доменом, не должен заботиться о DFS, на которую он не подписывается и не участвует напрямую. Ему просто нужно увидеть путь к общему ресурсу (т. Е. Сервер / имя_ресурса). Sharenames удаляет все соображения пути к файловому серверу хоста.

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

Простейшим непосредственным решением было бы предоставление учетным данным службы прямого доступа к входу в общий ресурс (например, соответствие имени пользователя / пароля). В долгосрочной перспективе это не столь очевидное совпадение может затруднить обновление прав доступа, когда что-то меняется. И это также область, в которой MS может изменить то, как система безопасности снова передает учетные данные и ломает вещи.

В долгосрочной перспективе самая простая и простая вещь - это, вероятно, постоянное сопоставление буквы локального диска с сетевым ресурсом. Защитите подключенный диск с разрешениями только для службы (и соответствующих администраторов и т. Д.), А имя Sharename может быть скрыто с помощью символа &

Но DFS дает ключ к более элегантному решению. Linux требует, чтобы сетевые папки сначала монтировались ... обычно в качестве каталога в корневой файловой системе, очень похоже на DFS. Команда монтирования Linux позволяет указать файл учетных данных для имени пользователя и пароля, что делает их более легкими для обновления и более безопасными, чем сценарий командной строки или fstab (то есть таблица файловой системы). Я почти уверен, что командные оболочки Windows и DFS могут делать то же самое (давно). Это будет просто другая система DFS, частная для целевого ПК, для включения подключенных общих сетевых ресурсов с использованием сохраненных учетных данных, передаваемых SMB и службами входа в систему, а не жестко закодированных в сценарии и отправляемых в виде открытого текста UNC.

Также подумайте, останется ли этот недоменный ПК долгосрочным. Серверы входа Kerberos в * NIX Realms могут быть связаны с доменами Windows AD. Вероятно, что вы хотите сделать для любого серьезного долгосрочного проекта с участием более чем нескольких человек. С другой стороны, это, вероятно, избыточно для большинства ситуаций в домашней сети. Хотя, если вы используете DFS по любой другой причине, кроме самообороны, это, вероятно, лучше.

любознательный
источник