Esta resposta ainda deve ajudá-lo, mesmo levando as edições para o questão em consideração. Em particular, uma conta criada com
--disabled-login
não tem senha definida e nenhum outro meio de registrar em , mas ainda deve ser possível usarsudo
(explicado abaixo) para executar comandos ou um shell como o usuário. Isto é, de fato, como o A contaroot
está configurada no Ubuntu.
Existem vários problemas com o comando su - irssi
.
Este comando tenta iniciar um shell pertencente a um usuário chamado irssi
.
Ele falhará se:
- Não há
irssi
usuário. - A conta do usuário
irssi
está desativada. - A conta do usuário
irssi
está desativada para login interativo. Às vezes, é permitido que uma conta use serviços como o FTP, mas seja proibida de fazer logon normalmente, definindo o shell como algo que sai imediatamente, como/bin/false
. Em seguida, um login termina imediatamente, sem mensagem. - A senha que você está inserindo não está correta para o usuário
irssi
.
O -
flag faz com que o shell simule um shell de login inicial - ou seja, é muito parecido com o logon como irssi
. Sem o sinalizador -
, se o comando su
for bem-sucedido, você ainda obterá um shell de propriedade de irssi
, mas as variáveis de ambiente como HOME
não serão alteradas.
Se você quiser executar um programa chamado irssi
, invoque su
de maneira diferente:
su username - -c irssi
Se você deixar de fora -c username
, será o mesmo que -c root
- ele tentará executar o comando como root.
Alternativamente, você pode iniciar um shell e depois executar o comando :
- Inicie o shell com
su username -
. - No shell, execute o comando (
irssi
). - Se estiver pronto, deixe o shell executando
exit
.
Comandos em execução como root
Se você deseja executar irssi
como root
, su
não é a maneira de fazer isso. Os logins de raiz são desativados por padrão no Ubuntu, e raramente há motivo para reativá-los . Se você tiver ativado root
login, poderá usar su
para se tornar root
. A razão pela qual é desnecessário habilitar a conta root
é que, independentemente de você fazer ou não, você ainda pode executar comandos como root
com sudo
.
Quando você executa comandos com sudo
, 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
com 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 tem permissão para 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
's.
Com exceção da senha que você digita, isso faz o mesmo que:
su -c irssi
Exceto que a versão sudo
pode ser bem-sucedida porque não exige que a conta root
seja ativada.
Assim como com su
, você pode usar sudo
para executar comandos como outro, diferente de root
user . Para executar irssi
como username
com sudo
:
sudo -u username irssi
Se você quiser que sudo
se comporte como su -
em relação a HOME
- ou seja, você deseja usar as variáveis de ambiente HOME
do usuário de destino, pode executar sudo
com o sinalizador -H
:
sudo -H irssi
sudo -H -u username irssi
Você pode iniciar um shell inteiro com sudo
, como acontece com su
. Exceto por cuja senha você colocou, este comando tem o mesmo efeito que su
:
sudo -s
E este comando tem o mesmo efeito que su -
:
sudo -i
(O i
representa o shell de login inicial .)
Você pode iniciar um shell como outro usuário também:
sudo -u username -s
sudo -u username -i
Leitura adicional em sudo
Para saber mais sobre sudo
, consulte:
- O wiki da comunidade do Ubuntu.
- Wikipedia.
-
O upstream
sudo
site (pelo autor desudo
). -
man sudo
- Quais são os benefícios do sudo sobre o su?
- Por que não há opção de login como root?
Por que gksu
funcionou quando su
não?
gksu
provavelmente funcionou executando sudo
.
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 usuários que não são root
).
Você pode tornar gksu
use su
como o front-end executando gksu --su-mode
.
Você pode descobrir se gksu
está no modo su
ou sudo
e (se desejar) alterar essa configuração, executando gksu-properties
. Esta é uma configuração por usuário.
Quando gksu
está no modo sudo
, ele se comporta da mesma forma que gksudo
.
Leitura adicional em gksu
-
Esta subseção do wiki da comunidade Ubuntu , em "graphical
sudo
". -
man gksu
-
O site upstream
gksu
(pelos criadores degksu
). -
A resposta de Stefano Palazzo aqui sobre como explicar
gksu
vs.gksudo
no Ubuntu.
Análise pós-solução
Você descobriu que conseguiu executar o comando necessário com:
sudo -u username irssi
(Que é uma das técnicas listadas acima.)
Em última análise, você relatou duas informações, que são suficientes para explicar por que outras técnicas falharam, mas que foram bem sucedidas:-
A conta
username
foi criada com o sinal--disabled-login
, o que a torna sem senha (e nenhum outro meio de login). Não ter senha não significa que é possível fazer o 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 significa queusername
não pode ser autenticado.Portanto, todas as soluções baseadas em
su
estão fora.sudo
pode funcionar, porque comsudo
você não autentica como o usuário que está prestes a representar. Em vez disso, você precisa estar autorizado para personificá-los e autenticá-los como você mesmo (ou seja, digite sua própria senha, não a deles).É possível definir uma senha na conta, o que remove essa barreira ao login:
sudo passwd username
No entanto, pode haver uma boa razão para o usuário não ter permissão para efetuar login. Por exemplo, se esse usuário tiver permissão para efetuar login e se conectar graficamente, problemas graves surgirão do ambiente do usuário ou privilégios serão inadequadamente executando aplicativos X11? Se este 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 desabilitá-lo novamente:
sudo passwd -dl username
Relacionados: Desativando a conta
root
depois de ter sido ativada temporariamente. -
A conta
username
tem/bin/false
como seu shell de login.Quando um shell como
bash
é executado como seu shell de login, ele configura seu ambiente e fornece um prompt interativo para controlar a máquina.Quando
/bin/false
é executado, por outro lado, não faz nada e informa falha . (/bin/true
não faz nada e reporta sucesso.)Os comandos
false
etrue
são úteis no script e para várias finalidades de teste, mas também para desabilitar uma conta para que, quando alguém fizer login, sua sessão de login termine imediatamente. Dessa forma, uma senha (ou outros meios de autenticação) pode ser ativada, e as pessoas podem efetuar login, mas não para acesso ao 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 usarsftp
escp
para transferir arquivos.Como o shell de login do
username
não era funcional, os comandos comosu username
,su - username
,sudo -u username -s
esudo -u username -i
não funcionaram.Mas os comandos que não fornecem um shell, como
sudo -u username command
ousu username -c 'command'
, ainda podem funcionar.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 cautela, pois pode haver um bom motivo para desabilitar logins interativos para o usuário.
Aqui, username
ambos desativaram a senha e shell "desativado". A ausência de qualquer senha de trabalho impedia que todas as soluções baseadas em su
funcionassem, enquanto a ausência de um shell de login interativo funcional 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.