Definí 2 cuentas de usuario:
- uno con privilegio de administrador (con
sudo
derecho) => vamos a llamarloadminuser
. - un segundo sin ningún privilegio => vamos a llamarlo
y configuro el inicio de sesión automático en este segundo usuario .
normaluser
normaluser
Entonces, cuando abro una normaluser
sesión y quiero ejecutar una aplicación con privilegios de administrador,
abro un terminal Ctrl+ Alt+ Ty:
su adminuser
sudo anyapplication ...
Funciona bien, sin tener que salir de la normaluser
sesión (no es necesario abrir una adminuser
sesión).
Pero, ¿qué debo hacer si la aplicación necesita ejecutarse con una GUI (interfaz gráfica de usuario)?
Pensé en eso:
su adminuser
gksu anyapplication ...
pero consigo
** (gksu:9122): WARNING **: the connexion is closed
No protocol specified
No protocol specified
(gksu:9122): Gtk-WARNING **: cannot open display: :0.0
normaluser
veces lo usa alguien que no debería poder ejecutar comandos comoroot
, hacer quenormaluser
un no administrador definitivamente mejore la seguridad . Los peligros de darle a alguien una cuenta de usuario pero no dejarle saber su propia contraseña van mucho más allá de la situación de Boris en problemas y complejidad. Si desea una explicación completa de por qué eso es problemático, sugiero publicar una nueva pregunta, pero 3 de las razones son que un usuario debería poder bloquear y desbloquear la pantalla, cerrar sesión y volver a iniciar sesión con un tipo de sesión diferente, y descifrarecryptfs
datos.normaluser
y laadminuser
configuración es la regla de oro.normaluser
cuenta para el trabajo diario y laadmin
cuenta para realizar tareas administrativas, lo que realmente no mejora nada. En una máquina multiusuario, esto tiene mucho sentido.Respuestas:
PAM puede cuidarlo
Esto funciona para mí en Ubuntu 16.04 (editar: también funciona en 18.04 LTS):
pon la linea:
en algún lugar de:
y / o
y luego haciendo "su -" o "sudo su -" Puedo usar aplicaciones gráficas como root.
fuente
sux
ygksu
que no están disponibles ya.Terminología
En esta respuesta:
normaluser
es un usuario normal que no es administrador y no puede ejecutar comandos comoroot
consudo
.admin
es un administrador que puede ejecutar comandos comoroot
consudo
. (Por supuesto, cualquier comando gráfico debe usar una interfaz gráfica comogksu
/gksudo
, y nosudo
directamente).anyapplication
es el nombre de la aplicación gráfica quenormaluser
quiere ejecutarse comoroot
.normaluser
conoceadmin
la contraseña y se le ha dicho (presumiblemente) que puede usarla para este propósito.El problema
La causa de su problema, y la razón por la cual la mayoría de las otras respuestas hasta ahora no funcionan (con la excepción de la excelente respuesta de Marty Fried ), es:
gksu
se puede configurar para usarsudo
osu
como su backend. El comportamiento predeterminado degksu
en Ubuntu es actuar como una interfaz parasudo
, no parasu
. Es decir, por defecto,gksu
ygksudo
comportarse exactamente igual . Ver la página de manual .normaluser
no es administrador y, por lo tanto, no puede ejecutar comandos comoroot
consudo
.sudo
solicita la contraseña del usuario que la ejecuta , no la contraseña del usuario en el que desea convertirse . No poder usar su contraseña para realizar acciones como personas que no son usted es lo que significa no ser administrador .normaluser
, Siempre que no sea una cuenta de invitado, puede ejecutar comandos como otro usuario consu
, poniendo en la contraseña de otro usuario . Perogksu
actúa como una interfaz parasudo
, nosu
.normaluser
no poder directamente ejecutar cualquier comando comoroot
, porquenormaluser
no se puede utilizarsudo
, y nadie puede llegar a serroot
consu
porque no hay ningunaroot
contraseña .La solución
La solución requiere escribir un comando que realice dos pasos de autenticación:
normaluser
debe convertirseadmin
para ejecutar un comando gráfico. Para hacer esto,normaluser
debe ejecutarsegksu
con el-w
indicador para que se ejecute en modo su en lugar del modo sudo predeterminado , y el-u
indicador para ejecutar el comando como enadmin
lugar deroot
.admin
debe invocargksu
sin la-w
bandera a utilizarsudo
para convertirseroot
.Aquí está el comando (sí, lo he probado ;-) ):
Se le pedirá una contraseña dos veces :
admin
la contraseña para podernormaluser
ejecutar un comando comoadmin
en elsu
backend.admin
la contraseña para poderadmin
ejecutar un comando comoroot
en elsudo
backend.Está bien. Ingresa
admin
la contraseña dos veces.Notas misceláneas:
gksu
congksudo
para que sea menos confuso. En Ubuntu, son equivalentes. (También puede reemplazar el primerogksu
congksudo
, pero eso sería extremadamente contradictorio y confuso).-w
es la forma corta de--su-mode
.-S
es la forma abreviada de--sudo-mode
pero no tiene que usarse porque sudo-mode es el valor predeterminado.xclock
es una buena aplicación simple de ventana de reloj.fuente
sudo
para que funcione. Ejemplo:sudo gksu -w -u thedude gksu xclock
kdesudo
parece funcionar de manera más limpia, al menos en KUbuntu.gksu
ya no está disponibleUna forma que probablemente funcionará es usar "sux" en lugar de "su" cuando cambie por primera vez al usuario administrador. sux soluciona el problema de ejecutar aplicaciones x del usuario falso. Está en el repositorio estándar y se puede instalar ingresando
sudo apt-get install sux
en una línea de comandos.Luego, simplemente use "sux" en lugar de "su" y debería funcionar de la manera esperada.
Reutilicemos el ejemplo de la aplicación
xclock
:fuente
sux
Ubuntu 14.04 64bits;(
pkexec
Hay una alternativa omnipresente a kdesudo y gksu,
pkexec
que proviene delpolicykit-1
paquete que requieren muchos paquetes.fuente
sudo
o polkit), que conoce la contraseña de un administrador (es decir, de alguien que puede llegar a ser la raíz consudo
o polkit), se puede utilizarpkexec
para ejecuta un programa gráfico como root. Esa es la pregunta que se hace aquí. No es claro para mí quepkexec
lo hará, al menos sin necesidad de editar archivos de configuración ampliamente, sobre todo porquepkexec
generalmente no pueden ser utilizadas para ejecutar programas gráficos arbitrarias (sin perfiles polkit) en absoluto . ¿Hay alguna manera?pkexec command
y funciona. La configuración está en el archivo/usr/share/polkit-1/actions/org.freedesktop.policykit.policy
que instala el paquete con nombre. Y en realidad requiere que escriba la contraseña de administrador solo una vezEn lugar de
Te sugiero que pruebes
gksu -u admin anyapplication
, donde haces todo usando elgksu
comando en sí. También tenga en cuenta que debe ingresar la contraseña del usuario mencionado en el comando, es decir, en este caso debe ingresar la contraseña del administrador .fuente
normaluser
ejecutagksu -u admin anyapplication
, solicitará quenormaluser
la contraseña se vuelva aadmin
usar en elsudo
backend, al igual quegksu anyapplication
se solicitará quenormaluser
la contraseña se vuelva aroot
usar en elsudo
backend. Ambos fallarán por la misma razónnormaluser
: no tiene el poder para ejecutar comandossudo
.Aquí está el comando para lograr esto.
Ejecútalo sin correr
su
primero. Solo necesita ejecutar el comando anterior desde una sesión de usuario normal y la aplicación se ejecutará como root.fuente
normal
contraseña de usuario - Recibo el mensaje "Imposible iniciar como usuario root"superuser/admin
contraseña - Recibo el mensaje "contraseña incorrecta, inténtalo de nuevo"Deberías usar:
Esto abre primero una solicitud de contraseña gráfica (la contraseña de su usuario), y luego inicia la aplicación GUI como root (acabo de intentarlo, realmente lo hace. Algo curioso: lo intenté
gksu AppName
inmediatamente después, y eso también funcionó, ya que es probablemente se supone que debe hacerlo, como sugiere el prefijo "gk". Así que no estoy completamente seguro de dónde se puede encontrar su problema).fuente
sudo
en modo texto está trabajando para él.Solo hay un superusuario y ese es root.
El usuario 1 es administrador y tiene derechos de sudo.
El usuario 2 no es administrador y no tiene derechos de sudo.
Intente iniciar sesión como usuario 1 y luego use el comando
(reemplazando el nombre de la aplicación con el nombre de la aplicación)
Espero que ayude, hágamelo saber. : o)
EDITAR: Más información según lo solicitado
Si solo eres tú en la computadora,
entonces usar el usuario 1 (que tiene permiso para usar sudo)
no es diferente a usar el usuario 2 (que no tiene permiso para usar sudo).
El usuario 1 tiene los mismos derechos que el usuario 2.
A menos que el usuario 1 emita un comando con el prefijo sudo y / o proporcione su contraseña para permitir que las aplicaciones se ejecuten con privilegios de root.
La única diferencia es que el usuario 2 no puede ejecutar aplicaciones como root.
Espero que eso te lo explique un poco. : o)
fuente
su admin
+sudo ...
ejemplosudo vi file
, excepto para la aplicación con GUI