web-dev-qa-db-ja.com

UNCパス内でUNCユーザー名とパスワードを渡す

UNCパス内でUNCユーザー名とパスワードを渡すことは可能ですか?

FTPとSMBがこれをサポートする方法に似ています:

smb://user:[email protected]/share
ftp://user:[email protected]/share

(ドメインPC以外の)サービスがDFSパスにアクセスしようとしています。

これを回避する別の方法はありますか? PCをドメインにバインドしてサービスをドメインユーザーとして実行できますが、Linuxを使用している場合はどうなりますか?

23
Kvad

Windowsではあなたできません資格情報をUNCパスに配置できません。 _Net Use_、_runas /netonly_を使用して、またはWindowsから要求されたときに、それらを提供する必要があります。 (プログラミングのスキルがある場合は、CredWrite()を使用してSMBパスワードを「ドメイン資格情報」として保存できます。これは、ウィンドウズ。)

Linuxではプログラムによって異なります。

  • GNOMEのGvfsは_user@Host_構文を受け入れますが、パスワードを完全に無視するようです。 (ただし、事前にGNOMEキーリングに保存しておくことができます。)

  • smbclientはWindowsと同じUNC構文を使用します。ただし、資格情報を読み取ることができる_--authentication-file_オプションがあります。

  • 上記の両方のプログラムはlibsmbclientを使用しており、パスワードの代わりにKerberos認証を使用できます。_kinit [email protected]_を実行し、_smbclient -k //Host/share_を使用します。これは、パスワード認証よりも安全です。

URIへのパスワードの入力は非推奨であり、サポートされているanywhereに依存しないでください。

20
user1686

Net Useを使用して、「ドライブ」をUNCパスにマップできます。今後のアクセスは既存の接続を共有する必要があります

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

注:ドライブ文字を指定する必要はありません

14
uSlackr

ファイルアクセスを行う前に、認証のためにユーザー名とパスワードをサーバーに渡す必要があると思います。そのため、SMB接続を処理するコードは、 URLからのユーザー名とパスワード。そのコードがこの形式をサポートしているかどうかを確認する必要があります。

そうでない場合は、そのSMB共有をSAMBA経由でマウントし、プログラムにその「ローカル」パスを使用するように指示できます。マウントをfstabに入れて、ユーザーの資格情報を提供するSAMBAパスワードファイル通常のユーザーが読み取れないように、パスワードファイルに正しい権限を設定してください。

構成ファイルにクリアテキストでパスワードを格納することは悪い習慣であるため、プログラムがURLでパスワードを処理できる場合でも、マウントされた共有方法を検討する必要があります。

1
billc.cn

非ドメインPCは、サブスクライブまたは直接参加していないDFSを実際に気にする必要はありません。共有パス(つまり、server/sharename)を表示するだけです。共有名は、ホストファイルサーバーパスの考慮事項をすべて削除します。

正直なところ、共有にログオンするには、UNC URIよりも安全な方法があります。 UNCとURIは、それ自体がクリアテキストの通信プロトコルです。
それが許容できるセキュリティである場合...ユーザーまたはパスワードなしでオープンな共有を持たないのはなぜですか?

最も簡単な当面の解決策は、サービス資格情報に共有へのログオンへの直接アクセスを与えることです(例:一致するユーザー/パスワード)。それほど明確に一致しない長期的なものは、状況が変化したときにいつでもパーミッションを更新することを忘れないようにするかもしれません。また、セキュリティが資格情報を渡す方法をMSが再び変更し、問題を壊す可能性がある領域でもあります。

長期的には、ローカルドライブ文字をネットワーク共有に永続的にマップすることが最も簡単です。マップされたドライブをサービス(および適切な管理者など)のみの権限で保護し、共有名は先頭の&で非表示になる場合があります。

しかし、DFSはよりエレガントなソリューションへの手掛かりを与えます。 Linuxでは、最初にネットワーク共有をマウントする必要があります。通常、DFSとよく似た方法でルートファイルシステムのディレクトリとしてマウントされます。 Linuxのmountコマンドを使用すると、ユーザー名とパスワードの資格情報ファイルを指定できるため、コマンドラインスクリプトやfstab(ファイルシステムテーブル)よりも更新が容易で安全になります。 WindowsコマンドシェルとDFSが同じことを実行できると確信しています(しばらくの間)。スクリプトにハードコードされ、クリアテキストUNCとして送信されるのではなく、SMBおよびログオンサービスによって渡される保存された資格情報を使用してマウントされたネットワーク共有を組み込むのは、ターゲットPC専用の別のDFSシステムです。

また、その非ドメインPCが非ドメインPCの長期的に存続するかどうかも検討してください。 * NIXレルムのKerberosログオンサーバーは、Windows ADドメインにリンクできます。おそらく、数人以上が関与する深刻な長期プロジェクトで何をしたいのでしょう。一方、ほとんどのホームネットワークの状況では、おそらくやり過ぎです。ただし、趣味の自己挑戦以外の理由でDFSを使用している場合は、おそらくそれが最善です。

0
Curious

Mattによるクレデンシャルストレージの回答は、最新のWindows PCにとって最もエレガントです。明記されていませんが、使用される認証情報ストレージはサービスアカウント用である必要があります。これは、サービスの可用性を確保するためと、その共有にアクセスしたくない他のユーザーがそれを実行できないようにするためです(たとえば、間違ったアカウントで誤って追加された資格情報をクリーンアップすることを忘れないでください)。

ただし、レガシーのWindowsまたはLinuxの場合は、少し広くする必要があります。

非ドメインPCは、サブスクライブまたは直接参加していないDFSを実際に気にする必要はありません。共有パス(つまり、server/sharename)を表示するだけです。共有名は、ホストファイルサーバーパスの考慮事項をすべて削除します。

正直なところ、共有にログオンするには、UNC URIよりも安全な方法があります。 UNCとURIは、それ自体がクリアテキストの通信プロトコルです。
それが許容できるセキュリティである場合...ユーザーまたはパスワードなしでオープンな共有を持たないのはなぜですか?

最も簡単な当面の解決策は、サービス資格情報に共有へのログオンへの直接アクセスを与えることです(例:一致するユーザー/パスワード)。それほど明確に一致しない長期的なものは、状況が変化したときにいつでもパーミッションを更新することを忘れないようにするかもしれません。また、セキュリティが資格情報を渡す方法をMSが再び変更し、問題を壊す可能性がある領域でもあります。

長期的には、ローカルドライブ文字をネットワーク共有に永続的にマップすることが最も簡単です。マップされたドライブをサービス(および適切な管理者など)のみの権限で保護し、共有名は先頭の&で非表示になる場合があります。

しかし、DFSはよりエレガントなソリューションへの手掛かりを与えます。 Linuxでは、最初にネットワーク共有をマウントする必要があります。通常、DFSとよく似た方法でルートファイルシステムのディレクトリとしてマウントされます。 Linuxのmountコマンドを使用すると、ユーザー名とパスワードの資格情報ファイルを指定できるため、コマンドラインスクリプトやfstab(ファイルシステムテーブル)よりも更新が容易で安全になります。 WindowsコマンドシェルとDFSが同じことを実行できると確信しています(しばらくの間)。スクリプトにハードコードされ、クリアテキストUNCとして送信されるのではなく、SMBおよびログオンサービスによって渡される保存された資格情報を使用してマウントされたネットワーク共有を組み込むのは、ターゲットPC専用の別のDFSシステムです。

また、その非ドメインPCが非ドメインPCの長期的に存続するかどうかも検討してください。 * NIXレルムのKerberosログオンサーバーは、Windows ADドメインにリンクできます。おそらく、数人以上が関与する深刻な長期プロジェクトで何をしたいのでしょう。一方、ほとんどのホームネットワークの状況では、おそらくやり過ぎです。ただし、趣味の自己挑戦以外の理由でDFSを使用している場合は、おそらくそれが最善です。

0
Curious

資格情報がキャッシュされるように、コントロールパネル/ユーザー/ Windows資格情報マネージャーで資格情報を追加できます。デバイスの名前(server.domain.local)とドメインのユーザー名/パスワードを追加すると、資格情報を再度入力しなくても共有にアクセスできるようになります。

0
Matt