¿Cómo obtener el indicador de contraseña de sudo GUI sin línea de comando?

10

Actualmente, para todos mis comandos que requieren acceso de root, tengo que escribirlos en una línea de comandos.

Me gustaría que la GUI me solicite que ingrese mi contraseña, cuando se requiera sudo, en lugar de tener que escribir los comandos desde la línea de comandos.

¿Hay alguna forma de habilitar esto? Anteriormente, una versión del escritorio de Ubuntu tenía esta característica lista para usar.

Esta versión de Ubuntu (que ahora estoy ejecutando) la actualicé desde la instalación de un servidor.

Agregaré, mi cuenta de usuario ya está agregada al grupo sudo. Por lo tanto, puedo ejecutar comandos como sudo gedito sudo apt-getpero no puedo instalar software en el Centro de software de Ubuntu.

Sean
fuente

Respuestas:

10

TL; DR: intente instalar los paquetes policykit-1y policykit-1-gnome.

Probablemente necesites polkit (también conocido como PolicyKit).

La mayoría de las utilidades gráficas de administración de sistemas en Ubuntu, incluido el Centro de software, generalmente se pueden ejecutar sin sudonada parecido. Simplemente los ejecuta de la misma manera que ejecutaría cualquier programa.

Cuando llega el momento de realizar una tarea que requiere privilegios de root, usan polkit para realizar las acciones requeridas. polkit es un mecanismo separado de sudo, para permitir a los administradores realizar acciones como root. Está instalado en sistemas Ubuntu de escritorio, pero de forma predeterminada no forma parte de las instalaciones de Ubuntu Server.

Por lo tanto, el comportamiento normal del Centro de software es que puede invocarlo simplemente software-center, ya que no le pedirá que se autentique en ese momento, pero cuando le indique que instale o elimine el software, le pedirá que se autentique (gráficamente).

Parece que, según su descripción, su sistema comenzó como un sistema Ubuntu Server sin GUI, y luego instaló una GUI. Probablemente los paquetes policykit-1Instalar policykit-1 y policykit-1-gnomeInstalar policykit-1-gnome no se hayan instalado. Si instala el, polkit probablemente comenzará a funcionar para Software Center y otras utilidades similares.

sudo apt-get update
sudo apt-get install policykit-1 policykit-1-gnome

Entonces deberías poder ejecutar:

software-center

(O seleccione el Centro de software gráficamente según lo dispuesto por el entorno de escritorio que instaló).

Si desea un sistema de escritorio Ubuntu completamente funcional, le recomiendo instalar el metapaquete para cualquier "sabor" de Ubuntu en el que desee convertir su sistema. Básicamente, si desea un sistema de escritorio Ubuntu normal, instale ubuntu-desktopInstalar ubuntu-desktop .

sudo apt-get update
sudo apt-get install ubuntu-desktop

Esto debería llenar los diversos vacíos, como no tener polkit, que vienen con la instalación de una GUI más mínima en su sistema de servidor. Por otro lado, si prefiere una GUI más mínima, puede instalar esos paquetes polkit.

Para obtener más información, consulte ¿Cómo ejecuta Ubuntu Server con una GUI?

sudo con autenticación gráfica

Si realmente necesita ejecutar comandos como root pero obtener un cuadro de diálogo de autenticación gráfico, lo que está buscando es gksudo( ogksu ). Esto lo proporciona el paquete gksuInstalar gksu . Es una interfaz gráfica para sudo.

Normalmente gksudose usa para ejecutar aplicaciones gráficas como root (o algún otro usuario además del usuario que las inicia). Pero también puede usarlo para ejecutar comandos no gráficos, siempre que los comandos se puedan ejecutar sudo.

Puedes correr gksudodesde una terminal pero no tienes que hacerlo. Puede ejecutarlo desde el cuadro de diálogo Alt+ F2(comando de ejecución) o ponerlo en la Exec=línea de un .desktoparchivo (o cualquiera de las otras formas en que ejecuta programas gráficos).

Tenga en cuenta que debe considerar usar gksudopara ejecutar aplicaciones gráficas como root incluso cuando las esté ejecutando desde un terminal, porque los comandos como sudo ...where ...is a graphic application realmente pueden romper las configuraciones por aplicación de los usuarios no root que las ejecutan. (Afortunadamente esto es reparable) sudo gedites particularmente notorio.

Para obtener más información sobre el problema con sudolas aplicaciones gráficas y qué hacer en su lugar, consulte:

También hay una forma gráfica basada en polkit ... para comandos no gráficos.

gksudofunciona bien para ejecutar programas gráficos y no gráficos. Probablemente deberías usar eso.

Pero una alternativa, utilizando en lugar de polkit sudoy sólo trabajar para no gráficas programas, es pkexec.

Por ejemplo, si ejecuta pkexec touch /root/foo.txt, se le solicitará un cuadro de diálogo de autenticación gráfico, y si la autenticación se realiza correctamente, touch /root/foo.txtse ejecuta, crea ( o actualiza ) foo.txten la /rootcarpeta.

  • pkexecutilizará un cuadro de diálogo no gráfico, que requiere un terminal, en el caso de que no pueda crear un cuadro de diálogo gráfico. Pero es poco probable que esto suceda si lo está ejecutando a través de una instalación proporcionada por su entorno gráfico de escritorio o shell.
  • ¿Por qué pkexecfunciona solo para programas no gráficos? En realidad, también ejecuta programas gráficos, pero solo si polkit se ha configurado especialmente para permitirlo, lo que no suele hacerse. Vea man pkexec(y la versión anterior, con capturas de pantalla ), esta respuesta y esa respuesta para algunos detalles, si está interesado.

sudovs. Polkit (algunos detalles técnicos, solo si está interesado)

Un nuevo gksu/ gksudousará polkit en lugar de sudohacer su trabajo , aunque esta versión no ha sido ampliamente adoptada. Principalmente lo menciono para recomendar el READMEarchivo en su código fuente (escrito por Gustavo Noronha Silva), que explica las diferencias importantes entre sudoy polkit. Para citar brevemente:

PolicyKit resuelve el problema de una aplicación que necesita mayores privilegios al proporcionar facilidades para permitir que los usuarios se autentiquen y que las aplicaciones verifiquen la información de autenticación y autorización. La aplicación tiene que estar estructurada de manera que toda la operación privilegiada sea realizada por un (preferiblemente) pequeño servicio D-Bus, que está ordenado por el código no privilegiado. Todas las "acciones" que se realizan necesitan la autorización adecuada, que se maneja a través de Policykit.

4. ¿Por qué mantener gksu?

Por lo tanto, esto esencialmente hace que gksu sea innecesario, ya que las aplicaciones ya no necesitan ejecutarse como un usuario privilegiado, y la autenticación del usuario se realiza mediante el Agente de autenticación de PolicyKit. Pero las aplicaciones deben ser refactorizadas para adoptar esta nueva estructura, y hay algunos casos en los que lo que quiere es algo que ejecuta programas como root.

Estos problemas subyacen a la situación en la que creo que estás:

  • El Centro de software está diseñado para usar polkit para la elevación de privilegios, de modo que solo acciones específicas deben realizarse como root. Para esto, necesita polkit, que faltaba (o estaba roto) en su sistema.
  • Debido a que está diseñado para usar polkit, no hay un iniciador prefabricado para iniciar el Centro de software como root. polkit evita la necesidad de ejecutar herramientas de administración gráficas como root, la mayoría de las veces.
  • Pero a veces realmente necesitas ejecutar un programa gráfico como root. En ese caso, puede usar gksu/ gksudo.
    (... que eventualmente puede usar polkit detrás de escena, pero el que gksudoactualmente se encuentra en Ubuntu es el tradicional que usa sudo).
Eliah Kagan
fuente
1
Hola Eliah, sí, era un servidor sin GUI y solo estaba probando ubuntu GUI, ejecuté el comando sudo apt-get install ubuntu-desktop, no estoy seguro de si el kit de políticas está instalado. Intentará instalarlo de todos modos. Actualmente actualizando de 12.04 a 14.04.
Sean
Me he encontrado con una situación en la que tengo una aplicación GUI que quiero ejecutar normalmente (no root), pero solo necesita leer desde un puerto serie propiedad de root. La incapacidad de otorgarle a este programa un privilegio único es realmente molesto (en otras palabras, quiero un sistema de capacidad de objeto completo).
CMCDragonkai
3
Por favor, no gksufue desaprobado y se eliminó de Ubuntu 18.04
Nathan F.
5

Una forma conveniente es crear un .desktoparchivo dedicado o agregar sus comandos a uno existente, solicitando su contraseña a través de GUI (gksu). En el siguiente ejemplo, agrego el comando para ejecutar Gedit y Software Center con privilegios de sudo al iniciador de Gedit. Deberá haber gksuinstalado para utilizar esta configuración:sudo apt-get install gksu

  1. Copie Gedit .desktop file in/ usr / share / aplicaciones / to~ / .local / share / aplicaciones`:

    cp /usr/share/applications/gedit.desktop ~/.local/share/applications/gedit.desktop
    

    y ábralo para editarlo (arrástrelo a una ventana abierta de gedit)

  2. Busque la línea: Acciones = Ventana; Documento;

  3. Agregue los nombres de sus comandos a la línea (estos no son los nombres que verá en su interfaz, solo se usan para referencia interna en el archivo)

    Actions=Window;Document;gedit;Ubuntu Software Center;
    
  4. Agregue las secciones correspondientes al final del archivo:

    [Desktop Action gedit]
    Name=Gedit  (with gksu)
    Exec=gksudo gedit
    OnlyShowIn=Unity;
    
    [Desktop Action Ubuntu Software Center]
    Name=Ubuntu Software Center (with gksu)
    Exec=gksudo /usr/bin/software-center
    OnlyShowIn=Unity;
    
  5. Cierra el archivo y arrástralo al lanzador

Ahora puede ejecutar gedit y Software Center con privilegios de sudo:

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Jacob Vlijm
fuente
En efecto. No tengo objeción. La razón por la que comenté sobre USC es que una parte importante de la pregunta es sobre cómo el OP puede hacer que su sistema creado a partir de la instalación de un servidor funcione como un sistema de escritorio Ubuntu normal con respecto a la autenticación gráfica para tareas administrativas. Mi respuesta se centra en eso y explica las generalidades de ejecutar programas como root gráficamente. Al hacerlo, escatima en la mecánica de gksu/ gksudo. ¡Entonces su respuesta es buena y necesaria! Solo espero que el OP también instale / repare polkit, ya que creo que eso hará que el sistema operativo funcione de la manera que quieran.
Eliah Kagan