Italiano

Strumenti per sviluppatori · Calcolatore Chmod

La quarta cifra chmod: come funzionano setuid, setgid e lo sticky bit

· Come funziona

chmod unix flusso di lavoro dello sviluppatore

bit speciali mostrati come un diagramma di bit di autorizzazione Unix distinto
Illustrazione vettoriale originale ToolAcre

Modalità come 4755 e 2775 portano una cifra iniziale che cambia chi esegue un programma o chi possiede nuovi file. Questo post spiega i tre bit speciali e come vengono visualizzati in ls -l.

La s in drwxrwsr-x: una directory di progetto condivisa si comporta diversamente e l'output ls ha una lettera che non si trova nel cheatsheet di base

La s in rwxrwsr-x registra due fatti in una posizione: setgid è abilitato e anche l'esecuzione del gruppo è abilitata. L'implementazione memorizza setgid come ottale 2000, quindi sostituisce s per il carattere di esecuzione del gruppo. Con un indicatore del tipo di directory selezionato, la modalità 2775 viene visualizzata come drwxrwsr-x mentre il riepilogo a quattro cifre conserva la cifra iniziale del bit speciale.

Quell'output è una conversione, non un'osservazione del filesystem. Il selettore di destinazione modifica il modo in cui la pagina spiega i bit, ma non apre mai una directory né esamina la proprietà. Per una directory, la spiegazione implementata dice che i file appena creati ereditano il gruppo della directory. Il fatto che un particolare sistema di storage applichi tale comportamento o che un'altra policy influenzi l'accesso richiede prove che vanno oltre questo calcolatore.

La quarta cifra e le sue lettere — 4, 2 e 1 come prefisso nella modalità familiare, mostrate come s e t nella posizione di esecuzione, maiuscole quando il bit di esecuzione sottostante è disattivato

La cifra ottale iniziale combina tre maschere indipendenti: setuid è 4000, setgid è 2000 e sticky è 1000. Le loro lettere occupano posizioni di esecuzione esistenti anziché aggiungere caratteri al display a nove posizioni. Setuid usa la posizione del proprietario, imposta la posizione del gruppo e fissa l'altra posizione. La matrice li espone tutti e tre separatamente dalle normali operazioni di lettura, scrittura ed esecuzione.

Case rivela il bit di esecuzione sottostante. La modalità 4755 rende rwsr-xr-x perché l'esecuzione del proprietario accompagna setuid; 4644 esegue il rendering rwSr--r-- perché non è così. Il parser rilegge entrambi i moduli nei bit speciali ed eseguiti corrispondenti. La stessa regola inferiore rispetto a superiore produce s o S ​​per setgid e t o T per sticky, preservando tutte le combinazioni durante i viaggi di andata e ritorno.

setuid sugli eseguibili: come /usr/bin/passwd viene eseguito con i privilegi del proprietario del file e perché Linux ignora setuid sugli script interpretati

Per un file normale, la spiegazione setuid implementata dipende dall'esecuzione del proprietario. Quando entrambi i bit sono presenti, la pagina dice che l'esecuzione del file utilizza l'identità del proprietario del file anziché quella del chiamante. Quando setuid è presente senza l'esecuzione del proprietario, il display utilizza la S maiuscola e spiega che non c'è nulla da eseguire. Questo è l'ambito corretto e supportato dal codice sorgente della sezione.

Il calcolatore non identifica un particolare eseguibile, non ne avvia uno né controlla il modo in cui una piattaforma tratta gli script. La sua prova è la modalità fornita e la scelta del target. La modalità 4755 può essere scomposta in setuid più rwxr-xr-x e l'anteprima dell'assegnazione aggiunge u+s dopo le clausole ordinarie. Ciò verifica solo la resa e la spiegazione; l’idoneità del programma e l’effettiva esecuzione rimangono questioni esterne.

Rendering setuid e spiegazione per i file normali

Setgid su una directory è rappresentato indipendentemente dai normali permessi di gruppo. La modalità 2775 combina la maschera 2000 con il proprietario e il gruppo 7 e altri 5. Il display rwxrwsr-x mantiene la lettura, la scrittura e l'esecuzione del gruppo sostituendo la x visibile con s. La spiegazione della directory associa il bit speciale all'ereditarietà del gruppo della directory per i file appena creati.

La rimozione dell'esecuzione del gruppo mantenendo setgid modifica la lettera della posizione del gruppo in S maiuscola. Questo avviso visibile deriva direttamente dal renderer, indipendentemente dalla formulazione di destinazione. La pagina può confrontare i valori completati e mostrare quale casella di controllo è stata modificata, ma non può controllare una directory condivisa, il suo gruppo corrente o le identità che creano voci. L’accordo tra i punti di vista è una prova aritmetica, non un’approvazione operativa.

La parte difficile sulle directory: eliminazione limitata in /tmp e perché 1777 non è la stessa cosa di 777

Sticky occupa la posizione di esecuzione dell'altro e contribuisce con 1000 ottale. Per la modalità directory 1777, tutti i permessi ordinari rimangono abilitati e il carattere simbolico finale diventa t. La spiegazione della directory implementata aggiunge una restrizione alla cancellazione e alla ridenominazione, mentre la spiegazione 777 avverte di una directory scrivibile senza sticky. Pertanto il convertitore rende visibile la differenza di un bit senza modificare le triple rwx sottostanti.

Se è presente sticky senza altra esecuzione, il carattere finale è invece la T maiuscola. Il parser e il renderer preservano questa distinzione in entrambe le direzioni. La pagina non controlla una directory condivisa reale, i proprietari delle voci o i tentativi di eliminazione. La sua conclusione affidabile è più ristretta: l'intero fornito contiene sticky, il suo compagno di esecuzione è visibile attraverso case e viene selezionato testo esplicativo orientato alla directory.

Esempio realizzato: creazione di 2775 per una directory condivisa: derivazione delle cifre e dell'equivalente simbolico chmod g+s,a+rwx,o-w

Costruisci 2775 come quattro componenti visibili: cifra speciale 2 per setgid, cifra del proprietario 7 per rwx, cifra del gruppo 7 per rwx e altra cifra 5 per r-x. L'immissione del valore completo produce rwxrwsr-x. La matrice seleziona setgid separatamente, mentre il riepilogo nomina il proprietario, il gruppo e altre autorizzazioni insieme a quel bit speciale.

L'elenco di assegnazione generato è u=rwx,g=rwx,o=rx,g+s. Questo è diverso dal display a nove caratteri ma rappresenta lo stesso valore a dodici bit. La scelta della directory modifica la spiegazione della formulazione dell'ereditarietà del gruppo implementata; scegliendo il file viene modificata la dicitura senza modificare 2775. Il calcolatore non verifica mai il gruppo di destinazione né crea un file, quindi l'esempio rimane un modello piuttosto che una prescrizione di distribuzione.

Esempio realizzato: creazione e lettura di 2775 per un modello di directory condivisa

Il comportamento di montaggio, le funzionalità e la semantica aggiuntiva della piattaforma non sono modellati. La pagina non ha input di montaggio, set di funzionalità, query del kernel o sonda del filesystem. Può rappresentare setuid, setgid e sticky e può variare la sua spiegazione tra file e directory normali. Non può stabilire se una regola esterna neutralizza, estende o interpreta quei bit in modo diverso su un bersaglio reale.

Anche la dicitura all'angolo della fonte non dovrebbe essere generalizzata oltre l'interfaccia. Una modalità bit speciale valida dimostra che il parser, il renderer, la matrice, il riepilogo e gli assegnamenti generati concordano. Non dimostra che si sia verificato un comportamento di esecuzione, ereditarietà o eliminazione. Mantenere le affermazioni di policy non supportate fuori dalla diagnosi e trattare il comando copiato come testo inerte finché un ambiente ispezionato separatamente non fornisce il contesto mancante.

La politica di montaggio, le capacità e la semantica angolare non implementata rimangono esterne

Il takeaway implementato è un viaggio di andata e ritorno con significato posizionale. Setuid mappa la posizione di esecuzione del proprietario, setgid l'esecuzione del gruppo e sticky l'esecuzione dell'altra. Minuscolo significa che il bit di esecuzione associato è attivo; maiuscolo significa che è spento. La cifra ottale iniziale e le caselle di controllo dedicate preservano le stesse informazioni, quindi non è necessario dedurre alcun bit speciale dalla sola prosa.

Prova una modalità speciale confrontando tutte le rappresentazioni. Per 2775, aspettati 2 iniziale, posizioni di gruppo, una casella setgid selezionata e un'aggiunta g+s generata. Una mancata corrispondenza esporrebbe un problema di conversione. L'accordo stabilisce una sola modalità coerente. La proprietà, la policy di montaggio, le capacità, le regole dell'applicazione e le conseguenze dell'esecuzione di chmod rimangono al di là delle prove del calcolatore del browser.