É possível tornar os usuários subordinados a um usuário diferente de root no Linux?

0

Eu gostaria de criar usuários que são subordinados a outro usuário no Linux. Com isso quero dizer que quero que o usuário superior seja relacionado aos usuários subordinados de duas maneiras:

  • O usuário superior deve poder acessar todos os arquivos do subordinado usuários com as mesmas permissões que eles têm
  • O usuário superior deve poder su para esses usuários subordinados sem inserir as senhas dos usuários , da mesma forma que o root pode su para qualquer usuário que tenha um shell de login

Isso é possível? Se sim, como? Eu sei que posso gerenciar a primeira coisa com grupos, mas o segundo é realmente o mais importante.

Eu tenho procurado um pouco por uma solução, mas não consegui encontrar uma. Eu não tenho certeza se isso significa que não pode ser feito / é realmente obscuro ou eu simplesmente não tenho as palavras certas para colocar nele.

    
por Dylan 07.09.2013 / 03:50

1 resposta

1

A primeira parte - acesso a arquivos - geralmente é impossível no Linux simples. Você pode fazer algumas coisas com grupos ou arquivar ACLs, mas não há nada que impeça o proprietário do arquivo de usar chmod para tornar seus próprios arquivos privados.

Não existe tal coisa no Linux, pois " X é subordinado de root , portanto root pode acessar arquivos de X ".
Em vez disso, o root simplesmente tem o recurso "substituir todas as permissões" (cap_dac_override). Isso é tudo.

No entanto, pode ser possível escrever um LSM que faça isso - o tipo de módulo que o SELinux ou o SMACK usam ... Ou você poderia simplesmente usar su <subordinate_user> e ler seus arquivos dessa maneira :

A segunda parte é possível escrevendo regras personalizadas sudo ou configuração especial do PAM para su (embora infelizmente eu não saiba de nenhum módulo PAM existente que possa ajudar).

Por exemplo, se você quiser permitir que o usuário X execute sudo -u Z -s (equivalente a su Z ), a regra será:

X    ALL=(Z) ALL

Você também pode usar %groupname para especificar um grupo Unix:

superiorguy    ALL=(%subordinates) ALL
    
por 07.09.2013 / 11:40