Definí 2 cuentas de usuario:
- uno con privilegio de administrador (con
sudoderecho) => 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 .
normalusernormaluser
Entonces, cuando abro una normalusersesió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 normalusersesión (no es necesario abrir una adminusersesió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

normaluserveces lo usa alguien que no debería poder ejecutar comandos comoroot, hacer quenormaluserun 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 descifrarecryptfsdatos.normalusery laadminuserconfiguración es la regla de oro.normalusercuenta para el trabajo diario y laadmincuenta 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
suxygksuque no están disponibles ya.Terminología
En esta respuesta:
normaluseres un usuario normal que no es administrador y no puede ejecutar comandos comorootconsudo.admines un administrador que puede ejecutar comandos comorootconsudo. (Por supuesto, cualquier comando gráfico debe usar una interfaz gráfica comogksu/gksudo, y nosudodirectamente).anyapplicationes el nombre de la aplicación gráfica quenormaluserquiere ejecutarse comoroot.normaluserconoceadminla 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:
gksuse puede configurar para usarsudoosucomo su backend. El comportamiento predeterminado degksuen Ubuntu es actuar como una interfaz parasudo, no parasu. Es decir, por defecto,gksuygksudocomportarse exactamente igual . Ver la página de manual .normaluserno es administrador y, por lo tanto, no puede ejecutar comandos comorootconsudo.sudosolicita 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 . Perogksuactúa como una interfaz parasudo, nosu.normaluserno poder directamente ejecutar cualquier comando comoroot, porquenormaluserno se puede utilizarsudo, y nadie puede llegar a serrootconsuporque no hay ningunarootcontraseña .La solución
La solución requiere escribir un comando que realice dos pasos de autenticación:
normaluserdebe convertirseadminpara ejecutar un comando gráfico. Para hacer esto,normaluserdebe ejecutarsegksucon el-windicador para que se ejecute en modo su en lugar del modo sudo predeterminado , y el-uindicador para ejecutar el comando como enadminlugar deroot.admindebe invocargksusin la-wbandera a utilizarsudopara convertirseroot.Aquí está el comando (sí, lo he probado ;-) ):
Se le pedirá una contraseña dos veces :
adminla contraseña para podernormaluserejecutar un comando comoadminen elsubackend.adminla contraseña para poderadminejecutar un comando comorooten elsudobackend.Está bien. Ingresa
adminla contraseña dos veces.Notas misceláneas:
gksucongksudopara que sea menos confuso. En Ubuntu, son equivalentes. (También puede reemplazar el primerogksucongksudo, pero eso sería extremadamente contradictorio y confuso).-wes la forma corta de--su-mode.-Ses la forma abreviada de--sudo-modepero no tiene que usarse porque sudo-mode es el valor predeterminado.xclockes una buena aplicación simple de ventana de reloj.fuente
sudopara que funcione. Ejemplo:sudo gksu -w -u thedude gksu xclockkdesudoparece funcionar de manera más limpia, al menos en KUbuntu.gksuya 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 suxen 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
suxUbuntu 14.04 64bits;(pkexec
Hay una alternativa omnipresente a kdesudo y gksu,
pkexecque proviene delpolicykit-1paquete que requieren muchos paquetes.fuente
sudoo polkit), que conoce la contraseña de un administrador (es decir, de alguien que puede llegar a ser la raíz consudoo polkit), se puede utilizarpkexecpara ejecuta un programa gráfico como root. Esa es la pregunta que se hace aquí. No es claro para mí quepkexeclo hará, al menos sin necesidad de editar archivos de configuración ampliamente, sobre todo porquepkexecgeneralmente no pueden ser utilizadas para ejecutar programas gráficos arbitrarias (sin perfiles polkit) en absoluto . ¿Hay alguna manera?pkexec commandy funciona. La configuración está en el archivo/usr/share/polkit-1/actions/org.freedesktop.policykit.policyque 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 elgksucomando 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
normaluserejecutagksu -u admin anyapplication, solicitará quenormaluserla contraseña se vuelva aadminusar en elsudobackend, al igual quegksu anyapplicationse solicitará quenormaluserla contraseña se vuelva arootusar en elsudobackend. 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
suprimero. Solo necesita ejecutar el comando anterior desde una sesión de usuario normal y la aplicación se ejecutará como root.fuente
normalcontraseña de usuario - Recibo el mensaje "Imposible iniciar como usuario root"superuser/admincontraseñ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 AppNameinmediatamente 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
sudoen 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