Condivisione della tecnologia

Analisi approfondita delle autorizzazioni Linux: esplorazione dei principi

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Prefazione: questa sezione parla principalmente del contenuto relativo ai permessi di Linux I permessi di Linux non possono essere percepiti se si utilizza l'account root, quindi è necessario utilizzare account ordinari per apprendere i contenuti rilevanti di questa sezione e condurre alcuni test sperimentali. Quindi, attraverso lo studio dei permessi di Linux, possiamo sapere perché a volte abbiamo sempre i permessi bloccati quando operiamo su un file, e farci conoscere la differenza tra i permessi dei file nella directory root e i permessi dei file nella home directory del nostro utente ordinario.

ps: questa sezione è adatta agli amici che stanno imparando Linux e conoscono alcuni comandi di Linux.

Classificazione degli utenti

//Per prima cosa, conosciamo la classificazione degli utenti sotto Linux:

  • radice:superutente, amministratore
  • utente generale: Cioè, alcuni utenti che abbiamo creato. (Utenti ordinari da addusr)

La differenza fondamentale tra questi due utenti è che l'utente root non è limitato dai permessi, mentre gli utenti ordinari sono limitati dai permessi.

//su

Gli utenti ordinari possono passare agli utenti root e anche gli utenti root possono passare agli utenti ordinari.

Passa da utente normale a utente root:

Il primo: su + password di root. Puoi passare a diventare l'utente root. Se cambi in questo momento, la posizione dell'utente rimarrà invariata dopo il cambio.

Il secondo tipo: su- + password di root. Passa anche all'utente root. Se cambi in questo momento, la posizione dell'utente dopo il cambio diventerà la directory home di root.

Dopo essere passati nelle due situazioni precedenti, puoi usare cral + d per tornare indietro.

Passaggio da utente root a utente normale: il passaggio da utente root a utente normale non richiede una password e può essere cambiato direttamente.

L'utente ordinario passa all'utente ordinario

In genere ci sono due modi in cui gli utenti ordinari possono passare a diventare utenti ordinari:

Il primo: se hai la password dell'utente normale, puoi utilizzare su + utente + password dell'utente per cambiare identità.

Il secondo tipo: passare prima all'utente root (fare riferimento al metodo di cambio sopra), quindi passare direttamente all'utente specificato tramite l'identità root.

Nota che puoi usare cral + d per tornare al cambio di identità di coscienza.

Escalation dei privilegi di comando : Quando eseguiamo il comando, non possiamo passare all'utente root, ma solo aumentare i diritti di uno dei comandi. In questo momento utilizziamo sudu + comando + la password dell'utente corrente. Gli amici potrebbero avere domande qui, perché è necessario inserire la propria password per aumentare i privilegi di un determinato comando, invece della password di root? Questo perché l'escalation dei privilegi di comando è condizionale, ovvero solo quando un utente viene aggiunto alla whitelist del sistema l'escalation dei privilegi di comando può essere eseguita. Se non viene aggiunto alla whitelist, il comando di escalation dei privilegi è inutile.

Cos'è il permesso

In volgare, i permessi si riferiscono al fatto che ti sia consentito fare qualcosa. Questi sono i permessi.

L'identità di un utente è divisa in: proprietario, gruppo e altri.

Diamo un'occhiata alla seguente serie di righe di comando:

Qui, il primo _mian_yang rappresenta inizialmente il proprietario del file e il secondo _mian_yang rappresenta il gruppo a cui appartiene il file. Vale a dire, il proprietario di questi file è _mian_yang e _mian_yang è l'identità del proprietario del gruppo a cui appartengono questi file è _mian_yang. Se un utente appartiene al gruppo _mian_yang, allora è l'identità del gruppo a cui appartiene; e se un utente è entrambi Non è _mian_yang, né è nel gruppo a cui appartiene _mian_yang. Quindi questo utente è l'identità di qualcun altro.

Quindi, se c'è un preside di nome Zhang San, Zhang San vuole andare nell'ufficio del suo preside. Quindi vorrei chiedere, Zhang San può andare all'ufficio del preside perché è Zhang San, o perché è il preside. La ragione ovvia qui è che, poiché è il preside, può recarsi nell'ufficio del suo preside. Quindi, per i nostri file, possiamo accedere a questo file perché siamo questo utente? O è a causa della nostra identità utente? La risposta è l'identità. Cioè, l'autenticazione dell'autorità è l'identità.

Seconda domanda, sappiamo tutti che i telefoni cellulari hanno molte funzioni: possiamo guardare video, controllare informazioni, giocare e così via. Questi possono essere visti come attributi posseduti dai telefoni cellulari. Tuttavia, quando abbiamo fame, non possiamo mangiare i nostri telefoni per non avere più fame. Poter essere usati come cibo è una caratteristica che i cellulari non hanno. Quindi, qualunque cosa facciamo, anche le persone con la massima autorità non possono permettere che i telefoni cellulari diventino cibo. Possiamo conoscere il secondo punto, ovvero che i permessi sono legati anche agli attributi delle cose.

//La relazione tra identità e utente

Dopo aver parlato dei tre tipi di permessi, consideriamo la relazione tra i permessi e le classificazioni degli utenti in base alla precedente classificazione degli utenti.

Innanzitutto, per un utente normale, questo utente normale può essere il proprietario di un file, il gruppo a cui appartiene il file o altre persone.

Per l'utente root, l'utente root può essere il proprietario di un file, il gruppo a cui appartiene un file o altre persone.

Quindi, come si manifesta? Cioè, come fa Linux a determinare l'identità di questo utente? Diamo un’occhiata a questa immagine:

Per le caselle verdi e arancioni, la casella verde è il proprietario e la casella arancione è il gruppo a cui appartiene. Pertanto, quando un utente registrato accede a un file, deve prima verificare se è il proprietario del file. In caso contrario, deve verificare se è il gruppo a cui appartiene il file. In caso contrario, allora qualcun altro.

//Autorizzazioni file

Continua a guardare questa immagine. Per questa immagine, le caselle rosa all'interno rappresentano le autorizzazioni di ciascuna identità. Le barre orizzontali verdi sono le autorizzazioni del proprietario, le barre orizzontali arancioni sono le autorizzazioni del gruppo e le barre orizzontali blu sono le autorizzazioni di altre persone. Tra questi, ciascuna identità ha tre permessi rwx. Questi tre permessi costituiscono un gruppo e le posizioni di questi tre permessi sono determinate. La prima posizione è per la lettura, la seconda posizione è per la scrittura e la terza posizione è per l'eseguibile. Queste tre posizioni non saranno fuori ordine e il significato di ciascuna posizione è determinato! E ogni posizione ha solo sì o no, ha le autorizzazioni specificate.

Pensaci qui, perché hai bisogno del permesso per appartenere a un gruppo?

Supponiamo che sia Zhang San che Li Si siano entrati in un'azienda per i colloqui e alla fine siano diventati stagisti della stessa azienda e siano stati quindi assegnati rispettivamente al Gruppo A e al Gruppo B. Inoltre, Zhang San è nel Gruppo A e Li Si è nel Gruppo B. Ora l'azienda consente a questi due gruppi di sviluppare un software contemporaneamente. Un giorno Zhang San scrisse un codice molto potente. Li Si voleva dargli un'occhiata, ma Zhang San non voleva che Li Si lo vedesse. Tuttavia, un giorno il leader vuole dare un'occhiata al codice scritto da Zhang San. Tuttavia, se Zhang San rilascia il permesso di lettura del codice, allora Li Si potrà vederlo, quindi il gruppo a cui appartiene gioca un ruolo in questo. tempo. Lasciate che questo leader appartenga a questo gruppo, così che io possa vedere questo programma, e così anche il leader, ma gli altri no.

Modifica delle autorizzazioni

Ci sono solo due persone che possono modificare le autorizzazioni, una è il proprietario e l'altra è root.

Metodo: chmod u + rwx modifica le autorizzazioni modificate dal proprietario e aggiunge autorizzazioni al proprietario (r autorizzazione di lettura, w autorizzazione di scrittura, x autorizzazione di esecuzione)

chmod u-rwx modifica i permessi del proprietario e sottrae i permessi corrispondenti al proprietario

chmod g+rwx modifica i permessi del gruppo a cui appartiene e aggiunge i permessi al gruppo a cui appartiene.

chmod g-rwx modifica i permessi del gruppo a cui appartiene e aggiunge i permessi al gruppo a cui appartiene.

chmod g-rwx per modificare i permessi di altre persone e aggiungere permessi ad altri

chmod g-rwx per modificare i permessi di altre persone e aggiungere permessi ad altri

Puoi anche modificare u+rwx e g+rwx per concedere autorizzazioni a più identità. Ciò significa aggiungere autorizzazioni al gruppo e al proprietario a cui appartengono e sottrarre le autorizzazioni è l'opposto.

Ad esempio, se desideri aggiungere autorizzazioni a tutte le identità contemporaneamente, dovresti impostare chmod a+rwx e vale il contrario per sottrarre le autorizzazioni.

Inoltre, oltre a modificare i permessi, possiamo anche modificare il proprietario e il gruppo di un file.

Cambia proprietario del file: assegna il file utente per dare i propri file a qualcuno e cambiare il proprietario.

Cambia il gruppo a cui appartiene un file: chgrp Cambia il gruppo a cui appartiene un file utente.

Le due istruzioni precedenti richiedono il consenso dell'utente corrispondente. Generalmente esistono due metodi: uno è l'escalation dei diritti, su, e l'altro è comunicare offline.

Per quanto riguarda le autorizzazioni, vengono determinate le autorizzazioni di ogni posizione che vediamo utilizzando ll, quindi possiamo utilizzare 1 per rappresentare che la posizione dispone di autorizzazioni e 0 per rappresentare che la posizione non ha autorizzazioni. Quindi possiamo usare 111 e 110 per rappresentare i permessi di un'identità. Ad esempio, 111 significa lettura, scrittura ed esecuzione. 111 è 7, quindi le tre identità possono essere rappresentate da tre cifre ottali, come 777.

Pertanto, possiamo modificare i permessi in questo modo: chmod 777, che significa dare a tutte le identità tutti i permessi.

Ora, diamo un'occhiata a un esempio:

Ora, per l'utente _mian_yang, il suo stato di proprietario ha i permessi di lettura ma non quelli di scrittura; la sua identità di gruppo ha i permessi di lettura e di scrittura;

Quindi in questo momento, _mian_yang può scrivere su questo file?

La risposta è no, perché quando un utente autentica la propria identità, può autenticare solo un'identità: prima autentica il proprietario, poi autentica il gruppo a cui appartiene e infine autentica gli altri.

domanda umana

Perché i permessi appaiono così quando creiamo un file?

Prima di tutto, quello che dobbiamo sapere è che i permessi nell'immagine sono i permessi finali creati dal file. In realtà hanno anche un permesso iniziale: il permesso iniziale predefinito per i file di directory è 777, mentre quello predefinito per i file ordinari lo è 666. Ma perché i permessi finalmente creati sono 775 per i file di directory e 664 per i file ordinari?

Questo perché nel sistema è presente per impostazione predefinita una umask: maschera di autorizzazione. La maschera di autorizzazione significa che qualsiasi autorizzazione visualizzata nell'umask non apparirà nell'autorizzazione finale. La regola di calcolo qui non è l'autorizzazione predefinita - maschera di autorizzazione, ma l'autorizzazione finale = autorizzazione predefinita & (~ maschera di autorizzazione)

Allo stesso tempo, è anche possibile modificare umask, come il numero umask, che consiste nel modificare la maschera di autorizzazione su un determinato numero.

Il significato della lettura e della scrittura di directory

Lettura directory: permette di visualizzare il contenuto dei file nella directory corrente

Scrittura di directory: ci consente di creare, eliminare e modificare file

Directory eseguibile: se è consentito accedere alla directory.

un po' appiccicoso

In pratica potremmo avere questa esigenza: vogliamo condividere i dati, ma se creiamo la directory sotto la nostra home directory, altri utenti non potranno entrare. Pertanto, questa directory può essere creata solo nella directory root, ma le autorizzazioni predefinite della directory root sono dr-xr-xr-x, il che significa che le tre identità possono solo leggere ed eseguire e non possono creare directory a piacimento. Quindi è necessario utilizzare l'account root per creare la directory.

Dopo aver creato questo file, possiamo impostare l'altra identità per leggere, scrivere ed eseguire questo file, altrimenti non potrà essere condiviso. Ma se un utente crea un file al suo interno, poiché la directory ha il permesso di scrittura, altri possono eliminare il file a piacimento. Quindi, per proteggere questo file in questo momento, è stata aggiunta l'operazione sticky bit. Il funzionamento di questo sticky bit garantisce che i file creati dall'utente possano essere eliminati solo dall'utente stesso o da root.

Pertanto, lo sticky bit è un'autorizzazione impostata specificatamente per una directory, in genere una directory condivisa. Tutti possono aggiungere, eliminare, controllare e modificare il file nella directory, ma solo il proprietario e root possono eliminare il file e nessun altro. Potere.

------------------

Per questa sezione è tutto.

Ecco i miei appunti: