chown para um usuário que eu possa sudo para

2

Um de nossos usuários que tem privilégios sudo para vários usuários não raiz (contas de função para uso com projetos específicos) gostaria de poder alterar a propriedade de arquivos entre esses usuários: por exemplo, se o sudoers se parece com

jane ALL=(widget-dev,releng) ALL
jane ALL=(root) rchown

o usuário "jane" poderia usar o utilitário hipotético "rchown" (para "chown restrito") em arquivos de propriedade de jane, widget-dev e releng para fornecê-los a qualquer um desses usuários.

Eu não consegui encontrar um utilitário existente que faz isso. Um dos nossos usuários está pedindo por isso e parece ser uma coisa razoável de se querer, mas imaginei que pediria aqui e solicitaria histórias de guerra e terríveis avisos de pesadelos de segurança antes de mergulhar na escrita (duas idéias ruins)

  1. ainda outro analisador de arquivos de configuração
  2. para ser executado como root.

Editado para adicionar outra preocupação sobre a lógica: só queremos fazer isso para casos em que o usuário pode executar TODOS os comandos como o usuário de destino ... certo? Talvez nunca tenha sido implementado porque se atola em questões tão específicas do site.

    
por Aaron D. Ball 21.03.2011 / 21:58

1 resposta

1

Você pode fazer isso diretamente com o sudo. Quando comecei a pensar em como fazer isso, percebi rapidamente que o número de chowns que você precisaria especificar para n usuários seria n ^ 2 se você tentar mapeá-los diretamente. Mas você pode reduzir isso para 2n se você exigir que o usuário assuma a propriedade de cada arquivo antes de reatribuí-lo. Então, seu arquivo sudoers pode ser assim:

User_Alias CHOWNADMIN1 = jane
Cmnd_Alias CHOWNUSR1 = /bin/chown --from widget-dev jane *, /bin/chown --from jane widget-dev *
Cmnd_Alias CHOWNUSR2 = /bin/chown --from releng jane *, /bin/chown --from releng amy *

CHOWNADMIN1     ALL= NOPASSWD: CHOWNUSR1, CHOWNUSR2

Com essa configuração, Jane agora pode fazer um processo de duas etapas para alterar a propriedade:

chown --from widget-dev jane /tmp/foofile
chown --from jane releng /tmp/foofile

Observe que você deve restringir esta permissão com --from ou abrir a possibilidade de conceder ao usuário "jane" a permissão para apropriar-se de arquivos como / etc / shadow ou /root/.ssh/id_rsa (que poderia ser ruim).

Claro, agora você pode escrever um script muito simples para automatizar os chowns. Talvez algo como o seguinte, mas com alguma verificação de erros:

#!/bin/bash
FROM=$1
shift
TO=$1
shift

sudo chown --from $FROM $USER $*
sudo chown --from $USER $TO $*

E agora, Jane pode executar "rchown releng widget-dev / tmp / foofile" ou similar.

    
por 22.03.2011 / 23:45