GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo encontrar archivos según sus permisos en Linux

Encontrar archivos desde la línea de comandos en Linux es mucho más fácil y rápido. Ya discutimos cómo buscar y ordenar archivos según la fecha y hora de acceso y modificación . Hoy veremos cómo encontrar archivos según sus permisos en sistemas operativos Linux y similares a Unix.

A los efectos de esta guía, voy a crear tres archivos, a saber, file1 , file2 y file3 con permisos 777 , 766 , 655 respectivamente en una carpeta llamada ostechnix .

$ mkdir ostechnix && cd ostechnix/
$ install -b -m 777 /dev/null file1
$ install -b -m 766 /dev/null file2
$ install -b -m 655 /dev/null file3

Ahora busquemos los archivos según sus permisos.

Buscar archivos basados ​​en sus permisos

La sintaxis típica para buscar archivos en función de sus permisos es:

$ find -perm mode

El MODE puede ser con numérico o octales permiso (como 777 , 666 , ... etc) o permiso simbólico (como u=x , a=r+x ).

Podemos especificar el MODE de tres maneras diferentes, como se indica a continuación.

  1. Si especificamos el modo sin prefijos, encontrará archivos de exacta permisos.
  2. Si usamos "-" prefijo con modo, al menos los archivos deben tener el permiso dado, no el permiso exacto.
  3. Si usamos "/" prefijo, ya sea el propietario, el grupo u otro debe tener permiso para el archivo.

Permíteme explicarte con algunos ejemplos, para que puedas entender mejor.

Primero, veremos cómo encontrar archivos basados ​​en permisos numéricos.

Buscar archivos basados ​​en sus permisos numéricos (octales)

Ahora déjame ejecutar el siguiente comando:

$ find -perm 777

Este comando encontrará los archivos con permiso de exactamente 777 en el directorio actual.

Como puede ver en el resultado anterior, el archivo 1 es el único que tiene permiso 777 exacto .

Ahora, usemos "-" prefijo y ver qué pasa.

$ find -perm -766

Como puede ver, el comando anterior muestra dos archivos. Hemos establecido 766 permiso para file2 , pero este comando muestra dos archivos, ¿por qué? Porque aquí hemos usado "-" prefijo. Significa que este comando encontrará todos los archivos en los que el propietario del archivo tiene permisos de lectura/escritura/ejecución, los miembros del grupo de archivos tienen permisos de lectura/escritura y todo lo demás también tiene permisos de lectura/escritura. En nuestro caso, file1 y file2 han cumplido con este criterio. En otras palabras, los archivos no necesitan tener el permiso 766 exacto. Mostrará cualquier archivo que esté bajo este permiso 766.

A continuación, usaremos "/" prefijo y ver qué pasa.

$ find -perm /222

El comando anterior encontrará archivos en los que alguien puede escribir (ya sea su propietario, su grupo o cualquier otra persona). Aquí hay otro ejemplo.

$ find -perm /220

Este comando encontrará archivos en los que su propietario o su grupo puedan escribir. Eso significa que los archivos no tienen que ser escribibles por tanto el propietario como el grupo ser emparejado; cualquiera lo haré.

Pero si ejecuta el mismo comando con "-" prefijo, solo verá los archivos en los que tanto el propietario como el grupo pueden escribir.

$ find -perm -220

La siguiente captura de pantalla le mostrará la diferencia entre estos dos prefijos.

Como ya dije, también podemos usar la notación simbólica para representar los permisos del archivo.

Buscar archivos basados ​​en sus permisos usando la notación simbólica

En los siguientes ejemplos, usamos notaciones simbólicas como u (para usuario), g (grupo), o (otros). También podemos usar la letra a para representar las tres categorías. Los permisos se pueden especificar usando las letras r (leer), w (escribir), x (ejecutable).

Por ejemplo, para encontrar cualquier archivo con el grupo escribir permiso, ejecute:

$ find -perm -g=w

Como puede ver en el ejemplo anterior, file1 y file2 tener grupo escribir permiso. Tenga en cuenta que puede utilizar "=" o "+" Operadores de notación simbólica. Por ejemplo, los siguientes dos comandos harán lo mismo.

$ find -perm -g=w
$ find -perm -g+w

Para encontrar cualquier archivo en el que el propietario del archivo pueda escribir, ejecute:

$ find -perm -u=w

Para encontrar cualquier archivo en el que todos puedan escribir (el propietario del archivo, el grupo y todos los demás), ejecute:

$ find -perm -a=w

Para buscar archivos en los que ambos puedan escribir su propietario y su grupo , usa este comando:

$ find -perm -g+w,u+w

El comando anterior es equivalente a "find -perm -220" comando.

Para buscar archivos en los que cualquiera pueda escribir su propietario o su grupo , ejecuta:

$ find -perm /u+w,g+w

O,

$ find -perm /u=w,g=w

Estos dos comandos hacen el mismo trabajo que "find -perm /220" comando.

Para obtener más detalles, consulte las páginas man.

$ man find

Además, consulte las alternativas de páginas man para aprender más ejemplos simplificados de cualquier comando de Linux.

Lectura relacionada:

  • Cómo encontrar los directorios y archivos más grandes y más pequeños en Linux
  • Cómo encontrar el archivo más antiguo en un árbol de directorios en Linux
  • Cómo encontrar archivos más grandes o más pequeños que el tamaño X en Linux

Linux
  1. Cómo encontrar y ordenar archivos según la fecha y hora de modificación en Linux

  2. Cómo encontrar archivos modificados recientes o de hoy en Linux

  3. Cómo encontrar archivos con permisos SUID y SGID en Linux

  4. Cómo encontrar archivos con el comando fd en Linux

  5. Copiar archivos según la fecha de modificación en Linux

Cómo encontrar archivos en Linux

Cómo contar archivos en el directorio en Linux

Permisos de Linux:cómo encontrar los permisos de un archivo

Cómo encontrar archivos basados ​​en la marca de tiempo en Linux

Cómo encontrar archivos con el comando fd en Linux

Cómo encontrar carpetas en Linux