GNU/Linux >> Tutoriales Linux >  >> Linux

¿Por qué es Rm -rf y no Rmdir -rf?

Siempre he tenido curiosidad por saber por qué el comando para borrar todo en un directorio es rm -rf .

¿Por qué no hay banderas para hacer lo mismo con rmdir? ?

¿No sería más intuitivo usar rmdir? para operaciones de directorio?

Respuesta aceptada:

En los primeros sistemas de archivos de Unix (al menos en los días de V7 alrededor de 1970), los directorios se implementaron como archivos especiales y solo la raíz podía usar el mknod(2) llamada al sistema que los creó y solo root podría unlink(2) un archivo especial de directorio.

Estas protecciones se implementaron para mantener la estructura del sistema de archivos consistente. Por ejemplo, si a un usuario se le permitiera escribir en un archivo especial de directorio, podría hacer que su directorio principal .. apuntar a sí mismo (específicamente su propio i-nodo). Esto crearía una referencia circular en el sistema de archivos que sería algo malo. Por supuesto, hay otras inconsistencias que uno podría hacer, este es solo un ejemplo claro.

La consistencia fue mantenida por programas de espacio de usuario como mkdir(1) y rmdir(1) que eran raíz de Set-UID para que pudieran realizar llamadas al sistema privilegiado en nombre de un usuario sin privilegios. Cuando se agregó la recursividad a rm(1) , el comando de eliminación se ejecutaría como el UID actual y luego llamaría a rmdir(1) únicamente para eliminar directorios vacíos. Este sigue siendo un método bastante estándar de elevación de permisos:no use más permisos de los que necesita.

Algún tiempo después mkdir(2) y rmdir(2) se agregaron como sus propias llamadas al sistema, pero la relación entre rm(1) y rmdir(1) queda.

Personalmente, encuentro un poco más satisfactorio rmdir junk y sé que lo peor que hice fue eliminar un directorio vacío.


Linux
  1. Hashing de contraseñas y por qué lo necesitamos

  2. Por qué obtienes cp:error de directorio omitido en Linux y cómo resolverlo

  3. ¿Por qué Cd no es un programa?

  4. Linux:¿por qué usamos Su y no solo Su?

  5. ¿Ssh y permisos de directorio de inicio?

¿Por qué una carpeta debe ser ejecutable?

¿Por qué se permite incluso el terrible 'rm -rf /'?

¿Por qué no funciona sftp rmdir?

¿Por qué usamos su - y no solo su?

¿Por qué no bloquear ICMP?

¿Por qué mi crontab no funciona y cómo puedo solucionarlo?