Faça login como um usuário, mas autentique como outro

3

Esta pode ser uma pergunta estranha, mas me pergunto se há possibilidades para isso.

Quando estou configurando um sistema, prefiro ser root para não ter que sudo tudo. No entanto, a conta root não é minha conta pessoal para que outras pessoas possam ficar anoyed se eu alterar as configurações na conta raiz (como o bashrc e vimrc). Por isso, eu gostaria de voltar usando minha conta pessoal para fazer a configuração, mas não tenho permissões.

Eu não tenho problema com isso apenas com a conta do root, às vezes preciso fazer coisas em outra conta de usuário também.

O ideal seria que eu pudesse me autenticar como um usuário diferente (ou a conta root), mas não estar logado como ele.

Eu sei que também posso fazer login como um usuário específico e, em seguida, executar manualmente os arquivos de configuração do meu perfil pessoal (como o bashrc e o vimrc), mas isso parece uma tarefa irritante de se fazer o tempo todo.

Alguém conhece maneiras de fazer com eficiência o que estou descrevendo aqui? Ou vocês acham que é estranho e não deveria ser feito?

    
por gitaarik 16.08.2013 / 13:08

2 respostas

2

Não acho que exista a resposta genérica para resolver todos esses problemas. Você não pode ser dois usuários ao mesmo tempo. Sempre que você executar um comando, o shell terá que adivinhar qual usuário esse comando deve ser executado. Quando você cria um arquivo, ele deve adivinhar quem deve pertencer e assim por diante.

Eu faço seu quinto parágrafo. Eu tenho um script em /usr/local/bin (eu chamei de becomeme ) que origina meu /home/user/.bashrc e adapta PATH, LD_LIBRARY_PATH, MANPATH e PKG_CONFIG_PATH, para incluir caminhos no meu diretório pessoal. Eu também coloco alguns wrappers, por exemplo, para substituir vi por HOME=/home/me vi . Eu basicamente embrulho coisas para procurar o diretório home do meu usuário para configuração. Para os casos de uso simples bashrc, vi e screen, ele funciona razoavelmente bem.

Isso, no entanto, funciona apenas até certo ponto, porque acessar meu diretório home como outro usuário geralmente significa que o usuário precisa ter permissões de gravação para alguns arquivos e diretórios, o que eu não quero. Então, é mais um hack para os casos mais comuns, vi e screen principalmente.

Não é muito complicado, pois eu só preciso lembrar de digitar becomeme depois de mudar para outro usuário. Para root, isso funcionou rapidamente, para outros usuários tive que dar permissão aos arquivos em minha casa primeiro.

Outra abordagem, que ainda não experimentei, mas que funcione para o seu caso de uso: Crie outro usuário com o UID 0 e a casa do usuário. Você simplesmente precisa adicionar uma linha a /etc/passwd e /etc/shadow . Por exemplo, se o seu nome de usuário root for admin, a linha correspondente em /etc/passwd pode ser assim:

admin:x:0:0:My personalized root account:/home/mynormaluser:/bin/bash

Em seguida, você digita passwd admin para criar uma entrada em /etc/shadow . Se você fizer login como admin agora, será UID 0, ou seja, root, mas terá seu diretório pessoal normal e, portanto, suas configurações de seu usuário normal. Ele também tem sua própria senha, você não precisa compartilhar. Isso não funciona para o NFS-home (veja root_squash).

Embora isso possa funcionar, ele pode criar alguns pequenos problemas com permissões de arquivos, sempre que você criar arquivos como usuário admin em seu diretório pessoal. Você pode contornar esses problemas com máscaras de criação adequadas e um grupo designado que você compartilha apenas entre seu usuário e admin .

    
por 16.08.2013 / 14:25
0

Autenticação dupla

Até onde sei, não há como realizar o que você está pedindo.

Alternativas

vários terminais

Você sempre pode ter várias janelas abertas. Muitas vezes tenho várias guias em gnome-terminal e algumas estão conectadas a outras contas em outros sistemas, enquanto outras ainda estão no meu sistema local.

tela & tmux

Outro altnerativo seria aprender como usar screen ou tmux para que você possa alternar entre as janelas. Eu geralmente uso isso além das várias guias em gnome-terminal .

Essa abordagem tem o benefício adicional de poder desconectar de um sistema remoto e reconectar-se mais tarde, para que minha sessão de terminal seja salva.

fluxos de trabalho sudo alternativos

Você pode obter algum acesso aos aliases do seu ambiente através do uso desse truque. Configure um alias assim:

$ alias sudo='sudo '

NOTA: o espaço após o comando. A partir de então, sudo funcionará normalmente e você poderá usar os aliases do seu usuário sem problemas (normalmente e com privilégios de root).

Mais detalhes sobre como isso funciona podem ser encontrados aqui.

trecho

If the last character of the alias value is a space or tab character, then the next command word following the alias is also checked for alias expansion.

Você também pode carregar o .profile do seu ambiente da seguinte forma:

$ alias sudo='sudo su -i ENV=/home/myuser/.profile'

O que mais?

O fluxo de trabalho com o qual você está lidando é o mesmo que o ambiente funciona no Unix. Por isso, é melhor tentar adaptar-se a ele e tornar as tarefas repetitivas com script ou aliases, para que não sejam.

Se você descobrir que determinadas coisas são necessárias para fazer login em contas do sistema, como o root, convém tentar trabalhar com outras pessoas que tenham os mesmos direitos elevados de concordar com alguns padrões dessas contas.

Se você estiver criando atalhos e aliases, as chances são outras, seja SÓ ou DEVE ser, para que sejam tão produtivas quanto você.

    
por 16.08.2013 / 14:34