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.
- Si especificamos el modo sin prefijos, encontrará archivos de exacta permisos.
- 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.
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