Bash altera as informações do usuário (como usermod), mas sem privilégios de root

2

Estou escrevendo um pequeno programa GUI para um usuário editar sua própria conta. Você não pode rodar usermod como um usuário regular, estou procurando por esse tipo de funcionalidade.

A alteração de um nome completo de usuário é o mais importante. Qualquer outra ajuda ou informação seria ótima também.

    
por user2225483 25.04.2013 / 10:34

2 respostas

7

Os utilitários chfn e chsh devem estar disponíveis no sistema e devem fazer o que você quiser - eles alterarão o campo gecos (nome real e assim por diante) e shell de login, respectivamente, com base em regras configuráveis, sem precisar escrever código que seja executado com privilégios de root (isso não é difícil , é apenas que o custo dos erros é muito, muito alto).

Na página do manual chfn:

   The chfn command changes user fullname, office room number,
   office phone number, and home phone number information for a
   user's account. 

Na página do manual do chsh:

   The chsh command changes the user login shell. This determines the name of the
   user's initial login command. A normal user may only change the login shell
   for her own account; the superuser may change the login shell for any account.
    
por 25.04.2013 / 12:50
0

A melhor (e pior) resposta é: você escreve o código setuid ().

Com base na sua pergunta, você provavelmente não deve fazer esse tipo de código. No linux, você não pode executar um script bash no modo setuid, se a memória servir, você tem que escrever e compilar um programa C / C ++, então o usuário root deve definir o bit de permissões setuid no código compilado. De qualquer forma, os scripts bash setuid são uma boa idéia de segurança.

Toda essa área é tão problemática quanto à segurança, que há muitos sites oferecendo ajuda.

Programas de segurança definidos

Exemplo de código C do GNU

    
por 25.04.2013 / 12:30

Tags