Strumenti per sviluppatori · Calcolatore Chmod
Come leggere i permessi ls -l e convertirli in modalità ottale
· Come funziona
chmod unix flusso di lavoro dello sviluppatore
La stringa di dieci caratteri all'inizio di ls -l è un tipo di file più nove bit di autorizzazione. Questo post mostra come decodificarlo e produrre la modalità ottale desiderata da chmod, comprese le lettere con bit speciali.
Un ticket con -rw-r-----+ incollato: devi sapere se dire all'utente di eseguire chmod 640 o qualcos'altro
Una stringa incollata come -rw-r-----+ contiene più di quanto accetta questo parser. Il nucleo riconosciuto è un corpo di autorizzazione di nove caratteri, facoltativamente preceduto da un carattere del tipo di file supportato. Il segno più finale rende l'input troppo lungo e viene rifiutato. La rimozione del marcatore esterno lascia -rw-r-----, che viene convertito in 640: lettura del gruppo proprietario/write, e nessuna autorizzazione per gli altri.
Tale conversione non decodifica ciò che rappresenta il segno più oltre l'avvertimento dell'articolo 501 secondo cui un elenco lungo potrebbe utilizzarlo per gli ACL. La calcolatrice non ha voci o maschere ACL. Inoltre, non controlla la macchina, il proprietario, il gruppo o il percorso del biglietto. La modalità 640 è quindi il valore di autorizzazione di base rappresentato dal core accettato, non una risposta completa sull'accesso effettivo.
Il primo carattere è il tipo: trattino, d, l, c, b, p e s, e perché non fa parte della modalità
Il primo carattere facoltativo viene trattato come un indicatore di tipo anziché come un bit di autorizzazione. Il parser riconosce -, d, l, b, c, p, s, D e ?. Quando uno appare prima di nove posizioni di autorizzazione valide, viene rimosso per motivi aritmetici. Il proprietario, il gruppo e le altre triple risultanti determinano da soli il valore ottale e le selezioni della matrice.
Questo comportamento è facile da verificare con input equivalenti. Sia rwxr-x--- che -rwxr-x--- producono 750 perché il trattino iniziale non contribuisce con alcun bit di modalità. Un indicatore di directory può precedere lo stesso corpo e comunque restituire lo stesso numero intero. Il selettore di destinazione controlla separatamente la dicitura esplicativa, quindi accettare un carattere di tipo non significa che il browser ha scoperto o aperto quell'oggetto.
Nove caratteri in tre gruppi: proprietario, gruppo, altri, sempre in ordine rwx, con un trattino per ogni bit disattivato
Le nove posizioni di autorizzazione formano tre triple fisse in proprietario, gruppo e altro ordine. All'interno di ogni tripla, leggi occupa la prima posizione, scrivi la seconda ed esegui la terza. Un trattino indica che il bit corrispondente è disattivato. La convalida specifica della posizione rifiuta una lettera fuori posto invece di indovinare, quindi una r in una posizione di scrittura non può diventare silenziosamente un'altra autorizzazione.
Ciascuna tripla accettata corrisponde a una cifra ottale in base ai pesi nell'articolo 501: leggere è 4, scrivere è 2 ed eseguire è 1. La matrice mostra gli stessi flag delle caselle di controllo e ricostruisce l'intero quando uno cambia. Le lettere speciali sono accettate solo nelle posizioni di esecuzione, preservando setuid, setgid o sticky insieme allo stato di esecuzione sottostante.
Esempio realizzato: da -rwxr-x--- a 750 — assegnando 4, 2, 1 a ciascuna lettera e sommando per gruppo
Converti -rwxr-x--- ignorando l'indicatore del tipo iniziale e dividendo il corpo in rwx, r-x e ---. Il proprietario ha 4+2+1, producendo 7. Il gruppo ha 4+1, producendo 5. Altro non ha bit abilitato, producendo 0. La calcolatrice restituisce 750 e seleziona le nove caselle di autorizzazione ordinaria corrispondenti.
Il controllo inverso dovrebbe arrivare allo stesso corpo del testo. Inserisci 750 e il campo simbolico diventa rwxr-x---; scegli un indicatore di file normale per il modulo visualizzato e diventa -rwxr-x---. L'anteprima dell'assegnazione ha una sintassi diversa: u=rwx,g=rx,o=. Tutti e tre i punti di vista descrivono una modalità fissa, mentre la proprietà e la saggezza della sua applicazione rimangono irrisolte.
I segni più e chiocciola finali: esistono le voci + che significano ACL, gli attributi estesi @ che significano su macOS, nessuno dei due fa parte della modalità
I segni più e chiocciola finali sono indicatori di metadati nella struttura, ma il fatto implementato è più ristretto: questo parser li rifiuta perché l'input accettato termina dopo il corpo dell'autorizzazione. L'articolo 501 identifica specificamente un segno più finale con ACL. CHMOD_SOURCES non fornisce un'interpretazione equivalente per il segno chiocciola, quindi questa sezione non gli assegna un significato di sistema operativo non supportato dal repository.
Non rimuovere i segnali alla cieca quando l'accesso effettivo è importante. Separare invece il nucleo di nove o dieci caratteri accettato per la conversione in modalità base e indagare su qualsiasi resto con prove provenienti dal sistema di origine. La calcolatrice può mostrare che rw-r----- significa 640. Non può spiegare metadati aggiuntivi, leggere attributi estesi o determinare se un altro meccanismo di controllo dell'accesso modifica ciò che un utente o un processo può fare.
I segni più e chiocciola finali sono marcatori di metadati rifiutati da questo parser
I comandi stat esterni non vengono eseguiti dal calcolatore del browser. La pagina non ha alcun runner di comando o accesso al filesystem; il suo campo percorso esiste solo per costruire testo chmod tra virgolette da visualizzare. Di conseguenza, non può recuperare una modalità corrente, confrontare l'output di comandi specifici della piattaforma o certificare che una stringa incollata provenga da una particolare utilità. L'utente deve fornire il valore da convertire.
Una volta fornita una modalità affidabile, il browser fornisce un controllo di rappresentazione indipendente. Inserisci il nucleo simbolico e confronta il risultato ottale, la matrice, il riepilogo e l'anteprima dell'assegnazione. L'accordo rileva gli errori di trascrizione e di aritmetica all'interno del formato supportato. Non convalida il comando di raccolta esterna, non rivela la proprietà o dimostra che le autorizzazioni rappresentate sono effettive sull'oggetto da cui è stato copiato il testo.
I comandi stat esterni non vengono eseguiti dal calcolatore del browser
La decodifica ACL rimane fuori dal percorso. Il suo modello contiene proprietario, gruppo, altro e tre bit speciali, senza voci con nome o maschera ACL. La decodifica dei permessi di Windows è altrettanto assente: non esiste un modello di identità di Windows, una sintassi delle voci di controllo degli accessi o il rilevamento della piattaforma. Un nucleo in stile Unix a nove posizioni può essere convertito, ma da quel risultato non è possibile ricostruire alcun sistema di permessi aggiuntivi.
Questo confine limita anche la diagnosi. Una modalità di base che appare sufficiente non dimostra che una ACL o un'altra policy sia irrilevante, mentre una modalità restrittiva non identifica ogni possibile concessione. La calcolatrice risolve solo i dodici bit rappresentati. Utilizzare il suo output per definire con precisione la modalità ordinaria, quindi riservare le affermazioni sull'autorizzazione effettiva agli strumenti e alla documentazione che effettivamente espongono il sistema di autorizzazione esterno.
ACL e la decodifica dei permessi di Windows rimangono fuori dal percorso
La lettura di una modalità in stile ls diventa meccanica una volta isolato il nucleo accettato. Rilascia un carattere di tipo iniziale riconosciuto, dividi le restanti nove posizioni in proprietario, gruppo e altro e leggi il totale 4, scrivi 2 ed esegui 1 all'interno di ciascuna tripla. La calcolatrice esegue tale conversione e convalida le lettere specifiche della posizione, inclusi i moduli s, S, t e T implementati.
Mantieni la conclusione proporzionale all'input. Una conversione riuscita dimostra che la stringa accettata si associa coerentemente a una modalità ottale, una matrice, un riepilogo e un'assegnazione generata. Non esegue stat, ispeziona il percorso, decodifica un indicatore finale, identifica la proprietà o applica chmod. Questi limiti rendono l'output utile: è esatto per quanto riguarda l'aritmetica della modalità base e silenzioso riguardo alle prove che non ha mai raccolto.