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 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 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
                    
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
                    

los 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 que se enumeran a continuación.

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

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 de exactamente 777 en el directorio actual.

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

Como puede ver en el resultado anterior, file1 es el único que tiene permiso 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 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 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 archivos no tiene que ser escribible por tanto el dueño como el grupo ser emparejado; cualquiera servirá.

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 como tu (para el usuario), gramo (grupo), O (otros). También podemos usar la letra a para representar las tres categorías. Los permisos se pueden especificar usando letras r (leer), w (escribe), X (ejecutable).

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

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

Como ves en lo anterior example, file1 y file2 tener grupo escribe permiso. 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 escribir ambas cosas sus dueño y ellos grupo usa 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 escribir cualquiera sus dueño o su grupo correr:

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

O,

                      $ 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 el alternativas de páginas de manual para aprender más ejemplos simplificados de cualquier comando de Linux.

Related Posts