Strumenti per sviluppatori · Calcolatore Chmod
Spiegazione della modalità simbolica chmod: u+x, g-w, o=r e a+rX
· Come funziona
chmod unix flusso di lavoro dello sviluppatore
La forma simbolica di chmod è una grammatica minuscola: chi, operatore, quale bit. Questo post lo smonta in modo che u+x e go-rwx diventino ovvi e mostra quando il simbolico batte l'ottale.
Uno script di deploy pieno di lettere — chmod u+x,go-w deploy.sh funziona, ma nessuno nel team può dire cosa cambia
Un comando come u+x assomiglia alla visualizzazione simbolica della calcolatrice, ma le due forme hanno compiti diversi. Il campo simbolico modificabile accetta nove posizioni di autorizzazione, facoltativamente precedute da un carattere di tipo file riconosciuto. Al contrario, l'argomento chmod generato specifica le assegnazioni complete con le clausole u=, g= e o=, quindi rappresenta una modalità fissa anziché analizzare una modifica relativa.
L'immissione di 750 rende concreta la distinzione. La visualizzazione è rwxr-x---, mentre l'assegnazione generata è u=rwx,g=rx,o=. Entrambi descrivono lo stesso proprietario, gruppo e altri bit, ma solo il secondo è formattato come argomento chmod. La pagina non esegue mai quel comando. Espone la rappresentazione in modo che il valore proposto possa essere rivisto prima di qualsiasi azione di shell separata.
La calcolatrice separa una visualizzazione in stile ls dall'elenco di assegnazioni che genera
Le lettere u, g e o compaiono nell'assegnazione generata perché etichettano il proprietario, il gruppo e altro. Ogni output nomina esplicitamente tutte e tre le classi, inclusa una clausola vuota quando una classe non dispone di autorizzazioni. La calcolatrice non analizza la grammatica omessa o l'abbreviazione. Il suo input inizia da una modalità completata, non da istruzioni il cui risultato dipende da un target esistente.
Questa correzione impedisce un subdolo overclaim. La matrice può mostrare esattamente quale classe riceve lettura, scrittura o esecuzione, ma non può decidere cosa significherebbe un selettore di classe omesso in un'altra implementazione di chmod. Confronta invece le tre colonne della matrice con le tre clausole di assegnazione. Il loro accordo verifica il valore fisso senza fare affidamento su regole di comando relativo che questa interfaccia non implementa.
Quali lettere compaiono nei compiti generati; relativo omesso: la grammatica non viene analizzata
Il generatore di assegnazioni utilizza = per ogni classe ordinaria. Questa scelta ricostruisce esattamente il proprietario, il gruppo e le altre triple richieste, inclusa la cancellazione di una classe emettendo un lato destro vuoto. Sebbene + e - appartengano a comandi chmod simbolici, non sono accettati come input della calcolatrice. La pagina pertanto non modella aggiunte o rimozioni incrementali da una modalità di avvio sconosciuta.
Un confronto a un bit mostra ciò che può dimostrare il flusso di lavoro supportato. La modalità 750 esegue il rendering rwxr-x---; la modifica della cifra del gruppo in 7 produce rwxrwx--- e modifica g=rx in g=rwx. La calcolatrice identifica le modalità prima e dopo completate. Non valuta g+w rispetto a un file live, poiché alla conversione non partecipa alcuna modalità, percorso, file system o esecuzione di comandi correnti.
L'operatore generato è =, mentre la grammatica di input + e - rimane esterna allo strumento
Il parser riconosce r e w nelle loro posizioni fisse, più x o - nelle posizioni di esecuzione ordinarie. Accetta anche s, S, t e T dove bit speciali condividono quelle posizioni. La X maiuscola è diversa: appartiene alla grammatica chmod relativa e non è supportata qui. Fornire X viene rifiutato anziché interpretato silenziosamente come un normale bit di esecuzione.
Le lettere speciali minuscole e maiuscole vengono implementate deliberatamente. Setuid e setgid usano s quando è presente il bit di esecuzione corrispondente e S quando è assente; appiccicoso usa t o T con la stessa regola nella posizione di esecuzione dell'altro. La riga speciale e il riepilogo a quattro cifre preservano quei bit. Niente di tutto ciò aggiunge il supporto per la selezione condizionale della X maiuscola tra file e directory.
Il parser accetta r, w, x, s, S, t e T; la X maiuscola non è supportata
Le espressioni di copia di classe come g=u non sono implementate. La calcolatrice non legge mai una classe sorgente da un oggetto esistente né applica i bit di una classe a un'altra. Riceve una modalità ottale completa o in stile ls, converte quel valore in booleani con nome ed emette flag espliciti per ciascuna classe. Qualsiasi risultato copiato deve essere calcolato altrove prima che questa pagina possa esaminarlo.
Supponiamo che un passaggio esterno determini che il proprietario e il gruppo debbano entrambi avere rwx mentre l'altro non ne ha. Inserendo 770 si ottiene rwxrwx--- e u=rwx,g=rwx,o=. Ciò conferma il risultato completo ma non dimostra come sia stato derivato. Anche la proprietà rimane sconosciuta: il convertitore etichetta le classi senza identificare il vero proprietario, gruppo o processo che incontrerebbe l'obiettivo.
La copia delle autorizzazioni tra classi non è implementata
La modalità 0750 viene accettata con il relativo zero iniziale e analizzata come lo stesso valore di 750. La cifra del proprietario 7 attiva la lettura, la scrittura e l'esecuzione; la cifra del gruppo 5 attiva la lettura e l'esecuzione; l'altra cifra 0 non attiva nulla. La visualizzazione sincronizzata diventa rwxr-x--- e il riepilogo sempre a quattro cifre mantiene 0750 visibile come valore di revisione inequivocabile.
L'assegnazione simbolica generata per quella modalità fissa è u=rwx,g=rx,o=. Le sue tre clausole corrispondono direttamente alle colonne della matrice, mentre l'anteprima del comando ottale utilizza 750 a meno che un bit speciale non richieda una quarta cifra. Un percorso fornito può essere citato nell'anteprima, ma non viene mai aperto. L'esempio verifica la rappresentazione, non la proprietà, l'autorizzazione o una modifica dell'autorizzazione riuscita.
Esempio funzionante: 0750 come modalità fissa e elenco di assegnazione generato
Le modifiche basate sui riferimenti, la gestione dei collegamenti simbolici e le operazioni ACL rimangono esterne a questo convertitore. Nella pagina non sono presenti input di file di riferimento, attraversamento del percorso, modello di voce ACL o query del file system. La selezione della ricorsione aggiunge solo un flag -R visualizzato. Di conseguenza, il comando generato non può segnalare quali oggetti verrebbero raggiunti o se un altro livello di controllo dell'accesso modifica il risultato effettivo.
L'input non valido fornisce un utile controllo dei limiti. Una lettera di autorizzazione fuori posto, una X non supportata, un indicatore finale o una cifra ottale non corretta vengono rifiutati anziché riparati. La correzione del testo in una visualizzazione supportata di nove caratteri produce una modalità e visualizzazioni sincronizzate. Tale accettazione dimostra solo che la stringa corrisponde ai dodici bit implementati; non convalida una funzionalità chmod esterna o un ambiente di destinazione.
Le operazioni di riferimento, collegamento simbolico e ACL rimangono esterne a questo convertitore
La distinzione pratica è tra una visualizzazione in stile ls e un'assegnazione fissa generata, non tra input simbolico come relativo e input ottale come assoluto. Entrambi i moduli modificabili rappresentano una modalità completata. La calcolatrice ne converte uno nello stesso numero intero, matrice, riepilogo, spiegazione e anteprime, quindi emette clausole esplicite u=, g= e o= per il modulo di comando simbolico.
Utilizza queste visualizzazioni sincronizzate per individuare gli errori aritmetici. Se 750, rwxr-x--- e u=rwx,g=rx,o= appaiono insieme, la modalità fissa è internamente coerente. Fermatevi qui a meno che il sistema attuale non fornisca ulteriori prove. La pagina non analizza gli operatori relativi, i selettori omessi, la copia delle classi o la X maiuscola e non può determinare se la modalità affronta l'operazione effettivamente fallita.