Strumenti per sviluppatori · Calcolatore Chmod
Il modello di autorizzazione Unix: dal chmod degli anni '70 ai bit della modalità POSIX
· Sfondo
chmod unix controllo degli accessi
Il modelloowner/group/others è sopravvissuto per decenni con pochissime modifiche. Questo post traccia da dove proviene, cosa ha standardizzato POSIX e perché è ancora adatto alla maggior parte dei lavori.
Un progetto degli anni '70 nella tua distribuzione del 2020: ogni contenitore e runner CI parla ancora rwx ed è utile sapere perché
Le distribuzioni attuali presentano ancora modalità come 0644 e stringhe simboliche come rw-r--r--, ma questo repository non è un archivio storico. La sua prova è la rappresentazione implementata: dodici bit, conversione deterministica e convalida dell'input ottale e simbolico. Date, inventori, brevetti e rivendicazioni su ogni sistema derivato da Unix richiedono fonti non fornite qui.
Il calcolatore offre quindi una visione al presente di un modello di autorizzazione compatto. Un numero intero guida il proprietario, il gruppo e altri controlli oltre a setuid, setgid e sticky. L'output può essere controllato in forma ottale, simbolica e matriciale. L’accordo dimostra una conversione coerente, non l’origine, l’universalità o l’applicazione del modello.
Nelle distribuzioni attuali viene visualizzata una notazione di lunga durata, ma questo repository non è un'origine della cronologia
Nove bit ordinari formano tre classi uguali. Il proprietario, il gruppo e gli altri ricevono ciascuno posizioni di lettura, scrittura ed esecuzione con pesi 4, 2 e 1. La calcolatrice mantiene quell'ordine ovunque: nelle tre cifre ottali finali, nella riga simbolica di nove caratteri, nella matrice delle caselle di controllo e nella descrizione in inglese semplice generata per un file o una directory.
Una modalità di 640 dimostra la struttura senza una dichiarazione di derivazione. Il proprietario 6 significa lettura e scrittura, il gruppo 4 significa lettura e altro 0 significa nessuna autorizzazione ordinaria, producendo rw-r-----. Come spiega l'articolo 501, questi sono flag calcolabili; l'identificazione del proprietario, del gruppo o del processo effettivo rimane fuori dalla conversione.
Il modello implementato ha nove bit ordinari in tre classi
Setuid è implementato come maschera 4000. Su un file normale, il renderer inserisce s nella posizione di esecuzione del proprietario quando sono presenti sia setuid che esecuzione del proprietario. Se setuid è presente senza l'esecuzione del proprietario, inserisce invece S lì, preservando l'importante differenza tra un bit speciale e il bit di esecuzione ordinario sotto di esso.
La descrizione del file spiega la minuscola come esecuzione con l'identità del proprietario del file e contrassegna la combinazione maiuscola come se non avesse nulla da eseguire. Tali affermazioni descrivono l'output di questa implementazione. Il repository non fornisce alcuna documentazione sui brevetti o la storia principale, quindi questa sezione non attribuisce il meccanismo né la data della sua introduzione.
viene implementato il comportamento setuid; la storia dei brevetti non è fonte
Le spiegazioni delle directory utilizzano lo stesso valore numerico ma verbi diversi per i bit ordinari. Leggi le voci degli elenchi, scrivi le copertine creando, rinomina ed elimina le voci ed esegui le copertine entrando nella directory e raggiungendo i contenuti nominati. L'implementazione descrive anche setgid su una directory come se facesse sì che i file appena creati ereditino il gruppo di quella directory.
Sticky è rappresentato da 1000 e occupa l'altra posizione di esecuzione come t o T. Per una directory, lo strumento descrive l'eliminazione limitata per le voci condivise. Queste sono le semantiche implementate presentate dalla calcolatrice; non viene stabilita alcuna cronologia dei rami o discendenza tra sistemi e nessun filesystem attivo viene interrogato per confermare il comportamento locale.
Il comportamento dei bit speciali della directory viene descritto senza un'attestazione di derivazione
La fonte nomina direttamente ogni maschera: 0400, 0200 e 0100 per il proprietario; 0040, 0020 e 0010 per il gruppo; 0004, 0002 e 0001 per altro. Setuid, setgid e sticky aggiungono 4000, 2000 e 1000. La conversione è un test bit e una combinazione bit a bit piuttosto che un appello a uno standard esterno.
Le regole di input sono altrettanto concrete. Octal accetta da una a quattro cifre da 0 a 7, con forme iniziali facoltative 0 o stile 0o. L'input simbolico accetta nove posizioni o dieci con un carattere di tipo file riconosciuto. Il repository non stabilisce che ogni implementazione o standard accetti esattamente la stessa grammatica superficiale.
Vengono verificate le maschere di bit con nome e la semantica di conversione; le affermazioni sugli standard universali non lo sono
Il modello compatto ha limiti deliberati. Fornisce una classe proprietaria, una classe gruppo e un'altra classe, ma nessuna voce per utente denominato, voce per gruppo denominato, maschera ACL o ACL predefinita. Inoltre non ha alcuna capacità impostata. Questi meccanismi non possono essere dedotti da una stringa rwx apparentemente ordinaria o da una conversione ottale riuscita.
La generazione dei comandi non espande il modello. Emette un argomento ottale o clausole esplicite u=, g= e o=, aggiungendo u+s, g+s o +t quando richiesto. Il risultato rimane testo visualizzato. Una revisione responsabile raccoglie separatamente eventuali ACL, capacità, proprietà e prove di applicazione prima di trattare la modalità come un account di controllo degli accessi completo.
Gli ACL e le funzionalità si trovano al di fuori del modello di modalità implementato
Questo set di origini non contiene confronti supportati con Windows, VMS, Piano 9 o altre cronologie delle autorizzazioni del sistema operativo. Omettere queste narrazioni è più accurato che presentare i contrasti ricordati come fatti. Il calcolatore dimostra solo la rappresentazione della modalità che implementa e i suoi test possono stabilire il comportamento di conversione piuttosto che l'evoluzione di sistemi non correlati.
La stessa cautela si applica al linguaggio di compatibilità ampia. Un carattere iniziale riconosciuto di tipo file può essere analizzato prima delle nove posizioni di autorizzazione, ma ciò non dimostra la formattazione universale ls. Utilizza l'output come lettura precisa della notazione accettata da questo strumento, quindi consulta la documentazione autorevole della piattaforma per conoscere il comportamento oltre questi limiti supportati dal codice sorgente.
Altre cronologie dei permessi del sistema operativo vengono omesse senza fonti
Ciò che sopravvive all’esame accurato qui è la compattezza del modello implementato. Dodici bit con nome coprono tre classi di permessi ordinari e tre flag speciali, mentre le viste ottale e simbolica espongono lo stesso intero in forme diverse. Le cifre non valide o le lettere simboliche fuori posto vengono rifiutate anziché riparate silenziosamente, rendendo visibili gli errori durante la conversione.
Questo è sufficiente per un takeaway pratico senza una lezione di storia. Decodifica la modalità, ispeziona ciascuna classe e nota se s, S, t o T sostituisce una posizione di esecuzione. Quindi fermati dove si fermano le prove: il calcolatore spiega la rappresentazione e il testo generato, mentre la proprietà, la politica, il comportamento del filesystem e la provenienza storica richiedono altre fonti.