SMBログインをゲストから別のユーザーに変更しますか?


2

私は通常、読み取り専用アクセスでゲストとして接続するファイルサーバー(重要な場合はSamba 4を使用)を持っています。まれに、そのコンテンツを変更したいので、別のユーザーとしてログインする必要があります。これには2つの問題があります。

1)共有から切断せずにこれを行いたい。つまり、Unix suコマンドに似た何かをしたいと思います。SMBプロトコルにそのような機能はありますか?

2)net use(アクセスするプログラムを実行することで)いつ共有に接続したかが分からないようです。「リストにエントリがありません」と表示され、使用もnet use \\server\share /deleteできません(「ネットワーク接続が見つかりませんでした」)。net use \\server\share /u:userただし、複数のユーザー名を使用した複数の接続は許可されていないため、使用しようとすると失敗します。その接続を使用するすべてのプログラムを閉じる以外に、暗黙的なゲスト接続を強制的に切断する方法はありますか?

回答:


0

最初の質問に答えるには:

私はそうは思いません。サポートされていない理由は、SMBを作成した人がそのようなサポートを追加することに煩わされなかったからです。ただし、考えられるように、回避策として、複数の資格情報を使用するだけです。

2番目の質問に対処するには:

いいえ、あなたはこれを行うことができないと言っているコンピューターを引用しました。

「net use \ server \ share / u:userを使用しようとすると、複数のユーザー名を使用した複数の接続は許可されないため失敗します。」

ただし、別の共有を使用できる場合があります。同じ場所を指す新しい共有フォルダーを作成するだけです。(このインターフェイスでは共有を作成できるため、fsmgmt.mscを使用します。コマンドラインから「start fsmgmt.msc」と入力します。)または、クライアントから\ server \ c $または\ server \ d $にアクセスしてみてください。または適切な場所は何でも。(サーバーでfsmgmt.mscを実行すると、適切な場所がどこにあるかを確認できます。)

共有は使用されていますが、「net use」が表示されていないため、奇妙に聞こえます。理論的には、Windowsを使用する代わりに、プログラムに組み込みSMBクライアントを含めることができると考えられます。これにより、「ネット使用」が(クライアント上で)表示されなくなります。それでも、サーバーは「ネットセッション」を使用して報告する必要があります。


理論的には、Windowsを使用する代わりにプログラムに組み込みSMBクライアントを含めることができると考えられます。これにより、「net use」が(クライアント上で)表示されなくなります。それでも、サーバーは「ネットセッション」を使用して報告する必要があります。 新しいログインが機能しないようにするには、Windowsエクスプローラーウィンドウを開いておくだけで十分なので、これはより根本的な問題だと思います。
Fraggle

ただし、別の共有を使用できる場合があります。同じ場所を指す新しい共有フォルダーを作成するだけです。 同じサーバー上の他の共有(異なるフォルダーを指す)に接続しようとして、同じ応答が返されるため新しい接続を作成できないようです。
Fraggle

まだ答えがありません。Unixでは、SMBクライアントには、共有リソースを一覧表示するためと共有フォルダーを使用するための2つのまったく異なるコマンドがあることがわかりました。共有のリストを見ると、議論に役立ちますか?Unixシステムから必要に応じて接続できましたか(非協力的なサーバーではなく、Windows 10クライアントに問題を切り分けるのに役立ちます)。前回フォローアップに13ヶ月以上かかったのを見ました。私たちはまだ1月ですが、来年は別の応答を楽しみにしています:)
TOOGAM

まだ13か月ではありませんが、やらなければなりません!;-)
Fraggle

Ubuntuに暗黙のゲスト接続を確立させることを試みましたが、失敗しました。私が試したものは何でも、接続を確立するためのダイアログが常に表示されます。だから、私は彼らが問題を回避する方法は、単に暗黙の接続を確立しないことであるという結論に達しました。私はすべての提案を使い果たしたので、答えは基本的に「いいえ、いいえ!」と思われるので、この答えを受け入れます。
Fraggle

0

奇妙なのnet useは、それがゲストユーザーで動作しないようだということです。コマンドラインツールに頼るのではなく、Win32 APIを掘り下げて、本当に欲しいものを手に入れる必要があるかもしれません。

Windowsでネットワーク共有のログイン資格情報を変更する方法は、別のユーザーとしてログインを試みることです(不正なユーザー名とパスワードを入力するなど)。Windowsは、古いログイン資格情報を自動的にクリアします。

しかし、より効率的な方法を見つけました。を呼び出すだけでWNetAddConnection2、Windowsはログインの試行を必要とせずに自動的にクリーンアップを実行します。

Windowsで別のネットワーク共有ユーザーとしてログアウトおよびログインできる小さなCプログラムを作成しました。プログラムを実行すると、標準のWindowsネットワークログインダイアログが表示されます。

私のコードでは、WNetCancelConnection2以前にを呼び出しましたWNetAddConnection2。思い出せば、マップされていない共有には接続のキャンセルは必要ないと思います。ただし、アクティブなログイン資格情報がないときに表示されないように、最初にマップされたドライブを削除するのが理にかなっているため、マップされた共有の接続をキャンセルしました。

Cコードについては、私の回答を参照してください。


私はこれを試してみて、どのように着くのか見てみましょう。
Fraggle

ログアウトしたり、デフォルトでインストールされていない実行可能ファイルをコンパイルしたり実行したりする必要はなく、「runas」を使用して障害のあるネットワーク接続を作成する方が簡単でしょうか?
TOOGAM

残念ながら、これは役に立ちませんでした。CancelConnectionは、接続が存在しないという同じエラーを表示し、AddConnectionは、ユーザー名が異なる複数の接続を使用できないと文句を言います。これは実装の基本的な「機能」であると結論付けています。
Fraggle
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.