Accesso in scrittura senza accesso in lettura


15

È possibile per un utente avere un accesso in scrittura a un file e non essere in grado di leggerlo? Come è possibile?

Ho provato i seguenti comandi:

debianbox@debian:~/posix/io$ touch filetest
debianbox@debian:~/posix/io$ ls -l filetest
-rw-r--r-- 1 debianbox debianbox 0 14 oct.  03:10 filetest

debianbox@debian:~/posix/io$ echo "Hello World" > filetest
debianbox@debian:~/posix/io$ cat filetest
Hello World

debianbox@debian:~/posix/io$ chmod u-r filetest
debianbox@debian:~/posix/io$ cat filetest
cat: filetest: Permission forbidden

debianbox@debian:~/posix/io$

Come puoi vedere qui, ho accesso in scrittura ma non in lettura a questo file. Come può essere possibile? Questo è considerato un bug? In caso contrario, in quale situazione sarebbe utile?

Risposte:


18

Non è un bug, è una funzione TM (Inoltre, è solo una conseguenza dell'approccio universale unix alle autorizzazioni).

Oltre al comportamento simile a una casella personale in caso di directory (come descritto da BillThor), è necessario l'accesso in sola scrittura per alcuni file speciali (pseudo-) in /proce /sys. Tali file vengono utilizzati per impostare alcune proprietà del driver o del kernel o attivare un'azione di sistema. Non puoi leggerli, perché sono usati solo per la segnalazione unidirezionale - puoi solo far loro eco con del testo / dati. Per trovare tali file, è possibile utilizzare

find /proc/[^0-9]* /sys -perm /222 ! -perm /444

Si noti che, poiché questi file vengono utilizzati per la configurazione di sistema avanzata (potenzialmente pericolosa), rootha accesso solo in scrittura (nella maggior parte dei casi).


21

Il motivo principale per consentire l'accesso in scrittura senza accesso in lettura è che semplifica la gestione delle autorizzazioni, sia all'interno del kernel che nei programmi utente. Esistono due autorizzazioni, una per la lettura e una per la scrittura e sono gestite in modo indipendente. Non si tratta di un bug poiché il comportamento documentato coincide con il comportamento effettivo e non vi è alcuna buona ragione per richiedere un comportamento diverso.

Avere autorizzazioni di scrittura senza autorizzazioni di lettura non ha molto senso per i file normali. Ha senso per vari file speciali.

  • Alcuni sistemi consentono file di sola aggiunta. Ciò è utile per i file di registro, ad esempio. Può avere senso consentire a molti utenti di creare voci di registro, ma non consentire loro di cancellare o sovrascrivere voci esistenti (quindi: permesso di scrittura, ma attributo di sola aggiunta), né consentire loro di leggere le voci di altri (quindi: no permesso di lettura).
  • Un programma può essere autorizzato a scrivere in una pipe denominata senza che sia possibile leggerlo.
  • Alcuni dispositivi sono di sola scrittura. Ad esempio, un dispositivo di uscita audio collegato a un altoparlante ma nessun microfono dovrebbe avere un'autorizzazione di scrittura ma nessuna autorizzazione di lettura.
  • Esistono vari file system speciali in cui la lettura o la scrittura su un file ha un effetto immediato invece di recuperare o aggiungere dati alla memoria. Ad esempio, sotto Linux, ci sono vari file sotto /proce /sysche consentono ai programmi di spazio utente di inviare comandi al kernel scrivendo in un determinato file. Se quel comando non fornisce alcun feedback, il file speciale viene creato in sola scrittura.

2

No, questo non è un bug. Tuttavia, non lo vedo comunemente applicato ai file.

Più spesso ho visto l'accesso in sola scrittura nelle directory di Dropbox. Gli utenti possono aggiungere file alla directory, ma non possono vedere quali file esistono.

Per un normale file di testo, solo l'accesso in scrittura sarebbe appropriato per l'accesso di tipo dropbox.

L'impostazione dell'accesso in sola scrittura per te non sarebbe terribilmente utile, ma non permetterlo complicherebbe il codice delle autorizzazioni.

EDIT: i file Dropbox non sono probabilmente utili. Tuttavia, potrebbe essere utile per i registri non root poiché renderebbe più difficile sovrascrivere le voci del registro. Se riesci a leggere il file, è molto più facile identificare dove scrivere una voce di registro sostitutiva. Tuttavia, non conosco nessuno che configuri i loro log in questo modo. È comune utilizzare la registrazione remota per impedire la modifica locale delle voci di registro.

L'impostazione di regole sulle quali sono consentite combinazioni di autorizzazioni, potrebbe portare a prevenire autorizzazioni utili impreviste. Molte combinazioni hanno più senso a livello di gruppo o mondo che a livello di proprietario. Qualsiasi tentativo di impedire l'accesso da parte del proprietario può essere facilmente ignorato. Tuttavia, possono essere utili per forzare un secondo sobrio.


Un "file dropbox" avrebbe effettivamente poco senso. Poteva essere usato solo per scrivere alcuni dati e anche se fosse stato reso leggibile ad un certo punto, il suo contenuto non avrebbe mostrato alcuna traccia reale di ciò che gli stava accadendo, perché avrebbe potuto essere precedentemente cancellato o rimosso.
rozcietrzewiacz,
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.