Cartella con SOLO permesso di scrittura è inutile ... giusto?


10

Avendo lavorato con Linux per anni e trovandomi con un po 'di tempo libero, ho deciso di rivisitare alcune basi. Quindi ho riletto le informazioni sulle autorizzazioni (senza controllare il codice sorgente) e i suoi casi speciali per le cartelle e ho trovato un nuovo (almeno per me ...) modo di pensare alle autorizzazioni delle cartelle (per un utente specifico / gruppo / altri): immagino una cartella come una tabella con due colonne, in questo modo:

filename | inode    
foo      | 111  
bar      | 222 

L' autorizzazione di lettura significa che è possibile leggere (ed elencare) la colonna di sinistra della tabella, l' autorizzazione di scrittura corrisponde all'aggiunta e alla rimozione di voci nella tabella e l' autorizzazione di esecuzione corrisponde alla possibilità di tradurre dal nome del file all'inode; cioè puoi accedere al contenuto della cartella.

Ho fatto alcuni esperimenti, e i risultati sono tutti coerenti con questa mia "visione del mondo", ma una conclusione sembra inevitabile: che una cartella con autorizzazioni d-w-------sia totalmente inutile. Elaborazione: non puoi elencarne il contenuto, non puoi leggere tutti i file che conosci esistono all'interno (perché non puoi tradurre i nomi in inode), non puoi rimuovere o rinominare o aggiungere file, perché di nuovo ciò implicherebbe la traduzione e non puoi nemmeno aggiungere hardlink (perché, suppongo, ciò significherebbe aggiungere un nome e un numero di inode, il che significa che potresti conoscere entrambi, che a sua volta, ancora una volta supponendo, viola lo scopo di annullare l'autorizzazione all'esecuzione) . E, naturalmente, se ci sono file all'interno di una di queste cartelle, allora non puoi nemmeno cancellare quella cartella, perché non puoi eliminare il suo contenuto.

Quindi ... vorrei fare due domande:

  1. Questa mia analogia è corretta o è un grosso errore?
  2. Indipendentemente dalla risposta precedente, c'è qualche situazione in cui è appropriata avere una cartella con le autorizzazioni descritte?

3
Può darsi che non tutte le combinazioni siano utili. Ad esempio, in inglese abbiamo parole, queste parole sono composte da lettere, non tutte le combinazioni formano parole valide. es. aoeuidhtns
ctrl-alt-delor

In questo modo non potresti, ad esempio, creare un file? Si richiede allo spazio e all'inode del filesystem e dopo aver scritto nome e inode nella tabella delle directory. Dovresti avere solo il problema di avere 2 file con lo stesso nome ma inode diversi nella stessa directory ...
Hastur

@Hastur: L'ho pensato anch'io, ma dopo mkdir foo ; chmod 200 foo ; touch foo/barlo capisco touch: cannot touch ‘foo/bar’: Permission denied. Questo succede anche se foo / bar esiste già. Sto testando in bash (Arch Linux).
wnnorth

Colpa mia, stavo pensando che stavi riscrivendo dal codice sorgente il sistema ... non possiamo avere due file con lo stesso nome nella stessa directory quindi è logico che è vietato dare la possibilità di crearlo.
Hastur,

Sì, è inutile. La risoluzione dell'inode richiede anche "x" e "r", quindi nelle directory anche un singolo "rw" è inutile.
Peter - Ripristina Monica l'

Risposte:


3

La tua comprensione è praticamente corretta. Un modo migliore di pensare al permesso di esecuzione è che ti permette di fare cose con un nome di file o directory nella directory (oltre a leggere semplicemente il nome stesso). La maggior parte di queste cose comporta la traduzione del nome in un inode, ma include anche la creazione di nuovi nomi e la rimozione di nomi esistenti.

Il permesso di scrivere nella directory senza eseguirlo è quindi abbastanza inutile, dal momento che non c'è nulla che puoi effettivamente scrivere se non riesci ad accedere ai file al suo interno.


1
  1. Questa mia analogia è corretta o è un grosso errore?

Penso che sia corretto, è necessario il permesso di wx per poter scrivere in una cartella.

  1. Indipendentemente dalla risposta precedente, c'è qualche situazione in cui è appropriata avere una cartella con le autorizzazioni descritte?

È possibile che sia presente un processo che scrive le informazioni in una cartella e che ne viene consumata da un'altra, ma è necessario impedire allo scrittore di leggere altre informazioni archiviate in quel luogo.

La situazione descritta in precedenza è utile nelle unità automatiche di controllo della velocità. Queste unità devono passare attraverso un processo di verifica in cui l'ufficiale statale deve ridurre al minimo le possibilità di adulterazione. Alcune unità di controllo automatico della velocità dispongono di una scheda di memoria SD esterna in cui il sistema memorizza i registri delle violazioni. Ma potrebbe anche archiviare un file di configurazione "magico" che modifica illegalmente il comportamento dell'unità verificata. Quindi il processo che scrive il registro delle violazioni non deve essere in grado di leggere nulla dalla scheda di memoria SD.

Ecco un esempio, prima con solo scrittura, e poi come farlo funzionare con WX:

Montare un dispositivo

root@leon:/media# mount -o umask=527,uid=enforcer,gid=ftp /dev/sdb1 /media/pen/
root@leon:/media# ls /media/pen/ -la
total 44
d-w-r-x--- 10 enforcer ftp  4096 Dec 31  1969 .
drwxr-xr-x  8 root     root 4096 Oct 17 16:14 ..

quindi con user enforcer prova a scrivere un nuovo file

enforcer@leon:~$ touch /media/pen/hola
touch: cannot touch ‘/media/pen/hola’: Permission denied

smontare e rimontare con wx

root@leon:/media# umount /dev/sdb1
root@leon:/media# mount -o umask=427,uid=enforcer,gid=ftp /dev/sdb1 /media/pen/
root@leon:/home/jjorge# ls /media/pen/ -la
total 44
d-wxr-x--- 10 enforcer wim  4096 Dec 31  1969 .
drwxr-xr-x  8 root     root 4096 Oct 17 16:14 ..

riprova

enforcer@leon:~$ touch /media/pen/hola
enforcer@leon:~$ ls /media/pen/
ls: cannot open directory /media/pen/: Permission denied
enforcer@leon:~$ cat /media/pen/hola
cat: /media/pen/hola: Permission denied

ftp@leon:/home/jjorge$ ls /media/pen/ -la
total 44
d-wxr-x--- 10 enforcer ftp  4096 Oct 20 10:20 .
drwxr-xr-x  8 root     root 4096 Oct 17 16:14 ..
--wxr-x---  1 enforcer wim     0 Oct 20 10:20 hola

Con questa configurazione ora puoi scrivere

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.