Trovare file dalla riga di comando in Linux è molto più semplice e veloce. Abbiamo già discusso su come trovare e ordinare i file in base alla data e all'ora di accesso e modifica . Oggi vedremo come trovare i file in base ai loro permessi nei sistemi operativi Linux e simili a Unix.
Ai fini di questa guida, creerò tre file:file1
, file2
e file3
con autorizzazioni 777
, 766
, 655
rispettivamente in una cartella denominata 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

Ora troviamo i file in base ai loro permessi.
Trova i file in base alle loro autorizzazioni
La sintassi tipica per trovare i file in base alle loro autorizzazioni è:
$ find -perm mode
La MODE
può essere sia con numerico o ottale permesso (come 777
, 666
, ... ecc) o autorizzazione simbolica (come u=x
, a=r+x
).
Possiamo specificare la MODE
in tre modi diversi, come elencato di seguito.
- Se specifichiamo la modalità senza alcun prefisso, troverà file di esatto autorizzazioni.
- Se utilizziamo
"-"
prefisso con mode, almeno i file dovrebbero avere il permesso dato, non il permesso esatto. - Se utilizziamo
"/"
prefisso, il proprietario, il gruppo o altro dovrebbe avere l'autorizzazione per il file.
Mi permetto di spiegare con alcuni esempi, così puoi capire meglio.
Innanzitutto, vedremo la ricerca di file in base alle autorizzazioni numeriche.
Trova i file in base ai loro permessi numerici (ottali)
Ora fammi eseguire il seguente comando:
$ find -perm 777
Questo comando troverà i file con il permesso di esattamente 777 nella directory corrente.

Come puoi vedere nell'output sopra, file1 è l'unico che ha l'autorizzazione 777 esatta .
Ora usiamo "-"
prefisso e guarda cosa succede.
$ find -perm -766

Come vedi, il comando sopra mostra due file. Abbiamo impostato 766
autorizzazione a file2
, ma questo comando mostra due file, perché? Perché qui abbiamo usato "-"
prefisso. Significa che questo comando troverà tutti i file in cui il proprietario del file ha i permessi di lettura/scrittura/esecuzione, i membri del gruppo di file hanno i permessi di lettura/scrittura e tutto il resto ha anche il permesso di lettura/scrittura. Nel nostro caso, file1
e file2
hanno soddisfatto questo criterio. In altre parole, i file non devono avere l'esatta autorizzazione 766. Verranno visualizzati tutti i file che rientrano in questa autorizzazione 766.
Successivamente, utilizzeremo "/"
prefisso e guarda cosa succede.
$ find -perm /222

Il comando precedente troverà i file scrivibili da qualcuno (il loro proprietario, il loro gruppo o chiunque altro). Ecco un altro esempio.
$ find -perm /220
Questo comando troverà i file che sono scrivibili dal loro proprietario o dal loro gruppo. Ciò significa che i file non devono essere scrivibili da sia il proprietario che il gruppo da abbinare; entrambi lo farà.
Ma se esegui lo stesso comando con "-"
prefisso, vedrai solo i file scrivibili sia dal proprietario che dal gruppo.
$ find -perm -220
Lo screenshot seguente ti mostrerà la differenza tra questi due prefissi.

Come ho già detto, possiamo anche usare la notazione simbolica per rappresentare i permessi dei file.
Trova i file in base ai loro permessi usando la notazione simbolica
Negli esempi seguenti, utilizziamo notazioni simboliche come u (per utente), g (gruppo), o (altri). Possiamo anche usare la lettera a rappresentare tutte e tre queste categorie. I permessi possono essere specificati usando le lettere r (leggi), w (scrivi), x (eseguibile).
Ad esempio, per trovare qualsiasi file con il gruppo scrivi permesso, esegui:
$ find -perm -g=w

Come puoi vedere nell'esempio sopra, file1
e file2
fai scrivere al gruppo autorizzazione. Tieni presente che puoi utilizzare sia "="
o "+"
operatori per la notazione simbolica. Ad esempio, i seguenti due comandi faranno la stessa cosa.
$ find -perm -g=w $ find -perm -g+w
Per trovare qualsiasi file scrivibile dal proprietario del file, eseguire:
$ find -perm -u=w
Per trovare qualsiasi file scrivibile da tutti (il proprietario del file, il gruppo e tutti gli altri), esegui:
$ find -perm -a=w
Per trovare file scrivibili da entrambi il loro proprietario e il loro gruppo , usa questo comando:
$ find -perm -g+w,u+w
Il comando sopra è equivalente a "find -perm -220"
comando.
Per trovare file scrivibili da uno il loro proprietario o il loro gruppo , esegui:
$ find -perm /u+w,g+w
Oppure,
$ find -perm /u=w,g=w
Questi due comandi fanno lo stesso lavoro di "find -perm /220"
comando.
Per maggiori dettagli, fare riferimento alle pagine man.
$ man find
Inoltre, controlla le alternative alle pagine man per apprendere esempi più semplificati di qualsiasi comando Linux.
Lettura correlata:
- Come trovare le directory ei file più grandi e più piccoli in Linux
- Come trovare il file più vecchio in un albero di directory in Linux
- Come trovare file più grandi o più piccoli di X in Linux