Acceso de escritura sin acceso de lectura

15

¿Es posible que un usuario tenga acceso de escritura a un archivo y no pueda leerlo? ¿Como es posible?

Intenté los siguientes comandos:

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$

Como puede ver aquí, tengo acceso de escritura pero no de lectura en este archivo. como puede ser esto posible? ¿Se considera esto como un error? Si no, ¿en qué situación sería útil?

Dimitri
fuente

Respuestas:

18

No es un error, es una característica TM (Además, solo es una consecuencia del enfoque universal de Unix para los permisos).

Además del comportamiento similar a Dropbox en el caso de los directorios (como lo describe BillThor), el acceso de solo escritura es necesario para algunos archivos especiales (pseudo-) en /procy /sys. Dichos archivos se utilizan para establecer algunas propiedades del controlador o del núcleo o desencadenar una acción del sistema. No puede leerlos, porque se usan solo para la señalización unidireccional, solo puede hacer eco de algunos textos / datos. Para encontrar dichos archivos, puede usar

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

Tenga en cuenta que, dado que estos archivos se utilizan para la configuración avanzada del sistema (potencialmente peligrosa), solo roottiene acceso de escritura (en la mayoría de los casos).

rozcietrzewiacz
fuente
21

La razón principal para permitir el acceso de escritura sin acceso de lectura es que simplifica la administración de permisos, tanto dentro del núcleo como en los programas de usuario. Hay dos permisos, uno para leer y otro para escribir, y se administran de forma independiente. Esto no es un error ya que el comportamiento documentado coincide con el comportamiento real y no hay una buena razón para requerir un comportamiento diferente.

Tener permisos de escritura sin permisos de lectura no tiene mucho sentido para los archivos normales. Tiene sentido para varios archivos especiales.

  • Algunos sistemas permiten archivos de solo agregado. Esto es útil para archivos de registro, por ejemplo. Puede tener sentido permitir que muchos usuarios creen entradas de registro, pero no permitirles borrar o sobrescribir las entradas existentes (por lo tanto: permiso de escritura, pero atributo de solo agregar), ni permitirles leer las entradas de otros (por lo tanto: no permiso de lectura).
  • Se puede permitir que un programa escriba en una canalización con nombre sin que se le permita leer de él.
  • Algunos dispositivos son de solo escritura. Por ejemplo, un dispositivo de salida de sonido conectado a un altavoz pero sin micrófono debe tener permiso de escritura pero no permiso de lectura.
  • Existen varios sistemas de archivos especiales en los que leer o escribir en un archivo tiene un efecto inmediato en lugar de recuperar o agregar datos al almacenamiento. Por ejemplo, en Linux, hay varios archivos debajo /procy /sysque permiten a los programas de espacio de usuario enviar comandos al kernel escribiendo en un archivo en particular. Si ese comando no proporciona ningún comentario, el archivo especial se hace de solo escritura.
Gilles 'SO- deja de ser malvado'
fuente
2

No, esto no es un error. Sin embargo, no veo que se aplique comúnmente a los archivos.

La mayoría de las veces he visto acceso de solo escritura en directorios de Dropbox. Los usuarios pueden agregar archivos al directorio, pero no pueden ver qué archivos existen.

Para un archivo de texto normal, solo el acceso de escritura sería apropiado para el acceso de tipo dropbox.

Establecer el acceso de solo escritura para usted no sería terriblemente útil, pero no permitirlo complicaría el código de permisos.

EDITAR: no es probable que los archivos de Dropbox sean útiles. Sin embargo, puede ser útil para registros que no sean de raíz, ya que dificultaría la sobrescritura de las entradas de registro. Si puede leer el archivo, es mucho más fácil identificar dónde escribir una entrada de registro de reemplazo. Sin embargo, no conozco a nadie que establezca sus registros de esta manera. Es común utilizar el registro remoto para evitar la modificación local de las entradas de registro.

Establecer reglas sobre las combinaciones de permisos permitidas podría llevar a evitar permisos útiles imprevistos. Muchas combinaciones tienen más sentido a nivel de grupo o mundial que el nivel de propietario. Cualquier intento de impedir el acceso por parte del propietario puede ser anulado fácilmente. Sin embargo, pueden ser útiles para forzar un segundo sobrio.

BillThor
fuente
Un "archivo dropbox" en realidad tendría poco sentido. Solo podría usarse para escribir algunos datos e incluso si se hiciera legible en algún momento, su contenido no mostraría ningún rastro real de lo que le estaba sucediendo, porque podría haberse borrado o eliminado previamente.
rozcietrzewiacz