AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / server / Perguntas / 94503
Accepted
Tom Ritter
Tom Ritter
Asked: 2009-12-16 04:03:12 +0800 CST2009-12-16 04:03:12 +0800 CST 2009-12-16 04:03:12 +0800 CST

Faça login sem executar bash_profile ou bashrc

  • 772

Então, digamos que alguém digitou algo no seu .bashrcque o impede de fazer login via ssh(ou seja, o login ssh sai por causa do erro no arquivo). Existe alguma maneira de essa pessoa fazer login sem executá-lo (ou .bashrcdesde que um execute o outro) ou excluir/renomear/invalidar o arquivo?

Suponha que você não tenha acesso físico à máquina e esta seja a única conta de usuário com a capacidade de ssh.

Para referência: .bash_profileinclui .bashrc:

[[ -f ~/.bashrc ]] && . ~/.bashrc

Edit: Coisas que eu tentei:

ssh user@host "rm ~/.bashrc"

scp nothing user@host:/RAID/home/tom/.bashrc

ssh user@host  "/bin/bash --norc"

Todos dão o erro:

/RAID/home/tom/.bashrc: line 16: /usr/local/bin/file: No such file or directory
/RAID/home/tom/.bashrc: line 16: exec: /usr/local/bin/file: cannot execute: No such file or directory
ssh
  • 20 20 respostas
  • 145509 Views

20 respostas

  • Voted
  1. user60069
    2010-11-13T06:22:58+08:002010-11-13T06:22:58+08:00

    ssh -t username@hostname /bin/shfunciona para mim.

    • 162
  2. miyashin
    2011-02-19T14:12:05+08:002011-02-19T14:12:05+08:00

    Eu tive o mesmo problema, e de alguma forma consegui resolver. Eu usei ssh para acessar o sistema e pressionei e segurei Ctrl+c assim que entrei no sistema. Então, ~/.bashrc não foi lido e consegui modificá-lo.

    • 60
  3. Urist McDev
    2015-02-18T04:51:14+08:002015-02-18T04:51:14+08:00

    Você precisa a) iniciar o bash sem sourceou ~/.bashrce ~/.bash_profileb) já que esse shell não seria um shell de login completo / não tem tty anexado, force o ssh a anexar um tty :

    ssh -t user@host bash --norc --noprofile
    
    • 33
  4. Best Answer
    larsks
    2009-12-16T06:32:27+08:002009-12-16T06:32:27+08:00

    Acho que suas únicas opções são:

    • ssh como outro usuário e su para sua conta;

    • use algo como ftp ou smbclient, se os serviços relevantes estiverem habilitados no host;

    • encontre uma vulnerabilidade aberta em um serviço de rede aberta e explore-a :).

    • peça a um administrador para corrigir o problema.

    • 29
  5. Tom Ritter
    2009-12-20T09:54:55+08:002009-12-20T09:54:55+08:00

    Usei um CVE publicado para executar um comando como root por meio de uma interface web em um software de monitoramento de rede que havia instalado. rm /RAID/home/tom/.bashrc

    Então eu poderia fazer o login e svn reverter as alterações que fiz.

    • 21
  6. Tobu
    2009-12-16T05:29:36+08:002009-12-16T05:29:36+08:00

    Você não está com sorte.

    Todos os comandos ssh executam seu shell de login. ssh $COMMANDruns $SHELL -c $COMMAND, scpruns $SHELL -c /path/to/sftp-server, plain sshapenas executa seu shell.

    • 7
  7. Evan Langlois
    2015-07-25T22:52:08+08:002015-07-25T22:52:08+08:00

    Nenhuma das respostas acima pode ignorar o shell de login do ssh. Você pode passar uma linha de comando completa e, portanto, ele executa o shell remoto para processar o comando e definir o ambiente de trabalho para o comando. É para isso que servem os shells e é o jeito Unix. Você teria todos os tipos de problemas de compatibilidade se tentasse executar algo sem um shell. Da mesma forma, tentar um control-C deve fazer o mesmo que chamar exit, que é o comportamento que você está tentando evitar. Se o bash continuar, é um bug. Por que as pessoas continuam dizendo que a página de manual diz algo diferente, precisam citá-la porque não diz nada do tipo na minha página de manual.

    Além disso, na maioria dos sistemas linux, especificar /bin/sh não faz NADA, pois este é apenas um link simbólico para o bash!

    Quer testar? Adicione instruções "echo" a você .bashrc e .profile e veja qual é executado. Eu fiz. Aqui estão os resultados.

    ssh user@hostirá executar .bash_profile ssh user@host /bin/bashirá executar .bashrc, mas acha que não é interativo (sem prompt). ssh -t user@host /bin/bashexecuta .bashrc duas vezes ... uma vez no login, uma vez para o comando passado, portanto, especificar QUALQUER shell sempre executará o primeiro. ssh -T user@hosté o mesmo que não especificar -T ou -t.

    Agora, se você notar, MEU sistema não está executando os dois arquivos, apenas um ou outro. Mas o pôster original tem uma linha em .bash_profile executando .bashrc, então .bashrc sempre será executado, não importa o quê. Não deveria ter colocado essa linha lá! Se essa linha não existisse, você não teria um problema.

    Você precisará encontrar outra maneira de entrar ou encontrar um administrador. É para isso que servem os administradores.

    • 6
  8. Dennis Williamson
    2009-12-16T04:20:43+08:002009-12-16T04:20:43+08:00

    Algo como:

    ssh host "/bin/bash --norc"
    

    o que parece funcionar, mas observe que o PS1 não está definido, então você estará digitando comandos sem um prompt.

    Isso tem a vantagem de não ser destrutivo.

    • 4
  9. wytten
    2018-04-10T09:16:29+08:002018-04-10T09:16:29+08:00
    ssh -t user@host "bash --norc --noprofile -c '/bin/rm .bashrc'"
    
    • 3
  10. user161180
    2013-02-22T10:18:00+08:002013-02-22T10:18:00+08:00

    tentar

    echo ^C | ssh <hostname> ' rm .bashrc'
    

    ^C há controle-v então c

    • 2

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Resolver o nome do host do endereço IP

    • 8 respostas
  • Marko Smith

    Como posso classificar a saída du -h por tamanho

    • 30 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    Qual é o utilitário de linha de comando no Windows para fazer uma pesquisa reversa de DNS?

    • 14 respostas
  • Marko Smith

    Como verificar se uma porta está bloqueada em uma máquina Windows?

    • 4 respostas
  • Marko Smith

    Qual porta devo abrir para permitir a área de trabalho remota?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    MikeN No Nginx, como posso reescrever todas as solicitações http para https mantendo o subdomínio? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 Qual é a diferença entre colchetes duplos e simples no bash? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch Como altero a senha da minha chave privada? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt Como funciona a sub-rede IPv4? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve