Impossibile creare il file temporaneo per here-document: autorizzazione negata


11

[Nota: questa Q simile riguarda lo stesso messaggio di errore bash. E 'stato segnato un duplicato di questo altro Q . Ma poiché ho trovato una fonte molto diversa per questo errore, risponderò alla mia Q di seguito.]

Questa riga di script bash precedentemente funzionante

while ... do ... done <<< "$foo"

un giorno ha iniziato a produrre questo messaggio di errore:

impossibile creare il file temporaneo per il documento qui: autorizzazione negata


Nel mio caso è stato abilitato IMA ( ima_policy=appraise_tcbparametro kernel) con combinazione di /tmpnon essere tmpfs. Ma questo non è davvero un caso comune :).
pevik,

Risposte:


10

Avevo aggiunto umask 777prima della stringa qui. Dopo aver rimosso l'umask, l'errore è scomparso. Quindi lezione appresa: esiste un file temporaneo creato per una stringa here ( <<<), e questo è correlato a un documento here ( <<), e per farlo funzionare è necessario disporre di un'umask appropriata.



Colpisce anche zsh e mksh, non ksh93 né tcsh. Nemmeno dash, rc, es, né yash ma questo perché usano i pipe invece dei file temporanei.
Stéphane Chazelas,

Nel caso di ksh93 e tcsh, funziona perché aprono il file solo una volta in modalità lettura + scrittura, scrivono i dati e quindi ricominciano dall'inizio.
Stéphane Chazelas,

6

Nel mio caso ho modificato le /tmpautorizzazioni predefinite della directory (penso di aver cambiato per errore a 0777).

La soluzione era ripristinare l' /tmpautorizzazione predefinita , che è 1777 in ottale (1 = bit appiccicoso, 7 = R + W + X).

Quindi, in poche parole, sudo chmod -R 1777 /tmpdovrebbe risolvere il problema.


Vedo dove questo potrebbe davvero causare problemi. Sì, il bit appiccicoso è importante per / tmp.
Vista ellittica

2
Probabilmente non vuoi la -Rbandiera. Nessun motivo per modificare i file di tutti di seguito /tmpper essere eseguibili in lettura-scrittura-eseguibile da tutti. Alcuni di questi file sono sensibili alla sicurezza dei tuoi utenti.
keithpjolley

1

la mia esperienza personale con questo problema è stata con umaskla notazione binaria, proprio come @ eliptical-view. Suppongo che scrivendo:

umask 0644 

mi darebbe l'accesso in lettura e scrittura ai file che ho creato, cosa c'è che non va

Dopo aver cambiato l' umaskessere

umask 0022

l'errore è scomparso.

In realtà, la notazione binaria dovrebbe essere intesa come un complemento binario.

Quindi, nella umaskmaschera qui sotto quando si scrive 0per il proprietario del file, questo utente avrà accesso totale ai file che crea. Il valore 2indica che il secondo bit è mascherato, il che significa in questo caso, per impostazione predefinita agli altri utenti non sarà consentito scrivere nei file creati dal proprietario del file.


1
Grazie per la modifica e la correzione, @Paulo Tomé. In effetti, è usuale (e chiaro) usare la notazione ottale in umask, poiché proprio per i permessi dei file Posix sono coinvolti esattamente tre bit: per il proprietario, uno dei suoi gruppi e tutti gli altri.
Hilton Fernandes,

Prego. ;)
Paulo Tomé il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.