2010-10-01 28 views
6

Recentemente ho deciso di provare alcuni script di bash e come esercizio divertente ho deciso di creare uno script per aprire un file giornaliero in modo che io possa scrivere le note ogni volta che lo script è correre.Bash: autorizzazione negata quando si tenta di aprire un file

ha funzionato bene fino a quando mi sono collegato fuori e torna al sistema più tardi, quando ho ricevuto un errore

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

Code

potrei sbagliarmi, ma questo certamente non sembra come qualcosa che non dovrebbe richiedere permessi extra, vero?

Editor è impostata su permessi nano

di file vengono -rw-rw-r--

le autorizzazioni di script sono -rwxr-xr-x

+1

A cosa è impostato $ EDITOR? Come sono le autorizzazioni sul file? Inoltre, è meglio includere il codice nella domanda stessa (in un blocco di codice) in modo che la domanda archivi meglio e non diventi priva di significato una volta che il pastebin scompare. – zigdon

+0

** tutto ** richiede autorizzazioni. Non ci sono permessi "extra". Devi fare un 'ls -l' o' ls -ld' per vedere quali permessi hanno i file. –

+0

È necessario aggiornare per includere il codice per la completezza della domanda. L'ID pastbin non è più valido. – Chris

risposta

6

La mia ipotesi è che nel

$EDITOR $DAILY_FILENAME 

$EDITOR è nullo, quindi sta cercando di eseguire $DAILY_FILENAME che non eseguibile. Probabilmente durante il test hai impostato EDITOR manualmente, ma non lo hai aggiunto al tuo file .bashrc (o qualsiasi altra cosa).

Utilizzare l'opzione -x per dimostrarlo.

+0

Sì, penso di non aver impostato in modo permanente la variabile dell'editor, l'ho solo impostato per quella sessione. Grazie – Michi

7

Controllare l'autorizzazione sul file con

ls -l /path/to/your/file 

si dovrebbe vedere qualcosa come

-rw-r--r-- 

r medio leggibile, w scrivibile e x eseguibile.

il primo set è per l'utente, il secondo gruppo di tre è per il gruppo e il terzo set è per chiunque.

quindi nel mio esempio, il file che ho mostrato è di lettura/scrittura per me e letto solo per il mio gruppo e per qualsiasi altro utente.

Utilizzare il comando chmod per modificare le autorizzazioni.

chmod 744 file 

renderà il file in lettura/scrittura/exec per voi, e appena letto per l'utente/mondo.

0

Se dovessi indovinare, suggerirei che la variabile di ambiente $EDITOR non è definita per qualche motivo. Sembra che il tuo script stia tentando di eseguire il file delle note - in quanto non è eseguibile si ottiene il messaggio di errore inutile.

Problemi correlati