¿Cómo puedo resolver este error que obtengo cuando confirmo cambios en un repositorio SVN desde el terminal de Ubuntu?

12

Cuando confirmo cambios en un repositorio SVN, siempre me encuentro con el siguiente problema en el terminal en Ubuntu:

Error reading /home/ssylee/.nano_history: Permission denied

¿Alguna idea de cómo resolverlo?

estancamiento
fuente
Como puede ver, hay muchas ideas sobre cómo resolverlo, pero depende de por qué exactamente está experimentando el problema en primer lugar.
David Z
Para reproducir: sudo rm -f ~/.nano_history(elimine el archivo), sudo nano somefile(edite algunos archivos como root), ^K sometext(busque texto), ^X(salga), nano somefile(edite algunos archivos como desee). Verá un error al leer /home/ssylee/.nano_history: permiso denegado . nano crea .nano_history para almacenar su historial de búsqueda. El archivo pertenece a root si se crea durante una sudo nanosesión.
Iain Samuel McLean Élder

Respuestas:

28

Esto generalmente es causado por la ejecución sudo nano [file]. Esto ejecuta el proceso nano como root, pero queda $HOMEestablecido en el directorio de inicio del usuario normal, por lo que si nano crea algún archivo (incluido el archivo .nano_history), será propiedad de root y se colocará en su directorio de inicio.

Puede verificar esto ejecutando:

ls -l /home/ssylee/.nano_history

Si lsinforma que el archivo es propiedad deroot , puede estar razonablemente seguro de que esta fue la causa. Si es así, la situación se puede reparar ejecutando:

sudo chown $USER: ~/.nano_history

o para deletrear ese comando:

sudo chown ssylee: /home/ssylee/.nano_history

Un mejor hábito para entrar es usar sudoeditosudo -e lugar de sudo nano. Esto ejecuta el $EDITORprograma en una copia del archivo que se está editando, y luego reemplaza atómicamente el archivo original cuando sale el editor (lo cual es muy útil al editar archivos del sistema).

De manera predeterminada, esto puede iniciarse vi, pero puede solucionarlo temporalmente invocando de esta manera:

EDITOR=nano sudoedit [filename]

Puede configurar permanentemente $EDITORen su .bashrc, o colocando

EDITOR=nano

en /etc/environment.

Fuego supresor
fuente
44
chown $USER:es una forma más corta de aplicar el grupo primario.
Tobu
1
@ Tobu, gracias! No sabía sobre ese truco. He actualizado la respuesta para reflejar eso.
Suppressingfire
1

Lo más fácil es eliminar el archivo en cuestión. La siguiente forma más fácil es hacerla legible con chmod/ chown. Lo siguiente más fácil es usar un editor diferente.

Ignacio Vazquez-Abrams
fuente
1

Yo siempre uso esto:
sudo chown -R username:username /home/username

Resuelve el problema cuando los permisos están en mal estado.

apache
fuente
1

Prefiero hacer un

ls -la /home/ssylee/.nano_history

primero, para ver los permisos actuales. Esto podría ayudarlo a descubrir por qué se equivocaron en primer lugar. Si ssylee es el propietario de este archivo, ¿tal vez tiene una umask predeterminada rota?

vtest
fuente
1

Simplemente cambie los permisos del .nano_historyarchivo de la siguiente manera:

sudo chown youruser:yourgroup /home/<username>/.nano_history

¡HECHO! El mensaje se ha ido! =) Realmente es así de simple.

Metafaniel
fuente
0

La corrección requiere editar el archivo de configuración nano / etc / nanorc y eliminar /home//.nano_history.

Primero comente el parámetro set historylog de nanorc con este comando: sudo nano / etc / nanorc

#set historylog

Esto deshabilitará el archivo ~ / .nano_history utilizado para guardar y leer cadenas de búsqueda / reemplazo.

Esto todavía deja el archivo .nano_history en su directorio de usuario. Elimine este archivo de la siguiente manera:

sudo rm .nano_history

¡Eso es!

Fuentes

abr4xas
fuente
Esto deshabilitará por completo el historial en nano, probablemente no sea algo que los usuarios quieran hacer ...
Mxx