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ómobuscar y ordenar archivos según la fecha y hora de acceso y modificación. Hoy veremos cómo encontrar archivos en función de sus permisos en sistemas operativos Linux y similares a Unix.

A los efectos de esta guía, voy a crear tres archivos, a saberfile1,file2yfile3con permisos777,766,655respectivamente en una carpeta llamadaostechnix.

$ 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
Crear archivos con permisos específicos

Ahora busquemos los archivos según sus permisos.

Buscar archivos en función de sus permisos

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

$ find -perm mode

losMODEpuede ser connuméricoooctalespermiso (como777,666…etc) permiso simbólico (comou=x,a=r+x).

Podemos especificar elMODEde tres maneras diferentes que se enumeran a continuación.

  1. Si especificamos el modo sin ningún prefijo, encontrará archivos deexactopermisos
  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.

Encuentre archivos en función de sus permisos numéricos (octales)

Ahora déjame ejecutar el siguiente comando:

$ find -perm 777

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

Encuentre archivos basados ​​en permisos numéricosEncuentre archivos basados en permisos numéricos

Como puede ver en el resultado anterior, file1 es el único que tienepermiso exacto 777.

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

$ find -perm -766
Encuentre archivos basados ​​en permisos numéricos con Encuentre archivos basados en permisos numéricos con el prefijo “-“

Como puede ver, el comando anterior muestra dos archivos. hemos establecido766permiso parafile2, 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,file1yfile2han cumplido con este criterio. En otras palabras, los archivos no necesitan tener el permiso 766 exacto. Mostrará cualquier archivo que se encuentre bajo este permiso 766.

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

$ find -perm /222
Encuentre archivos basados ​​en permisos numéricos con Encuentre archivos basados en permisos numéricos con el prefijo “/”

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

$ find -perm /220

Este comando encontrará archivos en los que su propietario o su grupo puedan escribir. Eso significa que los archivosno tiene que ser escribibleportanto el dueño como el gruposer emparejado;cualquieraservirá.

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.

Encuentre archivos en función de sus permisos numéricos (octales)Encuentre archivos en función de sus permisos numéricos (octales)

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

Encuentre archivos según sus permisos usando notación simbólica

En los siguientes ejemplos, usamos notaciones simbólicas comotu(para el usuario),gramo(grupo),O(otros). También podemos usar la letraapara representar las tres categorías. Los permisos se pueden especificar usando letrasr(archivo),w(escribe),X(ejecutable).

Por ejemplo, para encontrar cualquier archivo con grupoescribepermiso, ejecute:

$ find -perm -g=w
Encuentre archivos según sus permisos usando notación simbólicaEncuentre archivos según sus permisos usando notación simbólica

Como ves en lo anterior example,file1yfile2tener grupoescribepermiso. Tenga en cuenta que puede utilizar cualquiera"="o"+"Operadores de notación simbólica. Para examplelos 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 se pueda escribirambas cosassusdueñoy ellosgrupousa este comando:

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

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

Para buscar archivos en los que se pueda escribircualquierasusdueñoacerca de songrupocorrer:

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

Oh,

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

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

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

$ man find

Además, verifique elalternativas de páginas de manualpara aprender más ejemplos simplificados de cualquier comando de Linux.