2010-10-01 40 views
6

Recientemente decidí intentar aprender algunas secuencias de comandos bash y, como ejercicio divertido, decidí crear una secuencia de comandos para abrir un archivo diario para que escribiera notas cuando el guión esté correr.Bash: Permiso denegado al intentar abrir un archivo

funcionó bien hasta que cerrado sesión y de nuevo en el sistema más tarde, cuando recibí un error

/usr/local/bin/notes: line 45: /home/MY_USERNAME/notes/2010-10-01:Permission denied

Code

puedo estar equivocado, pero esto ciertamente no parece como algo que no debería requerir permisos extra, ¿verdad?

Editor se establece en permisos nano

de archivo son -rw-rw-r--

permisos del script son -rwxr-xr-x

+1

¿Cuál es su $ EDITOR configurado? ¿Cómo son los permisos en el archivo? Además, es mejor incluir el código en la pregunta en sí (en un bloque de código) para que la pregunta se archive mejor, y no pierda su significado una vez que el pastebin se va. – zigdon

+0

** todo ** requiere permisos. No hay permisos "extra". Tienes que hacer un 'ls -l' o' ls -ld' para ver qué permisos tienen los archivos. –

+0

Debe actualizar para incluir el código para completar la pregunta. La ID de pastbin ya no es válida. – Chris

Respuesta

6

Mi suposición es que en

$EDITOR $DAILY_FILENAME 

$EDITOR es nula, por lo que está tratando de ejecutar $DAILY_FILENAME que no ejecutable. Probablemente, mientras realizaba la prueba, configuró EDITOR de forma manual, pero no lo agregó a su archivo .bashrc (o lo que sea).

Utilice la opción -x para probarlo.

+0

Sí, supongo que no establecí permanentemente la variable del editor, solo la tenía configurada para esa sesión. Gracias – Michi

7

verificación de los permisos en el archivo con

ls -l /path/to/your/file 

debería ver algo como

-rw-r--r-- 

r significa legible, w grabable y x ejecutable.

el primer conjunto es para su usuario, el segundo conjunto de tres es para su grupo, y el tercer conjunto es para cualquiera.

Por lo tanto, en mi ejemplo, el archivo que he mostrado es de lectura/escritura para mí y solo para mi grupo y para cualquier otro usuario.

Utilice el comando chmod para cambiar los permisos.

chmod 744 file 

hará que el archivo sea leído/escrito/ejecutado por usted, y solo lo lea para usuario/mundial.

0

Si tuviera que adivinar, sugeriría que la variable de entorno $EDITOR no está definida por algún motivo. Parece que su script está intentando ejecutar el archivo de notas, ya que no es ejecutable, recibe el mensaje de error inútil.

Cuestiones relacionadas