como permitir que um usuário altere as configurações de rede sem direitos de administrador, mudança de modo de rede hospedado, runas

1

Estou ansioso para tornar possível para usuários comuns, sem direitos de administrador , para que eles possam trocar a placa wireless local para uma rede hospedada (modo windows softap).

o comando netsh aqui está claro

netsh wlan set hostednetwork mode=allow ssid=$WLANSSID key=$WLANKEY 

desde que eu não quero que os usuários consigam instalar software, eu não concedo a eles direitos de administrador local.

Eu sei que há alguns produtos por aí, que criptografam as senhas runas, mas link mostra que a interface da API do Windows mostra as senhas de texto não criptografado .

Eu preferiria algumas ideias:)

    
por patrick stu 14.11.2014 / 17:20

1 resposta

1

Isso parece um trabalho para o Gerenciador de controle de serviços (SCM). O SCM já está equipado para armazenar credenciais com segurança e executar programas com segurança em contextos diferentes do usuário interativo. Os usuários que não são administradores não poderão acessar as credenciais ou interagir diretamente com o contexto de segurança usado para executar serviços, mas terão permissão para iniciar / parar serviços se tiverem permissão.

Primeiro, é importante saber que você pode executar um programa sem serviço como um serviço. Ele gerará uma mensagem de erro (e o serviço não mostrará "Iniciado"), mas o programa será executado. No caso de um comando como seu netsh , que é executado e sai imediatamente, executá-lo como um "serviço" funcionará muito bem para realizar o que você precisa. (Comandos de execução mais longa seriam problemáticos porque o SCM acabaria com eles quando não respondessem adequadamente.)

Eu não testei isso com netsh , mas usei outro comando ( net user bob /add ) para "provar" que o Service Control Manager.

  • Crie um serviço que execute seu comando: sc create ServiceName binPath= "netsh wlan set hostednetwork mode=allow ssid=$WLANSSID key=$WLANKEY"

  • Modifique o descritor de segurança no serviço para permitir que "Usuários" iniciem / interrompam o serviço (descaradamente retirados de outra resposta de falha de servidor minha ): sc sdset ServiceName D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;AU)(A;;CCLCSWRPWPDTLOCRRC;;;PU)(A;;RPWPDT;;;S-1-5-32-545)

  • Inicie o serviço como usuário limitado. sc start SerivceName

Você receberá um erro 1053 "O serviço não respondeu à solicitação de início ou controle em tempo hábil." após o comando netsh é executado e finalizado. O comando netsh será executado em um contexto de segurança do sistema.

Se você precisar que o usuário interaja com a linha de comando, isso fica mais complicado. Você provavelmente poderia codificar algum tipo de script barroco para permitir que o usuário especifique os argumentos e, por sua vez, esses argumentos sejam lidos por um script que o "serviço" analisa e alimenta para netsh . Você deve ser extremamente cuidadoso ao não permitir inadvertidamente ao usuário limitado a capacidade de executar código arbitrariamente como SYSTEM ao construir isso, no entanto.

    
por 14.11.2014 / 17:59