em que contexto você fez isso. Em um terminal atual, para o shell padrão do usuário?
jgr208
você não tem usuários no grupo sudo?
Rui F Ribeiro
3
faz sudo vipwo trabalho?
Rui F Ribeiro
1
@RuiFRibeiro sim fez, obrigado, eu não estava ciente de que eu poderia mudar o shell de root padrão nesse arquivo
ChiseledAbs
1
Não é necessário nesse caso, mas quando você cria inadvertidamente uma catástrofe envolvendo raiz, geralmente é possível levar a máquina para o modo de usuário único, corrigir o problema e retornar ao modo de multiusuário.
boardrider
Respostas:
29
Enquanto o root não tem acesso, um usuário no grupo sudo ainda pode executar comandos privilegiados - parece que o erro não está no sudo, mas em outras partes do sudo chshcomando (por exemplo, erro chsh).
Como tal, seu sudo está aparentemente funcionando.
Os comandos vipw e vigr editam os arquivos / etc / passwd e / etc / group, respectivamente. Com o sinalizador -s, eles editarão as versões de sombra desses arquivos, / etc / shadow e / etc / gshadow, respectivamente. Os programas definirão os bloqueios apropriados para evitar corrupção de arquivos.
Por razões de segurança, logins se textual ou gráfica e utilitários como sue sudoque lhe permitem executar comandos como um usuário diferente todos executar os comandos através do shell do usuário-alvo. Se o shell do usuário de destino não estiver funcional, você verá os resultados :-(
A menos que você tenha um shell raiz ainda funcional sendo executado em algum lugar ou algo como um binário raiz de setuid ou algo que permita contornar isso, reiniciar e corrigir o problema usando um sistema de resgate ou imagem ao vivo é provavelmente a sua melhor aposta.
Inicialize o sistema de recuperação, monte o sistema de arquivos raiz do seu sistema real em algum lugar, digamos /mnt/foo, e edite /mnt/foo/etc/passwdpara corrigir o shell. Salve, desmonte e pronto.
curioso, o que acontece se você fizer isso e o arquivo / etc / passwd estiver em um hash em vez de em texto sem formatação?
jgr208
1
/etc/passwdnão é texto simples? Não vejo isso há pelo menos uma década. Isso ainda é algo em alguns sistemas? Enfim, eu acho que chroot /mnt/foo chsh -s /bin/bashpoderia fazer o truque nesse caso?
Celada 28/03
Eu nunca tive o problema descrito, no entanto, trabalho com sistemas bloqueados que precisam ter o / etc / passwd não em texto simples para evitar hackers e comprometer ainda mais o sistema se eles obtiverem acesso. Hmm, isso pode funcionar, digamos que eu espero nunca ter que tentar e ver se funciona realmente.
jgr208
Eu era capaz de editar / etc / passwd com sudo a partir de uma conta de usuário, eu não estava ciente de que o shell foi definido neste arquivo, graças
ChiseledAbs
@ChiseledAbs oh, você estava? Bom para você, feliz por ter resolvido seu problema. Eu não acho que isso deixaria você.
Celada
6
Adicione init=/bin/bashà sua linha de comando do kernel (se estiver inicializando com o grub, pressione epara editar a entrada de inicialização) e você terá um shell bash executando como root sem precisar fornecer uma senha. No entanto, seu sistema de arquivos raiz provavelmente ainda será montado como somente leitura, portanto, você precisará remontá-lo primeiro e depois mudar o shell novamente chsh.
sudo vipw
o trabalho?Respostas:
Enquanto o root não tem acesso, um usuário no grupo sudo ainda pode executar comandos privilegiados - parece que o erro não está no sudo, mas em outras partes do
sudo chsh
comando (por exemplo, erro chsh).Como tal, seu sudo está aparentemente funcionando.
O arquivo passwd pode ser editado com:
E o shell raiz mudou manualmente.
(primeira linha de
/etc/passwd
geralmente)Fom man vipw
fonte
vipw
evigr
, obrigado! Eu sempre useisudo vim /etc/passwd
visudo
sudo.ws/man/1.8.15/visudo.man.html também, @tacsudo -e
, que executa esse recurso de edição de bloqueio para qualquer edição.Outra opção, supondo que você tenha acesso a outra conta, é substituir manualmente o shell padrão usando
su --shell=/bin/bash
:A principal vantagem disso é que ele requer apenas acesso a outra conta, não a outra privilegiada .
fonte
Por razões de segurança, logins se textual ou gráfica e utilitários como
su
esudo
que lhe permitem executar comandos como um usuário diferente todos executar os comandos através do shell do usuário-alvo. Se o shell do usuário de destino não estiver funcional, você verá os resultados :-(A menos que você tenha um shell raiz ainda funcional sendo executado em algum lugar ou algo como um binário raiz de setuid ou algo que permita contornar isso, reiniciar e corrigir o problema usando um sistema de resgate ou imagem ao vivo é provavelmente a sua melhor aposta.
Inicialize o sistema de recuperação, monte o sistema de arquivos raiz do seu sistema real em algum lugar, digamos
/mnt/foo
, e edite/mnt/foo/etc/passwd
para corrigir o shell. Salve, desmonte e pronto.fonte
/etc/passwd
não é texto simples? Não vejo isso há pelo menos uma década. Isso ainda é algo em alguns sistemas? Enfim, eu acho quechroot /mnt/foo chsh -s /bin/bash
poderia fazer o truque nesse caso?Adicione
init=/bin/bash
à sua linha de comando do kernel (se estiver inicializando com o grub, pressionee
para editar a entrada de inicialização) e você terá um shell bash executando como root sem precisar fornecer uma senha. No entanto, seu sistema de arquivos raiz provavelmente ainda será montado como somente leitura, portanto, você precisará remontá-lo primeiro e depois mudar o shell novamentechsh
.fonte
sudo usermod -s /bin/bash jdoe
mudará o shell do jdoe para
bash
. Você pode entãosudo egrep jdoe /etc/passwd
verificar.fonte