¿Cómo obtengo permisos para editar archivos de configuración del sistema?

47

Parece que no puedo editar y guardar archivos de configuración en el sistema raíz (por ejemplo:) /etc/dhcp/dhcpd.config; solo dice "permiso denegado" o la opción de guardar está bloqueada en el editor de texto.

Estoy bastante seguro de que soy un usuario root, pero ¿cómo me aseguro? Si soy un usuario root, ¿cómo soluciono esto?

Matthew Wilson
fuente

Respuestas:

42

¿Qué editor de texto estás usando? Si es un usuario root y conoce la contraseña, intente (en una terminal):

  • sudoedit /etc/dhcp/dhcpd.configsi está utilizando un editor basado en terminal tal como nanoo está enviando a un servidor.
  • gksudo <text editor here> /etc/dhcp/dhcpd.config si está utilizando un editor basado en GUI como gedit

En cualquier caso, primero deberá proporcionar su contraseña de root cuando se le solicite.

En Ubuntu 14.04 en adelante, gksudono está instalado por defecto. Tendrá que instalar el gksupaquete (ya sea desde el Centro de software o mediante sudo apt-get install gksu) para obtenerlo.

En Ubuntu 17.10, Wayland es predeterminado en lugar del servidor X tradicional, y ejecutar editores gráficos como root es difícil. Vea ¿Por qué gksu / gksudo o lanzar una aplicación gráfica con sudo no funcionan con Wayland? para detalles.

En Ubuntu 18.04, gksudono está disponible en los repositorios oficiales. Utilice en su sudo -H <text editor>lugar, o el admin://protocolo :

gedit admin:///etc/dhcp/dhcpd.config
Christopher Kyle Horton
fuente
15

Si no desea utilizar un terminal, puede invocar un programa GUI como root (este ejemplo es para Gedit):

  1. Presiona Alt+ F2para que aparezca el cuadro de diálogo Ejecutar.
  2. Escriba gksudoseguido del nombre ejecutable de su programa (que puede ser diferente del nombre que muestra la GUI). Por ejemplo:

    gksudo gedit
    
  3. Hit Enter.
Scott Cesantía
fuente
10

No puedo pensar en un caso en el que la raíz llegue permission denied.

En 12.04 puede hacerlo así: alt+ f2e ingrese gksudoen el cuadro que aparece así:

Diálogo F2

Obtiene un cuadro como este, ingrese gedity haga clic en ok:

Escriba gedit en Ejecutar diálogo

Haga clic en Open:

Abrir pestaña dentro de gedit

Simplemente busque el archivo:

abrir archivos de diálogo

Hecho

Advertencia: hay un superusuario / root por una razón. Es para que accidentalmente no ponga algo malo o fuera de estructura en algo importante por error. Debe tener mucho cuidado de que lo que edite como root sea el archivo correcto que quiere editar Y que su sintaxis sea perfecta. Si hay otras herramientas disponibles para editar, se recomienda usarlas. Por ejemplo, use el visudo comando de terminal en lugar de editar manualmente /etc/sudoers.

Algunos archivos que podrían estropearse son fáciles de recuperar. Otros son relativamente complicados o tienes que usar la consola de recuperación y muchas líneas de comando.

Sí, la línea de comando de la consola de recuperación parece un poco más aterradora que incluso esto . Sólo sé cuidadoso.

RobotHumanos
fuente
Es posible que deba actualizar esto para 13.04 y versiones posteriores. Algunas cosas relacionadas con gksu / gksudo han cambiado (aunque no estoy seguro si eso se aplica a su respuesta).
Seth
Tengo entendido que sudo ahora exporta mágicamente las variables de entorno DISPLAY y gksu / gksudo se han ido o se van. Aunque no lo he comprobado.
RobotHumans
rootpuede obtener el permiso denegado si el archivo se ha configurado como inmutable chattro, a veces, si el disco es de solo lectura.
Chai T. Rex
6

Puede probar si su shell actual se ejecuta como root de varias maneras diferentes

~/ > whoami
paul
~/ > sudo whoami
root
~/ > id
uid=1000(paul) gid=1000(paul) groups=1000(devs),4(adm),20(dialout),24(cdrom),…
~/ > sudo id
uid=0(root) gid=0(root) group=0(root)

Otras respuestas dan buenas formas de escalar a privilegios de root, por lo que no las repetiré. Suponiendo que usted es root y que aún no puede editar el archivo /etc/dhcp/dhcpd.config, entonces muy probablemente alguien o algún programa ha usado el chattrprograma para hacer que el archivo sea inmutable.

Desde la página de manual de chattr :

Un archivo con el atributo 'i' no se puede modificar: no se puede eliminar ni renombrar, no se puede crear ningún enlace a este archivo y no se pueden escribir datos en el archivo. Solo el superusuario o un proceso que posee la CAP_LINUX_IMMUTABLEcapacidad puede establecer o borrar este atributo.

Puedes averiguarlo usando lsattr

lsattr /etc/dhcp/dhcpd.config

Si de hecho es inmutable, puede desactivarlo así:

chattr -i /etc/dhcp/dhcpd.config
pbr
fuente
3

Si está utilizando Ubuntu 17.04 o superior, se recomienda utilizar el backend de administración de gvfs . Simplemente agregue admin://al frente de la ruta de archivo completa que desea abrir en una aplicación como el Editor de texto o las aplicaciones Archivos .

Por ejemplo, para cambiar la configuración de arranque, abra

admin:///etc/default/grub

Si está utilizando Ubuntu 17.10 con el Wayland predeterminado, sudoy gksucomo se menciona en la respuesta anterior, aquí no funcionará.

Jeremy Bicha
fuente
2

Use su editor de texto favorito

Puede usar sudo -eo su alias sudoeditcon su editor de texto favorito (¡gráfico!) A través de la VISUALvariable de entorno 1 :

VISUAL=gedit sudo -e /path/to/some-config-file.cfg

que es equivalente a

VISUAL=gedit sudoedit /path/to/some-config-file.cfg

Por supuesto, se puede utilizar cualquier otro editor que te gusta, por ejemplo leafpad, kateo subl.

Algunos editores ofrecen una opción de línea de comandos para iniciar siempre una nueva instancia, incluso si hay una en ejecución. Como sudoeditespera a que finalice el proceso del editor para aplicar los cambios al archivo editado, esto puede ser necesario si tiene otras instancias del mismo Editor ejecutándose:

  • Para uso de GEdit VISUAL='gedit -s'.
  • Para uso de Kate VISUAL='kate -n'.

Ventajas

  • No requiere aplicaciones adicionales y / o obsoletas.
  • No requiere cambios en la política de seguridad como pkexec(para lo cual necesitaría editar archivos ... como superusuario, exactamente lo que esta respuesta está tratando de resolver).
  • No requiere la ejecución de aplicaciones potencialmente inseguras con privilegios elevados.
  • Utiliza la configuración de la aplicación del usuario actual pero se mete con los permisos de acceso al archivo de configuración como sudo -Hetc.
  • No recurre a los datos de configuración de la aplicación de rootusuario del usuario que pueden o no verse y comportarse de manera aceptable.

Desventajas

  • Necesita aprender un nuevo comando corto.

1 EDITOR o SUDO_EDITORtambién funcionan pero tienen menos prioridad o están más especializados respectivamente. Consulte la página del manual para más detalles.

David Foerster
fuente
0

Para estar seguro, cp /etc/dhcp/dhcpd.config /$HOME/dhcpd.config.backup haga una copia de seguridad usando y ejecutegksu gedit /etc/dhcp/dhcpd.config

Reemplace geditcon el editor de su elección

recibirás un aviso como este

solicitud de contraseña

Ingrese su contraseña aquí.

Se abre una nueva ventana y puede editar su configuración allí.

En caso de que algo salga mal, puede restaurarlo desde su copia de seguridad en la carpeta de inicio.

Obtiene "permiso denegado" debido a cómo Linux maneja el permiso.

Cualquier cosa en la $HOMEcarpeta pertenece al usuario, mientras que casi cualquier otra cosa pertenece a la raíz.

El /etc/dhcp/dhcpd.confarchivo al que intenta acceder pertenece a la raíz, y la mayoría de los archivos /etc/pertenecen a la raíz de forma predeterminada por razones de seguridad.

Todavía puede editar este archivo elevando sus permisos.

Para hacer esto, tiene varias formas:

  • use suque significa cambiar de usuario. Sin ningún atributo, funciona como un comando para cambiar a la cuenta raíz, pero debe ingresar la contraseña del usuario al que está cambiando, y dado que la raíz no tiene una contraseña predeterminada en Ubuntu (deshabilita efectivamente la cuenta raíz) , esto no funcionará a menos que haya establecido una contraseña para root, lo que no se recomienda.

  • usando sudoque eleva su permiso para un solo comando. Esto generalmente se usa solo para aplicaciones de línea de comandos como editores de texto CLI como vim, nanoetc.

  • usando gksuque eleva su permiso para un solo comando, pero a diferencia de sudose usa para programas gráficos como editores de texto GUI como gedit. utiliza una solicitud gráfica para facilitar el ingreso de una contraseña.

Amith KK
fuente
0
sudo < editor > < filelocation >

p.ej:

sudo -H gedit etc/dhcp/dhcpd.config
usuario392272
fuente