Quali sono le autorizzazioni corrette per / tmp? Ho involontariamente reso pubblico tutto ricorsivamente


79

Ho abusato sudo.

Ho creato una directory temporanea di durata davvero breve che volevo condividere tra alcuni utenti per alcune ore ... e ho chiamato questa directory /some/path/tmp

Purtroppo ho lanciato sudo chown 777 -R /tmpinvece di sudo chown 777 -R tmp, quindi il mio /tmpfile è ora completamente pubblico.

Uso il comune /tmpabbastanza spesso (ogni giorno, quasi ogni ora) personalmente per file di vita breve, script, molti script.

È un problema di sicurezza ora che è completamente impostato su pubblico? Dovrei ripristinarlo su impostazioni più sicure o come le impostazioni predefinite comuni per una distribuzione Debian o Ubuntu - (non so quali fossero)? Quali sono le autorizzazioni corrette per /tmp?


Attenzione, ho dimenticato qualcosa di importante nella mia risposta iniziale: il socket X11 deve essere accessibile pubblicamente, altrimenti non sarai in grado di avviare nuove applicazioni GUI. Ho aggiornato la mia risposta.
Gilles 'SO- smetti di essere malvagio'

Era chowno chmod?
Melebio,

@Melebio Sono un po 'perplesso dalla tua domanda: non ho menzionato chmod. chown (come ch - own), riguarda la proprietà dei file, di cui l'utente possiede un file. chmod (come ch - modifify) riguarda di più chi può eseguire, scrivere all'interno o leggere il contenuto di un file.
Stephane Rolland,

2
@StephaneRolland Sì, questo è ciò che mi ha confuso. È possibile utilizzare ciò chown 777che imposta la proprietà di un file per l'utente con l'ID 777. Tuttavia, tutte le risposte, compresa quella accettata, funzionano chmod. Poiché tutti impostano l'autorizzazione sullo stesso valore per tutti gli utenti (proprietario, gruppo, altri), la maggior parte degli effetti della proprietà del file diventano irrilevanti. Tuttavia, sudo chown 777 -R /tmpdovrebbe essere il comando corretto per correggere il risultato sudo chown root -R /tmp.
Melebio

Risposte:


117

Le impostazioni normali per /tmpsono 1777, che lsmostra come drwxrwxrwt. Cioè: completamente aperto, tranne per il fatto che solo il proprietario di un file può rimuoverlo (questo è ciò che questo tbit in più significa per una directory).

Il problema con una /tmpmodalità 777 è che un altro utente potrebbe rimuovere un file che hai creato e sostituire il contenuto di sua scelta.

Se il tuo /tmpè un filesystem tmpfs, un riavvio ripristinerà tutto. Altrimenti, corri chmod 1777 /tmp.

Inoltre, molti file /tmpdevono essere privati. Tuttavia, almeno una directory deve essere critica in tutto il mondo:, /tmp/.X11-unixe possibilmente altre directory simili ( /tmp/.XIM-unix, ecc.). Il seguente comando dovrebbe principalmente sistemare le cose:

chmod 1777 /tmp
find /tmp -mindepth 1 -name '.*-unix' -exec chmod 1777 {} + -prune -o -exec chmod go-rwx {} +

Vale a dire che tutti i file e le directory sono privati ​​(rimuovete tutte le autorizzazioni per il gruppo e altri), ma rendete i socket X11 accessibili a tutti. Il controllo degli accessi su questi socket è imposto dal server, non dalle autorizzazioni dei file. Potrebbero esserci altri socket che devono essere disponibili al pubblico. Corri find /tmp -type s -user 0per scoprire socket di proprietà di root che potresti dover rendere accessibili al mondo. Potrebbero esserci socket di proprietà di altri utenti del sistema (ad es. Per comunicare con un bus di sistema); esplora con find /tmp -type s ! -user $UID(dove si $UIDtrova il tuo ID utente).


1
potresti spiegare di più il secondo chmod?
Bartlomiej Lewandowski l'

@BartlomiejLewandowski go-rwx: nessuna autorizzazione per il gruppo e altri. Questo imposta le autorizzazioni su rwx------(tranne che i file che sono stati creati dal momento che chmodpotrebbero finire con meno autorizzazioni, ad es rw-------.). In altre parole, i file saranno accessibili solo dal loro proprietario. /tmp/.[!.]*consiste nell'includere file dot, che comunemente esistono in /tmp.
Gilles 'SO- smetti di essere malvagio'

@BartlomiejLewandowski: chmod -go-rwx: imposta i diritti "rwx" su Proprietario e Gruppo. r = read, w = write, x = execute (per file) o enter / traverse (per directory). 777 = rwxrwxrwx (la parte destra può essere vista come: "set 'r' set 'w' set 'x', set 'r' set 'w' set 'x', set 'r' set 'w' set 'x '", che in binario è rappresentato come" 111111111 "(1 per impostare, 0 per non impostare). E" 111111111 "in binario è rappresentato in ottale come" 777 "(ottale = gruppi di 3 bit, ogni gruppo con valore da 0 a 7) se "rwxr-xr--" sarebbe "111101100" che in ottale è "754"
Olivier Dulac

2
+ T viene definito bit appiccicoso. Questo è ciò che impedisce a chiunque diverso dal proprietario di essere in grado di rimuovere i file, anche se le autorizzazioni sono 777 altrimenti. Il problema era originariamente quello di far sì che il kernel lasciasse i programmi in memoria quando uscivano, in modo da non doverli recuperare dal disco alla prossima esecuzione. Stiamo parlando dei giorni PDP11 ....
kurtm,

1
@GabrielFair Ho sostituito il comando usando i caratteri jolly con uno usando find che non si imbatte in quel problema.
Gilles 'SO- smetti di essere malvagio' il

10

/tmpe /var/tmpdovrebbe avere diritti di lettura, scrittura ed esecuzione per tutti; ma di solito aggiungeresti anche il sticky-bit ( o+t), per impedire agli utenti di rimuovere file / directory appartenenti ad altri utenti. Quindi chmod a=rwx,o+t /tmpdovrebbe funzionare.

Per quanto riguarda la modifica delle autorizzazioni in modo ricorsivo ... Fintanto che il proprietario / gruppo rimane come per i file e le directory, non dovrebbe essere un grosso problema. Ma potresti forse cambiare l'autorizzazione di tutto ciò che è sotto /tmp(non / tmp stesso) per garantire la privacy degli utenti, rimuovendo i rxdiritti degli altri e forse del gruppo.

Trovare è un buon modo per farlo. Come root, fai:

cd /tmp
find . -type f -exec chmod u=rw,go= {} \;   # (or u=rw,g=r,o= {})
find . -type d -exec chmod u=rwx,go= {} \;  # (or u=rwx,g=rx,o= {})

Su un tipico sistema desktop, è meglio renderlo /tmp/.X11-unix/*leggibile anche in tutto il mondo o non sarai più in grado di avviare le applicazioni X.
Gilles 'SO- smetti di essere malvagio'

chmod a=rwX,o+t /tmp -Rdovrebbe fare la findmagia.
discesa

3
[root@Niflheim tmp]# ls -alF .
total 1632
drwxrwxrwt 15 root root    4096 Apr  7 04:24 ./
drwxr-xr-x 28 root root    4096 Apr  2 21:02 ../
[root@Niflheim tmp]# stat -c '%A %a %n' .
drwxrwxrwt 1777 .

Da una macchina CentOS 5.9.

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.