Alterar login de SMB do convidado para outro usuário?

2

Eu tenho um servidor de arquivos (usando o Samba 4, se isso é importante) que eu normalmente conecto como convidado com acesso somente leitura. Raramente, quero alterar seu conteúdo para que eu tenha que fazer o login como um usuário diferente. Existem dois problemas com isso.

1) Gostaria de fazer isso sem precisar desconectar do compartilhamento. Ou seja, eu gostaria de fazer algo análogo ao comando Unix su . Existe tal facilidade no protocolo SMB?

2) net use parece não saber quando eu me conectei ao compartilhamento (executando um programa que o acessa). Ele informa "Não há entradas na lista", nem eu posso usar net use \server\share /delete ("A conexão de rede não pôde ser encontrada"). Tentar usar net use \server\share /u:user , no entanto, falhará dizendo que várias conexões usando mais de um nome de usuário não são permitidas. Existe alguma maneira de forçar uma desconexão de uma conexão implícita de convidado antes de fechar todos os programas usando essa conexão?

    
por Fraggle 12.11.2016 / 14:20

2 respostas

0

Para responder sua primeira pergunta:

Eu acho que não. A razão pela qual não é suportado é simplesmente que quem criou o SMB não se preocupou em adicionar esse suporte. No entanto, como solução alternativa, basta usar várias credenciais, como você imaginou.

Para resolver sua segunda pergunta:

Não. Você citou o computador dizendo que você não pode fazer isso.

"Trying to use net use \server\share /u:user will however fail saying multiple connections using more than one user name are not allowed."

No entanto, suspeito que você possa usar outro compartilhamento. Basta criar uma nova pasta compartilhada, apontando para o mesmo local. (Use o fsmgmt.msc, pois essa interface permitirá criar um compartilhamento. Na linha de comando, digite: "start fsmgmt.msc".) Ou, no cliente, tente apenas visitar \ server \ c $ ou \ server \ d $ ou qualquer que seja o lugar apropriado. (Se você executar o fsmgmt.msc no servidor, poderá ver onde está o local apropriado.)

Um compartilhamento sendo usado, mas "net use" não está vendo, parece estranho para mim. Embora, em teoria, eu suponha que um programa poderia conter um cliente SMB embutido em vez de usar o Windows, o que causaria "net use" para não vê-lo (no cliente). Ainda assim, o servidor deve denunciá-lo usando "net session".

    
por 12.11.2016 / 17:50
0

O que é estranho sobre net use é que não parece funcionar com o usuário convidado. Você pode ter que cavar a API do Win32 para obter o que realmente deseja, em vez de confiar em ferramentas de linha de comando.

Uma maneira de alterar as credenciais de login para um compartilhamento de rede no Windows é tentar fazer login como um usuário diferente (como inserir um nome de usuário e senha inválidos). O Windows limpará as credenciais de login antigas sozinho.

No entanto, encontrei um método mais eficiente. Apenas chamando WNetAddConnection2 , o Windows faz a limpeza sozinho, sem necessidade de login.

Eu escrevi um pequeno programa em C que permite que eu faça logout e login como um usuário de compartilhamento de rede diferente no Windows. A execução do programa exibe a caixa de diálogo de login de rede padrão do Windows.

No meu código, chamei WNetCancelConnection2 antes de WNetAddConnection2 . Se bem me lembro, não acho que uma conexão de cancelamento seja necessária para um compartilhamento não mapeado. No entanto, cancelei a conexão de qualquer maneira para o compartilhamento mapeado, pois faz sentido remover primeiro a unidade mapeada, para que ela não apareça quando não houver uma credencial de login ativa.

Veja minha resposta aqui para o código C:

  • Como faço para remover credenciais de login para um local de rede no Win7?:

    link

por 19.06.2017 / 22:05