104.7 Lezione1
Certificazione: |
LPIC-1 |
---|---|
Versione: |
5.0 |
Argomento: |
104 Dispositivi, Il Filesystem Linux, Filesystem Hierarchy Standard |
Obiettivo: |
104.7 Trovare i file di sistema e collocarli nella posizione corretta |
Lezione: |
1 di 1 |
Introduzione
Le distribuzioni Linux sono disponibili in tutte le forme e dimensioni, ma una cosa che quasi tutte condividono è che seguono il Filesystem Hierarchy Standard (FHS), che definisce un “layout standard” per il filesystem, rendendo l’interoperabilità e l’amministrazione del sistema molto più semplice . In questa lezione imparerai di più su questo standard e su come trovare file su un sistema Linux.
Il Filesystem Hierarchy Standard
Il Filesystem Hierarchy Standard (FHS) è uno sforzo della Linux Foundation per standardizzare la struttura delle directory e il contenuto delle stesse sui sistemi Linux. La conformità allo standard non è obbligatoria, ma la maggior parte delle distribuzioni la segue.
Note
|
Chi è interessato ai dettagli dell’organizzazione del filesystem può leggere la specifica FHS 3.0, disponibile in più formati su: http://refspecs.linuxfoundation.org/fhs.shtml |
Secondo lo standard, la struttura delle directory di base è la seguente:
/
-
Questa è la directory principale, la directory più in alto nella gerarchia. Ogni altra directory si trova al suo interno. Un filesystem è spesso paragonato a un “albero”, quindi questa sarebbe “la radice” / “il tronco” a cui sono collegati tutti i rami.
/bin
-
Binari essenziali, disponibili per tutti gli utenti.
/boot
-
File necessari al processo di avvio, incluso il disco RAM iniziale (initrd) e il kernel Linux stesso.
/dev
-
File di dispositivo. Questi possono essere dispositivi fisici collegati al sistema (per esempio,
/dev/sda
sarebbe il primo disco SCSI o SATA) o dispositivi virtuali forniti dal kernel. /etc
-
File di configurazione specifici dell’host. I programmi possono creare sottodirectory in
/etc
per memorizzare più file di configurazione, se necessario. /home
-
Ogni utente nel sistema ha una directory “home” per memorizzare i file e le preferenze personali, e la maggior parte di essi si trova sotto
/home
. Di solito, la directory home è la stessa del nome utente, quindi l’utente John avrebbe la sua directory in/home/john
. Le eccezioni sono il superutente (root), che ha una directory separata (/root
) e alcuni utenti di sistema. /lib
-
Librerie condivise necessarie per avviare il sistema operativo e per eseguire i binari in
/bin
e/sbin
. /media
-
I supporti rimovibili montabili dall’utente, come unità flash, lettori di CD e DVD-ROM, dischi floppy, schede di memoria e dischi esterni sono montati qui dentro.
/mnt
-
Punto di montaggio per filesystem montati temporaneamente.
/opt
-
Pacchetti software applicativi.
/root
-
Directory home per il superutente (root).
/run
-
Dati variabili di runtime.
/sbin
-
Binari di sistema.
/srv
-
Dati forniti dal sistema. Per esempio, le pagine servite da un server web potrebbero essere archiviate in
/srv/www
. /tmp
-
File temporanei.
/usr
-
Dati utente di sola lettura, inclusi i dati necessari per alcune utilità e applicazioni secondarie.
/proc
-
File system virtuale contenente dati relativi ai processi in esecuzione.
/var
-
Dati variabili scritti durante il funzionamento del sistema, inclusi coda di stampa, dati di registro, caselle di posta, file temporanei, cache del browser, ecc.
Tieni presente che alcune di queste directory, come /etc
, /usr
e /var
, contengono un’intera gerarchia di sottodirectory.
I File Temporanei
I file temporanei sono file utilizzati dai programmi per archiviare dati necessari solo per un breve periodo. Questi possono essere dati di processi in esecuzione, registri di arresto anomalo, file temporanei da un salvataggio automatico, file intermedi utilizzati durante una conversione di file, file di cache e simili.
Posizione dei File Temporanei
La versione 3.0 del Filesystem Hierarchy Standard (FHS) definisce le posizioni standard per i file temporanei sui sistemi Linux. Ogni posizione ha uno scopo e un comportamento diverso ed è consigliato agli sviluppatori di seguire le convenzioni impostate dall’FHS quando creano dati temporanei su disco.
/tmp
-
Secondo l’FHS i programmi non dovrebbero presumere che i file scritti qui all’interno verranno conservati tra un’esecuzione e l’altra di un programma. La raccomandazione è che questa directory venga ripulita (tutti i file cancellati) durante l’avvio del sistema, sebbene ciò non sia obbligatorio.
/var/tmp
-
Un’altra posizione per i file temporanei, ma questa non dovrebbe essere ripulita durante l’avvio del sistema. I file archiviati qui all’interno, di solito, persistono tra i riavvii.
/run
-
Questa directory contiene i dati delle variabili di runtime utilizzati dai processi in esecuzione, come i file di identificazione del processo (
.pid
). I programmi che richiedono più di un file di runtime possono creare sottodirectory qui dentro. Questa posizione deve essere ripulita durante l’avvio del sistema. Lo scopo di questa directory una volta era svolto da/var/run
, e ancora oggi, su alcuni sistemi,/var/run
potrebbe essere un collegamento simbolico a/run
.
Notare che nulla impedisce a un programma di creare file temporanei altrove nel sistema, ma è buona norma rispettare le convenzioni impostate dall’FHS.
Ricerca di File
Per cercare file su un sistema Linux, puoi usare il comando find
. Questo è uno strumento molto potente, ricco di opzioni e parametri che possono adattarne il comportamento e modificare l’output esattamente alle tue esigenze.
Per iniziare, find
ha bisogno di due argomenti: un punto di partenza e che cosa cercare. Per esempio, per cercare tutti i file nella directory corrente (e nelle sottodirectory) il cui nome termina con .jpg
puoi usare:
$ find . -name '*.jpg' ./pixel_3a_seethrough_1.jpg ./Mate3.jpg ./Expert.jpg ./Pentaro.jpg ./Mate1.jpg ./Mate2.jpg ./Sala.jpg ./Hotbit.jpg
Questo corrisponderà a qualsiasi file i cui ultimi quattro caratteri del nome siano “.jpg`, indipendentemente da ciò che viene prima, poiché *
è un carattere jolly che indica "`qualsiasi cosa”. Tuttavia, guarda cosa succede se un altro *
viene aggiunto alla fine della maschera di ricerca (pattern):
$ find . -name '*.jpg*' ./pixel_3a_seethrough_1.jpg ./Pentaro.jpg.zip ./Mate3.jpg ./Expert.jpg ./Pentaro.jpg ./Mate1.jpg ./Mate2.jpg ./Sala.jpg ./Hotbit.jpg
Il file Pentaro.jpg.zip
(evidenziato sopra) non era incluso nell’elenco precedente, perché anche se contiene .jpg
nel nome, non corrispondeva al pattern perché c’erano caratteri extra dopo di esso. Il nuovo modello significa “qualsiasi cosa .jpg
qualunque cosa”, quindi corrisponde.
Tip
|
Tieni presente che il parametro |
L’espressione * .jpg
deve essere inserita tra virgolette singole, per evitare che la shell interpreti il pattern stesso. Prova senza virgolette e guarda cosa succede.
Per impostazione predefinita, find
inizierà dal punto di partenza e scenderà attraverso tutte le sottodirectory (e le sottodirectory di quelle sottodirectory) trovate. Puoi limitare questo comportamento con i parametri -maxdepth N
, dove N
è il numero massimo di livelli.
Per cercare solo nella directory corrente, dovresti usare -maxdepth 1
. Supponiamo di avere la seguente struttura di directory:
directory ├── clients.txt ├── partners.txt -> clients.txt └── somedir ├── anotherdir └── clients.txt
Per cercare all’interno di somedir
, dovresti usare -maxdepth 2
(la directory corrente +1 livello in basso). Per cercare all’interno di anotherdir
, sarebbe necessario -maxdepth 3
(la directory corrente +2 livelli in basso). Il parametro -mindepth N
funziona in modo opposto cercando solo nelle directory almeno i livelli inferiori di N
.
Il parametro -mount
può essere usato per evitare che find
scenda all’interno dei filesystem montati. Puoi anche limitare la ricerca a specifici tipi di filesystem usando il parametro -fstype
. Quindi find /mnt -fstype exfat -iname "*report*"
cercherà solo all’interno dei filesystem exFAT montati sotto /mnt
.
Ricerca di Attributi
È possibile utilizzare i parametri seguenti per cercare file con attributi specifici, come quelli che siano scrivibili dall’utente, abbiano un insieme specifico di autorizzazioni o abbiano una certa dimensione:
-user USERNAME
-
Corrisponde ai file di proprietà dell’utente
USERNAME
. -group GROUPNAME
-
Corrisponde ai file di proprietà del gruppo
GROUPNAME
. -readable
-
Corrisponde a file leggibili dall’utente corrente.
-writable
-
Corrisponde a file scrivibili dall’utente corrente.
-executable
-
Corrisponde ai file eseguibili dall’utente corrente. Nel caso delle directory, questo corrisponderà a qualsiasi directory a cui l’utente può accedere (autorizzazione
x
). -perm NNNN
-
Questo corrisponderà a tutti i file che hanno esattamente l’autorizzazione
NNNN
. Per esempio,-perm 0664
corrisponderà a qualsiasi file su cui l’utente e il gruppo possono leggere e scrivere e su cui altri possono leggere (orw-rw-r-
).
È possibile aggiungere un -
prima di NNNN
per verificare la presenza di file che hanno almeno l’autorizzazione specificata. Per esempio, -perm -644
corrisponderebbe a file che hanno almeno i permessi 644
(rw-r-r-
). Questo include un file con 664
(rw-rw-r-
) o anche 775
(rwxrwx-r-x
).
-empty
-
Corrisponde a file e directory vuote.
-size N
-
Corrisponde a qualsiasi file di dimensione
N
, doveN
di default è un numero di blocchi da 512 byte. Puoi aggiungere suffissi aN
per altre unità:Nc
conterà la dimensione in byte,Nk
in kibibyte (KiB, multipli di 1024 byte),NM
in mebibyte (MiB, multipli di 1024 * 1024) eNG
per i gibibyte (GiB, multipli di 1024 * 1024 * 1024).
Di nuovo, puoi aggiungere i prefissi +
o -
(qui significa più grande di e più piccolo di) per cercare dimensioni relative. Per esempio, -size -10M
corrisponderà a qualsiasi file di dimensioni inferiori a 10 MiB.
Per esempio, per cercare i file nella tua home directory che contengono il pattern insensibile al maiuscolo/minuscolo report
in qualsiasi parte del nome, hanno i permessi 0644
, sono stati acceduti 10 giorni fa e la cui dimensione è almeno 1 Mib, puoi usare:
$ find ~ -iname "*report*" -perm 0644 -atime 10 -size +1M
Ricerche Temporali
Oltre a cercare gli attributi, puoi anche eseguire ricerche temporali, trovando i file a cui è stato effettuato l’accesso, i cui attributi sono stati modificati o sono stati modificati durante un periodo di tempo specifico. I parametri sono:
-amin N
,-cmin N
,-mmin N
-
Per trovare file a cui è stato effettuato l’accesso, che hanno avuto attributi modificati o sono stati modificati (rispettivamente)
N
minuti fa. -atime N
,-ctime N
,-mtime N
-
Per trovare file a cui è stato effettuato l’accesso, a cui sono stati modificati gli attributi o che sono stati modificati
N*24
ore fa.
Per -cmin N
e -ctime N
, qualsiasi modifica di attributo causerà una corrispondenza, inclusa una modifica dei permessi, la lettura o la scrittura del file. Ciò rende questi parametri particolarmente potenti, poiché praticamente qualsiasi operazione che coinvolge il file attiverà una corrispondenza.
Il seguente esempio permette una corrispondenza a qualsiasi file nella directory corrente che è stato modificato meno di 24 ore fa ed è più grande di 100 MiB:
$ find . -mtime -1 -size +100M
Utilizzo di locate
e updatedb
locate
e updatedb
sono comandi che possono essere usati per trovare rapidamente un file che corrisponde a un dato modello su un sistema Linux. Ma a differenza di find
, locate
non cercherà il pattern nel filesystem: invece, lo cerca su un database costruito eseguendo il comando updatedb
. Ciò fornisce risultati molto rapidi, ma che potrebbero essere imprecisi a seconda dell’ultimo aggiornamento del database.
Il modo più semplice per usare locate
è semplicemente dargli un pattern da cercare. Per esempio, per trovare ogni immagine JPEG sul tuo sistema, dovresti usare locate jpg
. L’elenco dei risultati può essere piuttosto lungo, ma dovrebbe essere simile a questo:
$ locate jpg /home/carol/Downloads/Expert.jpg /home/carol/Downloads/Hotbit.jpg /home/carol/Downloads/Mate1.jpg /home/carol/Downloads/Mate2.jpg /home/carol/Downloads/Mate3.jpg /home/carol/Downloads/Pentaro.jpg /home/carol/Downloads/Sala.jpg /home/carol/Downloads/pixel_3a_seethrough_1.jpg /home/carol/Downloads/jpg_specs.doc
Quando viene richiesto il pattern jpg
, locate
mostrerà tutto ciò che contiene questo pattern, non importa cosa venga prima o dopo di esso. Puoi vedere un esempio di ciò nel file jpg_specs.doc
nell’elenco sopra: contiene il pattern, ma l’estensione non è jpg
.
Tip
|
Ricorda che con |
Per impostazione predefinita, il pattern fa distinzione tra maiuscole e minuscole. Ciò significa che i file contenenti .JPG
non verrebbero visualizzati poiché scritto in minuscolo. Per evitare ciò, passare il parametro -i
a locate
. Ripetendo il nostro esempio precedente:
$ locate -i .jpg /home/carol/Downloads/Expert.jpg /home/carol/Downloads/Hotbit.jpg /home/carol/Downloads/Mate1.jpg /home/carol/Downloads/Mate1_old.JPG /home/carol/Downloads/Mate2.jpg /home/carol/Downloads/Mate3.jpg /home/carol/Downloads/Pentaro.jpg /home/carol/Downloads/Sala.jpg /home/carol/Downloads/pixel_3a_seethrough_1.jpg
Si noti che il file Mate1_old.JPG
, in grassetto sopra, non era presente nell’elenco precedente.
Puoi passare più pattern a locate
, semplicemente separandoli con spazi. L’esempio seguente eseguirà una ricerca senza distinzione tra maiuscole e minuscole per tutti i file che corrispondono a zip
e jpg
:
$ locate -i zip jpg /home/carol/Downloads/Expert.jpg /home/carol/Downloads/Hotbit.jpg /home/carol/Downloads/Mate1.jpg /home/carol/Downloads/Mate1_old.JPG /home/carol/Downloads/Mate2.jpg /home/carol/Downloads/Mate3.jpg /home/carol/Downloads/OPENMSXPIHAT.zip /home/carol/Downloads/Pentaro.jpg /home/carol/Downloads/Sala.jpg /home/carol/Downloads/gbs-control-master.zip /home/carol/Downloads/lineage-16.0-20190711-MOD-quark.zip /home/carol/Downloads/pixel_3a_seethrough_1.jpg /home/carol/Downloads/jpg_specs.doc
Quando si utilizzano più pattern, è possibile richiedere a locate
di mostrare solo i file che corrispondono a tutti i pattern di ricerca. Questo viene fatto con l’opzione -A
. Il seguente esempio mostrerebbe qualsiasi file che corrisponde al pattern .jpg
e al pattern .zip
:
$ locate -A .jpg .zip /home/carol/Downloads/Pentaro.jpg.zip
Se desideri contare il numero di file che corrispondono a un dato pattern invece di mostrare il loro percorso completo, puoi usare l’opzione -c
. Per esempio, per contare il numero di file .jpg
su un sistema:
$ locate -c .jpg 1174
Un problema con locate
è che mostra solo le voci presenti nel database generato da updatedb
(situato in /var/lib/mlocate.db
). Se il database è obsoleto, l’output potrebbe mostrare file che invece sono stati eliminati dall’ultima volta che è stato aggiornato. Un modo per evitare questo è aggiungere il parametro -e
, che controllerà se il file esiste ancora prima di mostrarlo sull’output.
Ovviamente, questo non risolverà il problema dei file creati dopo l’ultimo aggiornamento del database non visualizzato. Per questo dovrai aggiornare il database con il comando updatedb
. Quanto tempo ci vorrà dipenderà dalla quantità di file nel disco.
Controllare il Comportamento di updatedb
Il comportamento di updatedb
può essere controllato dal file /etc/updatedb.conf
. Questo è un file di testo in cui ogni riga controlla una variabile. Le linee vuote e quelle che iniziano con il carattere #
(commenti) vengono ignorate.
PRUNEFS=
-
Qualsiasi tipo di filesystem indicato dopo questo parametro non verrà scansionato da
updatedb
. L’elenco dei tipi di filesystem dovrebbe essere separato da spazi e i tipi stessi non fanno distinzione tra maiuscole e minuscole, quindiNFS
enfs
saranno considerati allo stesso modo. PRUNENAMES=
-
Questo è un elenco separato da spazi di nomi di directory che non dovrebbero essere scansionati da
updatedb
. PRUNEPATHS=
-
Questa è una lista di percorsi che dovrebbero essere ignorati da
updatedb
. I nomi dei percorsi devono essere separati da spazi e specificati nello stesso modo in cui verrebbero visualizzati daupdatedb
(per esempio,/var/spool/media
) PRUNE_BIND_MOUNTS=
-
Questa è una semplice variabile
yes
ono
. Se impostato suyes
(le directory montate altrove con il comandomount --bind
) verranno ignorate.
Trovare Binari, Pagine di manuale e Codice Sorgente
which
è un comando molto utile che mostra il percorso completo di un eseguibile. Per esempio, se vuoi individuare l’eseguibile per bash
, potresti usare:
$ which bash /usr/bin/bash
Se viene aggiunta l’opzione -a
, il comando mostrerà tutti i nomi di percorso che corrispondono all’eseguibile. Osserva la differenza:
$ which mkfs.ext3 /usr/sbin/mkfs.ext3 $ which -a mkfs.ext3 /usr/sbin/mkfs.ext3 /sbin/mkfs.ext3
Tip
|
Per trovare quali directory sono nella variabile |
type
è un comando simile che mostrerà le informazioni su un binario, incluso dove si trova e il suo tipo. Usa semplicemente type
seguito dal nome del comando
$ type locate locate is /usr/bin/locate
L’opzione -a
funziona allo stesso modo di which
, mostrando tutti i nomi di percorso che corrispondono all’eseguibile. Così:
$ type -a locate locate is /usr/bin/locate locate is /bin/locate
E l’opzione -t
mostrerà il tipo di file del comando che può essere un alias
, una keyword
, una function
, un builtin
o un file
. Per esempio:
$ type -t locate file $ type -t ll alias $ type -t type type is a built-in shell command
Il comando whereis
è più versatile e oltre ai binari può anche essere usato per mostrare la posizione delle pagine man
o anche il codice sorgente di un programma (se disponibile nel tuo sistema). Basta digitare whereis
seguito dal nome del binario:
$ whereis locate locate: /usr/bin/locate /usr/share/man/man1/locate.1.gz
I risultati sopra includono binari (/usr/bin/locate
) e pagine di manuale compresse (/usr/share/man/man1/locate.1.gz
).
Puoi filtrare rapidamente i risultati usando le opzioni della riga di comando come -b
, che li limiterà solo ai binari, -m
, che li limiterà solo alle pagine man, o -s
, che li limiterà solo al codice sorgente. Ripetendo l’esempio sopra, otterrai:
$ whereis -b locate locate: /usr/bin/locate $ whereis -m locate locate: /usr/share/man/man1/locate.1.gz
Esercizi Guidati
-
Immagina che un programma debba creare un file temporaneo monouso che non sarà mai più necessario dopo la chiusura del programma. Quale sarebbe la directory corretta in cui creare questo file?
-
Qual è la directory temporanea che deve essere cancellata durante il processo di avvio?
-
Usando
find
, cerca solo nella directory corrente i file che sono scrivibili dall’utente, sono stati modificati negli ultimi 10 giorni e sono più grandi di 4 GiB. -
Usando
locate
, trova tutti i file che contengono sia i patternreport
cheupdated
,update
oupdating
nei loro nomi. -
Come puoi trovare dove è memorizzata la pagina di manuale di
ifconfig
? -
Quale variabile deve essere aggiunta a
/etc/updatedb.conf
per fare in modo cheupdatedb
ignori i filesystemntfs
? -
Un amministratore di sistema desidera montare un disco interno (
/dev/sdc1
). Secondo FHS, in quale directory dovrebbe essere montato questo disco?
Esercizi Esplorativi
-
Quando viene utilizzato
locate
, i risultati vengono estratti da un database generato daupdatedb
. Tuttavia, questo database può essere obsoleto, facendo sì chelocate
mostri file che non esistono più. Come puoi fare in modo chelocate
mostri solo i file esistenti sul suo output? -
Trova qualsiasi file nella directory corrente o nelle sottodirectory fino a 2 livelli inferiori, esclusi i filesystem montati, che contengono il pattern
Status
ostatute
nei loro nomi. -
Limitando la ricerca ai filesystem
ext4
, trova tutti i file all’interno di/mnt
che hanno almeno i permessi di esecuzione per il gruppo, sono leggibili per l’utente corrente e hanno avuto un attributo cambiato nelle ultime 2 ore. -
Trova i file vuoti che sono stati creati più di 30 giorni fa e sono almeno due livelli più in basso rispetto alla directory corrente.
-
Considera che gli utenti
carol
ejohn
fanno parte del gruppomkt
. Trova nella home directory dijohn
tutti i file che sono leggibili anche dacarol
.
Sommario
In questa lezione hai imparato l’organizzazione di base del filesystem su una macchina Linux, secondo FHS, e come trovare binari e file, sia per nome che per attributi. In questa lezione sono stati discussi i seguenti comandi:
find
-
Un comando versatile usato per trovare file e cartelle in base a una varietà di criteri di ricerca.
locate
-
Un’utilità che utilizza un database locale che contiene le posizioni per i file memorizzati localmente.
updatedb
-
Aggiorna il database locale utilizzato dal comando
locate
. which
-
Visualizza il percorso completo di un eseguibile.
whereis
-
Visualizza le posizioni delle pagine di manuale, dei binari e del codice sorgente sul sistema.
type
-
Visualizza la posizione di un binario e che tipo di applicazione è (come un programma installato, un programma Bash integrato e altro).
Risposte agli Esercizi Guidati
-
Immagina che un programma debba creare un file temporaneo monouso che non sarà mai più necessario dopo la chiusura del programma. Quale sarebbe la directory corretta in cui creare questo file?
Dato che non ci interessa il file dopo che il programma avrà terminato l’esecuzione, la directory corretta è
/tmp
. -
Qual è la directory temporanea che deve essere cancellata durante il processo di avvio?
La directory è
/run
o, su alcuni sistemi,/var/run
. -
Usando
find
, cerca solo nella directory corrente i file che sono scrivibili dall’utente, sono stati modificati negli ultimi 10 giorni e sono più grandi di 4 GiB.Per questo avrai bisogno dei parametri
-writable
,-mtime
e-size
:find . -writable -mtime -10 -size +4G
-
Usando
locate
, trova tutti i file che contengono sia i patternreport
cheupdated
,update
oupdating
nei loro nomi.Dal momento che
locate
deve corrispondere a tutti i pattern, usa l’opzione-A
:locate -A "report" "updat"
-
Come puoi trovare dove è memorizzata la pagina di manuale di
ifconfig
?Usa l’opzione
-m
perwhereis
:whereis -m ifconfig
-
Quale variabile deve essere aggiunta a
/etc/updatedb.conf
per fare in modo cheupdatedb
ignori i filesystemntfs
?La variabile è
PRUNEFS=
seguita dal tipo di filesystem:PRUNEFS=ntfs
-
Un amministratore di sistema desidera montare un disco interno (
/dev/sdc1
). Secondo FHS, in quale directory dovrebbe essere montato questo disco?In pratica, il disco può essere montato ovunque. Tuttavia, l’FHS raccomanda che i montaggi temporanei vengano eseguiti in
/ mnt
.
Risposte agli Esercizi Esplorativi
-
Quando viene utilizzato
locate
, i risultati vengono estratti da un database generato daupdatedb
. Tuttavia, questo database può essere obsoleto, facendo sì chelocate
mostri file che non esistono più. Come puoi fare in modo chelocate
mostri solo i file esistenti sul suo output?Aggiungi il parametro
-e
, come inlocate -e PATTERN
. -
Trova qualsiasi file nella directory corrente o nelle sottodirectory fino a 2 livelli inferiori, esclusi i filesystem montati, che contengono il pattern
Status
ostatute
nei loro nomi.Ricorda che per
-maxdepth
devi considerare anche la directory corrente, quindi vogliamo tre livelli (l’attuale più 2 livelli in basso):find . -maxdepth 3 -mount -iname "*statu*"
-
Limitando la ricerca ai filesystem
ext4
, trova tutti i file all’interno di/mnt
che hanno almeno i permessi di esecuzione per il gruppo, sono leggibili per l’utente corrente e hanno avuto un attributo cambiato nelle ultime 2 ore.Usa il parametro
-fstype
dimount
per limitare la ricerca a specifici tipi di filesystem. Un file leggibile dall’utente corrente avrebbe almeno4
nella prima cifra dei permessi, e un eseguibile dal gruppo avrebbe almeno1
nella seconda cifra. Dato che non ci interessano le autorizzazioni per gli altri, possiamo usare0
per la terza cifra. Usa-cmin N
per filtrare le modifiche recenti agli attributi, ricordando che N è specificato in minuti. Così:find /mnt -fstype ext4 -perm -410 -cmin -120
-
Trova i file vuoti che sono stati creati più di 30 giorni fa e sono almeno due livelli più in basso rispetto alla directory corrente.
Il parametro
-mindepth N
può essere usato per limitare la ricerca ad almenoN
livelli inferiori, ma ricorda che devi includere la directory corrente nel conteggio. Usa-empty
per verificare la presenza di file vuoti e-mtime N
per verificare l’ora di modifica. Così:find . -empty -mtime +30 -mindepth 3
-
Considera che gli utenti
carol
ejohn
fanno parte del gruppomkt
. Trova nella home directory dijohn
tutti i file che sono leggibili anche dacarol
.Considerando che sono membri dello stesso gruppo, abbiamo bisogno di almeno una
r
(4
) sui permessi del gruppo e non ci interessa nulla degli altri. Così:find /home/john -perm -040