Pergunta

Os usuários serão acessando remotamente *** máquinas baseadas nix via SSH e eu preciso para determinar o mais rápido maneira de verificar se o nome de usuário que eles estão usando atualmente tem acesso NOPASSWD no arquivo / etc / sudoers arquivo.

As opções possíveis:

  • grep para o nome de usuário em / etc / sudoers, prompt de saída do comando de análise para determinar se ele tem NOPASSWD, se não, remova a linha seguida, anexar as novas permissões
  • Apenas anexar uma cadeia de permissão para o arquivo independentemente (má idéia).
  • Tente sudo em um arquivo protegido e ver se ele me pede uma senha.

Eu estou esperando por algo mais fácil, mas o meu google-fu não veio com nenhuma resposta.

Foi útil?

Solução

Se sudo -v bem-sucedido, o usuário foi autorizado a utilização sudo; se ele falhar, então o usuário não foi autorizada a utilização sudo.

# su user -c 'setsid sudo -v </dev/null'; echo $?
[sudo] password for user:
1
# su root -c 'setsid sudo -v </dev/null'; echo $?
0

setsid , sudo vai tentar pedir a senha de forma interativa, mesmo se stdin / stdout / stderr todos foram redirecionados. Se você não tiver um terminal de controle, isto não é necessário, mas você provavelmente vai precisar de algo que não seja su para alterar permissões de usuário, como forquilha + setreuid .

Outras dicas

Se você de fato precisa "o mais rápido maneira", eu acho que você está construindo um servidor web que lidar com muitas solicitações simultâneas.

Isto levanta um outro problema - a questão de concorrência. Geralmente, muitos leitura processo e escrever para o mesmo arquivo importante é uma receita para uma catástrofe.

Construir um pequeno processo independente para lidar com a tarefa. Ela deve ter uma interface mínima que irá receber pedidos dos clientes, e atualizações para o arquivo do /etc/sudoer. Algo como has_NOPASSWD_access() e set_NOPASSWD_access(). Ele deve ler o arquivo apenas quando ele precisa ser escrito, assim que você vai reduzir significativamente o tempo de E / S necessário para atender a um pedido.

Pros -

  • Rápido: No I / O necessária para apenas ler o arquivo, porque ele é armazenado no buffer desde a leitura inicial
  • thread-safe: Apenas se escreve servidor e lê o arquivo sudoer
  • única escolha princípio - só que desta alças processar o arquivo sudoer
  • Elegant (espero): -)

Contras - - Lista-los nos comentários, e eu vou adicionar

.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top