Essa resposta ainda deve ajudá-lo, mesmo levando em consideração as edições da pergunta. Em particular, uma conta criada com
--disabled-loginnenhuma senha definida e nenhum outro meio de logon , mas ainda deve ser possível usar sudo(explicado abaixo) para executar comandos ou um shell como usuário. É assim que a
rootconta é configurada no Ubuntu.
Há vários problemas com o comando su - irssi.
Este comando tenta iniciar um shell pertencente a um usuário chamadoirssi .
Falhará se:
- Não há
irssiusuário.
- A
irssiconta do usuário está desativada.
- A
irssiconta do usuário está desativada para logon interativo. Às vezes, uma conta tem permissão para usar serviços como FTP, mas é proibida de efetuar login normalmente, definindo seu shell para algo que fecha imediatamente, como /bin/false. Em seguida, um login termina imediatamente, sem mensagem.
- A senha que você está digitando não está correta para o
irssiusuário.
A -sinalização faz com que o shell simule um shell de login inicial - ou seja, é realmente muito parecido com o logon como irssi. Sem o -sinalizador, se o sucomando for bem-sucedido, você ainda terá um shell de propriedade irssi, mas variáveis de ambiente como HOMEseriam inalteradas.
Se você deseja executar um programa chamado irssi , invoque de forma sudiferente:
su username - -c irssi
Se você deixar de fora , é o mesmo que --it tenta executar o comando como root.-c username-c root
Como alternativa, você pode iniciar um shell e executar o comando :
- Inicie o shell com .
su username -
- No shell, execute o comando (
irssi).
- Se você terminar, deixe o shell executando
exit.
Executando comandos como root
Se você deseja executar irssicomo root, sunão é o caminho para fazê-lo. Os logins de raiz são desativados por padrão no Ubuntu, e raramente há motivo para reativá-los . Se você ativou o rootlogin, poderá usar supara se tornar root. A razão pela qual é desnecessário ativar a rootconta é que, mesmo que você não o faça, você ainda pode executar comandos como rootem sudo.
Ao executar comandos sudo, você coloca sua senha, não a senha do usuário sob cuja identidade você deseja que o comando seja executado. Somente administradores podem executar comandos arbitrários como rootem sudo(a menos que você reconfigure sudopara permitir que outros o façam, é claro). Portanto, um usuário que não tem permissão para administrar o sistema não pode executar comandos como rootcom sua própria senha.
Para executar irssicomo rootcom sudo:
sudo irssi
E você digitaria sua senha quando solicitado, não root.
Exceto a senha digitada, isso faz o mesmo que:
su -c irssi
Exceto que a sudoversão pode ser bem-sucedida porque não exige que a rootconta seja ativada.
Assim como suvocê pode usar sudopara executar comandos como outro não rootusuário . Para executar irssicomo usernamecom sudo:
sudo -u username irssi
Se você deseja sudo se comportar como su -em relação aHOME - isto é, deseja usar as HOMEvariáveis de ambiente do usuário de destino , pode executar sudocom o -Hsinalizador:
sudo -H irssi
sudo -H -u username irssi
Você pode iniciar um shell inteiro com sudo, como você pode com su. Exceto por cuja senha você inseriu, este comando tem o mesmo efeito que su:
sudo -s
E este comando tem o mesmo efeito que su -:
sudo -i
( iSignifica shell de login inicial .)
Você também pode iniciar um shell como outro usuário:
sudo -u username -s
sudo -u username -i
Leitura adicional sobre sudo
Para saber maissudo , dê uma olhada em:
Por que gksufuncionou quando sunão?
gksuprovavelmente funcionou executandosudo .
gksué uma interface para ambos su e sudo. No Ubuntu, o padrão é usar sudo(já que no Ubuntu, sunormalmente não é usado para se tornar root, e é apenas uma maneira secundária de se tornar outros não- rootusuários).
Você pode gksuusar sucomo front-end executando gksu --su-mode.
Você pode descobrir se gksuestá no sumodo ou no sudomodo e (se desejar) alterar essa configuração executando gksu-properties. Essa é uma configuração por usuário.
Quando gksuestá no sudomodo, ele se comporta da mesma forma que gksudo.
Leitura adicional sobre gksu
Análise pós-solução
Você acabou descobrindo que era capaz de executar o comando necessário com:
sudo -u username irssi
(Qual das técnicas listadas acima.)
Por fim, você relatou duas informações, suficientes para explicar por que outras técnicas falharam, mas foram bem-sucedidas:
A usernameconta foi criada com o --disabled-loginsinalizador, o que faz com que não tenha senha (e nenhum outro meio de efetuar login). Não ter senha não significa que é possível fazer login com uma senha em branco . Isso significa que nenhuma senha é suficiente para autenticar. Em combinação com a eliminação de outros meios de autenticação, isso usernamenão pode ser autenticado.
Então, todas as susoluções baseadas estão disponíveis. sudopode funcionar, porque sudovocê não se autentica como o usuário que está prestes a se passar. Em vez disso, você deve estar autorizado a representá-los e se autenticar como você mesmo (por exemplo, digite sua própria senha, não a deles).
É possível definir uma senha na conta, o que remove essa barreira no login:
sudo passwd username
No entanto, pode haver uma boa razão para o usuário não ter permissão para fazer login. Por exemplo, se esse usuário tivesse permissão para fazer login e efetuar login graficamente, surgiriam problemas graves no ambiente do usuário ou privilégios inadequados para a execução de aplicativos X11 ? Se esse usuário pudesse fazer logon, isso tornaria possível fazer logon remotamente como esse usuário (para máquinas nas quais você expôs serviços de rede)?
Se você quiser desativá-lo novamente:
sudo passwd -dl username
Relacionado: Desativando a rootconta novamente depois de ativá-la temporariamente.
A usernameconta tem /bin/falsecomo shell de logon.
Quando um shell bashé executado como seu shell de login, ele configura seu ambiente e fornece um prompt interativo com o qual você pode controlar a máquina.
Quando /bin/falseexecutado, por outro lado, não faz nada e relata falha . ( /bin/truenão faz nada e relata sucesso.)
Os comandos falsee truesão úteis em scripts e para vários fins de teste, mas também para desabilitar uma conta para que, quando alguém faça login, sua sessão de logon termine imediatamente. Dessa forma, uma senha (ou outro meio de autenticação) pode ser ativada e as pessoas podem efetuar login, mas não para acessar o shell . Por exemplo, se houver um servidor FTP, eles ainda poderão acessar sua conta via FTP. Se houver um servidor SSH, eles não poderão obter um shell via SSH, mas ainda poderão usar sftpe scptransferir arquivos.
Desde usernamelogin shell 's era não funcional, comandos como , , , e não podia trabalhar.su usernamesu - usernamesudo -u username -ssudo -u username -i
Mas comandos que não fornecem um shell, como ou ainda podem funcionar.sudo -u username commandsu username -c 'command'
Como os comandos podem ser executados, você pode alterar o shell de login do usuário para algo funcional:
sudo chsh -s /bin/bash username
No entanto, isso também deve ser feito com cuidado, pois pode haver um bom motivo para desativar logons interativos para o usuário.
Aqui, usernameambos desabilitaram a senha e o shell "desabilitado". A ausência de uma senha de trabalho impedia o funcionamento de todas as susoluções baseadas, enquanto a ausência de um shell de logon interativo em funcionamento impedia que todas as soluções de geração de shell funcionassem (exceto invocar manualmente um shell, como ).sudo -u username bash
sudo -u username command é o que restou.