No, le autorizzazioni del file system vengono applicate dal sistema operativo.
Quando un programma vuole eliminare un file, chiama la funzione unlink () , che trasforma immediatamente il controllo sopra al kernel. Il kernel prima controlla se il file esiste e quindi controlla le autorizzazioni ad esso associate. Se l'utente ha il permesso di cancellare (che in genere significa permesso di scrittura sulla directory contenente il file), il kernel, utilizzando il driver del filesystem, eseguirà tutte le azioni necessarie per rimuovere il file dal disco. Fatto ciò, il controllo viene quindi restituito al programma dell'utente.
Questa distinzione tra le azioni eseguite direttamente dal tuo programma (in genere chiamate "user mode" o "user land") e le azioni eseguite dal kernel per conto dell'utente (in genere chiamate "modalità kernel") sono una caratteristica chiave di tutti i sistemi operativi, non solo di Linux, ed è la base di come vengono applicate le regole del kernel, tra cui separazione dei processi, separazione dei privilegi, segmentazione della memoria e tutto ciò che il kernel è responsabile della fornitura.
Qualsiasi difetto o scappatoia che consentirebbe a un programma di aggirare questa protezione sarebbe considerato una vulnerabilità escalation di privilegi e deve essere corretto per il sistema operativo per essere sicuro da usare. Questi sono sorprendentemente comuni, ma in genere vengono risolti rapidamente una volta scoperti.
Rispetto ai privilegi del filesystem, la cosa che impedisce di scrivere il proprio driver del filesystem per aggirare il driver del filesystem del kernel è il fatto che un utente non ha accesso diretto in lettura o scrittura al disco raw. Questi diritti sono controllati (ancora una volta) dalle autorizzazioni del filesystem.
Sui sistemi Linux e Unix, ci sono una serie di file speciali che rappresentano dispositivi fisici, in genere mantenuti nella directory /dev/
. Ad esempio, /dev/sda
rappresenta il primo disco SCSI o SATA su Linux. Su BSD (incluso OSX) è /dev/disk0
.
Leggere o scrivere questi file in realtà leggerà o scriverà direttamente sul disco, saltando il driver del filesystem, ma continuando a passare attraverso il kernel. Poiché questi file hanno le loro autorizzazioni impostate su di loro, gli stessi controlli vengono eseguiti dal kernel prima di consentire l'accesso al dispositivo, quindi la sicurezza rimane intatta.
Se dovessi modificare le autorizzazioni o la proprietà della voce in /dev/
per consentire agli utenti ordinari l'accesso diretto al disco, così facendo creerai una vulnerabilità di escalation dei privilegi (indovinato) .