Essa resposta ainda deve ajudá-lo, mesmo levando em consideração as edições da pergunta. Em particular, uma conta criada com
--disabled-login
nenhuma 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
root
conta é 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á
irssi
usuário.
- A
irssi
conta do usuário está desativada.
- A
irssi
conta 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
irssi
usuá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 su
comando for bem-sucedido, você ainda terá um shell de propriedade irssi
, mas variáveis de ambiente como HOME
seriam inalteradas.
Se você deseja executar um programa chamado irssi
, invoque de forma su
diferente:
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 irssi
como root
, su
nã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 root
login, poderá usar su
para se tornar root
. A razão pela qual é desnecessário ativar a root
conta é que, mesmo que você não o faça, você ainda pode executar comandos como root
em 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 root
em sudo
(a menos que você reconfigure sudo
para 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 root
com sua própria senha.
Para executar irssi
como root
com 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 sudo
versão pode ser bem-sucedida porque não exige que a root
conta seja ativada.
Assim como su
você pode usar sudo
para executar comandos como outro não root
usuário . Para executar irssi
como username
com sudo
:
sudo -u username irssi
Se você deseja sudo
se comportar como su -
em relação aHOME
- isto é, deseja usar as HOME
variáveis de ambiente do usuário de destino , pode executar sudo
com o -H
sinalizador:
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
( i
Significa 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 gksu
funcionou quando su
não?
gksu
provavelmente funcionou executandosudo
.
gksu
é uma interface para ambos su
e sudo
. No Ubuntu, o padrão é usar sudo
(já que no Ubuntu, su
normalmente não é usado para se tornar root
, e é apenas uma maneira secundária de se tornar outros não- root
usuários).
Você pode gksu
usar su
como front-end executando gksu --su-mode
.
Você pode descobrir se gksu
está no su
modo ou no sudo
modo e (se desejar) alterar essa configuração executando gksu-properties
. Essa é uma configuração por usuário.
Quando gksu
está no sudo
modo, 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 username
conta foi criada com o --disabled-login
sinalizador, 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 username
não pode ser autenticado.
Então, todas as su
soluções baseadas estão disponíveis. sudo
pode funcionar, porque sudo
você 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 root
conta novamente depois de ativá-la temporariamente.
A username
conta tem /bin/false
como 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/false
executado, por outro lado, não faz nada e relata falha . ( /bin/true
não faz nada e relata sucesso.)
Os comandos false
e true
sã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 sftp
e scp
transferir arquivos.
Desde username
login shell 's era não funcional, comandos como , , , e não podia trabalhar.su username
su - username
sudo -u username -s
sudo -u username -i
Mas comandos que não fornecem um shell, como ou ainda podem funcionar.sudo -u username command
su 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, username
ambos desabilitaram a senha e o shell "desabilitado". A ausência de uma senha de trabalho impedia o funcionamento de todas as su
soluçõ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.