Eu defini 2 contas de usuário:
- um com privilégio de administrador (à
sudo
direita) => vamos chamá-loadminuser
. - um segundo sem nenhum privilégio => vamos chamá-lo
e eu configuro o login automático neste segundo usuário .
normaluser
normaluser
Portanto, quando abro uma normaluser
sessão e quero executar um aplicativo com privilégio de administrador,
abro um terminal Ctrl+ Alt+ Te:
su adminuser
sudo anyapplication ...
Funciona bem, sem precisar sair da normaluser
sessão (não é necessário abrir uma adminuser
sessão).
Mas o que devo fazer se o aplicativo precisar ser executado com uma GUI (Interface gráfica do usuário)?
Eu pensei sobre isso:
su adminuser
gksu anyapplication ...
mas eu entendo
** (gksu:9122): WARNING **: the connexion is closed
No protocol specified
No protocol specified
(gksu:9122): Gtk-WARNING **: cannot open display: :0.0
normaluser
às vezes é usado por alguém que não deveria executar comandos comoroot
, tornarnormaluser
um não administrador definitivamente melhora a segurança . Os perigos de dar a alguém uma conta de usuário, mas não de informar sua própria senha, vão muito além da situação de Boris em problemas e complexidade. Se você quiser uma explicação completa sobre por que isso é problemático, sugiro postar uma nova pergunta, mas três dos motivos são que um usuário deve ser capaz de bloquear e desbloquear a tela, sair e voltar com um tipo de sessão diferente e descriptografarecryptfs
dados.normaluser
eadminuser
é a regra de ouro.normaluser
conta para o trabalho diário eadmin
a execução de tarefas administrativas, o que realmente não melhora nada. Em uma máquina multiusuário, isso faz totalmente sentido.Respostas:
O PAM pode cuidar disso
Isso funciona para mim no Ubuntu 16.04 (editar: funciona também no 18.04 LTS):
coloque a linha:
Em algum lugar em:
e / ou
e depois executando "su -" ou "sudo su -", posso usar aplicativos gráficos como raiz.
fonte
sux
egksu
que não estão disponíveis.Terminologia
Nesta resposta:
normaluser
é um usuário normal que não é administrador e não pode executar comandos comoroot
emsudo
.admin
é um administrador que pode executar comandos comoroot
emsudo
. (Obviamente, qualquer comando gráfico deve usar uma interface gráfica comogksu
/gksudo
, e nãosudo
diretamente.)anyapplication
é o nome do aplicativo gráfico quenormaluser
deseja executar comoroot
.normaluser
sabeadmin
a senha e (presumivelmente) foi informado de que pode usá-la para esse fim.O problema
A causa do seu problema, ea razão pela qual a maioria das outras respostas até agora não fazer o trabalho (com exceção de Marty Fried 's excelente resposta ), é:
gksu
pode ser configurado para usar umsudo
ousu
como back-end. O comportamento padrão dogksu
Ubuntu é atuar como um frontendsudo
, não parasu
. Ou seja, por padrão,gksu
egksudo
se comporta exatamente da mesma maneira . Veja a página de manual .normaluser
não é um administrador e, portanto, não pode executar comandos comoroot
emsudo
.sudo
solicita a senha do usuário que está executando , não a senha do usuário que eles desejam se tornar . Não poder usar sua senha para executar ações como pessoas que não são você é o que significa não ser um administrador .normaluser
, Desde que não seja uma conta do cliente, pode executar comandos como outro usuário comsu
, colocando na senha outro usuário . Masgksu
atua como uma interface parasudo
, nãosu
.normaluser
não pode executar nenhum comando diretamente comoroot
, porquenormaluser
não pode ser usadosudo
, e ninguém pode ficarroot
com elesu
porque não hároot
senha .A solução
A solução requer a gravação de um comando que execute duas etapas de autenticação:
normaluser
deve tornaradmin
- se para executar um comando gráfico. Para fazer isso,normaluser
executegksu
com o-w
sinalizador para executá-lo no modo su, em vez do modo sudo padrão , e o-u
sinalizador para executar o comando como emadmin
vez deroot
.admin
deve ser chamadogksu
sem o-w
sinalizador a ser usadosudo
para se tornarroot
.Aqui está o comando (sim, eu testei ;-) ):
Você será solicitado a fornecer uma senha duas vezes :
admin
a senha de um usuário, para permitirnormaluser
executar um comando comoadmin
nosu
back - end.admin
a senha de um usuário, para permitiradmin
executar um comando comoroot
nosudo
back - end.Está certo. Você digita
admin
a senha duas vezes.Notas diversas:
gksu
porgksudo
para torná-lo menos confuso. No Ubuntu, eles são equivalentes. (Você também pode substituir o primeirogksu
porgksudo
, mas isso seria extremamente contra-intuitivo e confuso.)-w
é a forma abreviada de--su-mode
.-S
é a forma abreviada de,--sudo-mode
mas nenhuma deve ser usada porque o modo sudo é o padrão.xclock
é uma aplicação simples e agradável da janela do relógio.fonte
sudo
para fazê-lo funcionar. Exemplo:sudo gksu -w -u thedude gksu xclock
kdesudo
parece funcionar mais limpo, pelo menos no KUbuntu.gksu
não está mais disponívelUma maneira que provavelmente funcionará é usar "sux" em vez de "su" quando você alternar para o usuário administrador. sux corrige o problema de executar x aplicativos do usuário falsificado. Ele está no repositório padrão e pode ser instalado digitando
sudo apt-get install sux
em uma linha de comando.Em seguida, basta usar "sux" em vez de "su" e deve funcionar da maneira que você espera.
Permite reutilizar o exemplo do aplicativo
xclock
:fonte
sux
no Ubuntu 14.04 64bits;(
pkexec
Existe uma alternativa onipresente ao kdesudo e ao gksu -
pkexec
que é dopolicykit-1
pacote exigido por muitos pacotes.fonte
sudo
ou polkit), que conhece a senha de um administrador (ou seja, de alguém que pode se tornar rootsudo
ou polkit), pode usarpkexec
para execute um programa gráfico como root. É isso que a pergunta aqui está fazendo. Não é claro para mim quepkexec
vai fazer isso, pelo menos sem editar extensivamente os arquivos de configuração, especialmente desde quepkexec
geralmente não podem ser usados para executar programas gráficos arbitrárias (sem perfis polkit) em tudo . Há algum jeito?pkexec command
e funcionar. A configuração está no arquivo/usr/share/polkit-1/actions/org.freedesktop.policykit.policy
que é instalado pelo pacote nomeado. E ele realmente exige que você escrever a senha de administrador apenas uma vezAo invés de
Eu sugiro que você tente
gksu -u admin anyapplication
, onde você faz tudo usando ogksu
próprio comando. Além disso, observe que você deve digitar a senha do usuário mencionado no comando, ou seja, nesse caso, você deve digitar a senha do administrador .fonte
normaluser
executadogksu -u admin anyapplication
ele irá pedir paranormaluser
'password s para se tornaradmin
usando osudo
backend, assim comogksu anyapplication
iria solicitarnormaluser
a senha para se tornarroot
usando osudo
backend. Ambos falharão pelo mesmo motivo -normaluser
não tem o poder de executar comandossudo
.Aqui está o comando para fazer isso.
Execute-o sem executar
su
primeiro. Você só precisa executar o comando acima em uma sessão normal do usuário e o aplicativo será executado como root.fonte
normal
senha de usuário - recebo a mensagem "Impossível iniciar como usuário root"superuser/admin
senha - recebo a mensagem "senha incorreta, tente novamente"Você deveria usar:
Isso traz uma solicitação gráfica de senha primeiro (a senha do usuário) e, em seguida, inicia o aplicativo GUI como root (eu tentei, realmente funciona. Coisa engraçada: tentei
gksu AppName
imediatamente depois e funcionou tão bem - como é provavelmente deveria, como sugere o prefixo "gk". Portanto, não tenho certeza de onde seu problema pode estar).fonte
sudo
no modo de texto está funcionando para ele.Há apenas um super usuário e isso é raiz.
O usuário 1 é um administrador e possui direitos de sudo.
O usuário 2 não é um administrador e não possui direitos de sudo.
Tente fazer login como usuário 1 e, em seguida, use o comando
(substituindo app-name pelo nome do aplicativo)
Espero que ajude - me avise. : o)
EDIT: Mais informações conforme solicitado
Se for apenas você no computador,
usar o usuário 1 (que tem permissão para usar o sudo)
não é diferente de usar o usuário 2 (que não tem permissão para usar o sudo).
O usuário 1 tem os mesmos direitos que o usuário 2.
A menos que o usuário 1 emita um comando prefixado com sudo e / ou forneça sua senha para permitir que os aplicativos sejam executados com privilégios de root.
A única diferença é que o usuário 2 não pode executar aplicativos como root.
Espero que ajude a explicar um pouco para você. : o)
fonte
su admin
+sudo ...
exemplosudo vi file
, exceto para aplicação com GUI