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
,file2
yfile3
con permisos777
,766
,655
respectivamente 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
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
losMODE
puede ser connuméricoooctalespermiso (como777
,666
…etc) permiso simbólico (comou=x
,a=r+x
).
Podemos especificar elMODE
de tres maneras diferentes que se enumeran a continuación.
- Si especificamos el modo sin ningún prefijo, encontrará archivos deexactopermisos
- si usamos
"-"
prefijo con modo, al menos los archivos deben tener el permiso dado, no el permiso exacto. - 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.

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

Como puede ver, el comando anterior muestra dos archivos. hemos establecido766
permiso 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,file1
yfile2
han 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

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.

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

Como ves en lo anterior example,file1
yfile2
tener 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.