I permessi UNIX sono un semplice sistema per definire i diritti di accesso alle risorse , rappresentati da file disponibili su un sistema informatico . Rimangono il modo più utilizzato per definire i diritti degli utenti sui sistemi di tipo UNIX .
Qualsiasi entità (persona fisica o programma particolare) che deve interagire con un sistema UNIX viene autenticata su questo computer da un utente o utente . Ciò rende possibile identificare un attore su un sistema UNIX. Un utente viene riconosciuto da un nome univoco e un numero univoco (il nome / numero di corrispondenza è memorizzato nel file / etc / passwd ).
Tutti gli utenti UNIX non hanno gli stessi diritti di accesso al computer (non tutti possono fare lo stesso), e semplicemente per motivi di sicurezza e amministrazione. Ad esempio, per evitare qualsiasi problema su Internet , l'utente che gestisce il server HTTP non ha il diritto di eseguire comandi localmente, per evitare che il server possa farlo.
Alcuni utenti non possono autenticarsi sul computer e accedere a un interprete dei comandi . Ciò non significa, tuttavia, che non possano fare nulla sul computer : è possibile che leggano o scrivano file, ma è necessario che il superutente (vedi sotto) avvii un programma per quell'utente. Questo meccanismo è generalmente utilizzato per i demoni : il superutente avvia il daemon e per impedire a quest'ultimo di fare qualsiasi cosa sulla macchina, viene ad esempio assegnato al bin dell'utente.
Su qualsiasi sistema UNIX, c'è un super utente, solitamente chiamato root , che ha piena autorità. Può accedere liberamente a tutte le risorse del computer , anche al posto di un altro utente, cioè sotto la sua identità. Di solito, almeno sui sistemi di produzione, solo l' amministratore di sistema ha la password di root . L'utente root ha il numero 0.
Un utente UNIX appartiene a uno o più gruppi . I gruppi vengono utilizzati per riunire gli utenti al fine di assegnare loro diritti comuni. Ad esempio, su un sistema con una scheda audio , spesso è presente un gruppo audio che include utenti autorizzati a utilizzarlo.
Ogni file UNIX ha un proprietario. Inizialmente, l'utente ha creato il file, ma "root" può "darlo" a un altro utente. Solo il proprietario del file e il super utente ( root ) possono modificare i diritti.
Tradizionalmente, gli Unix "System V" consentono al proprietario di cambiare il proprietario di un file, ma nella tradizione BSD e sotto Linux, solo "root" può cambiare il proprietario di un file, in particolare per evitare che un utente venga 'sfuggito al disco quote cedendo i propri file a un altro utente.
Anche un file UNIX appartiene a un gruppo. Questo dà pieno significato alla nozione di gruppo. Definiamo così le azioni del gruppo su questo file. Questo gruppo è spesso il gruppo principale del proprietario, ma non è obbligatorio. Tutto dipende da cosa vuoi fare. Si può immaginare uno scenario di delega dell'amministrazione: il superutente possiede un file di configurazione, ma autorizza tutti gli utenti del gruppo admin (amministratori) a modificare questo file. Il file in questione avrà quindi root come proprietario e apparterrà al gruppo admin.
Ricorda che anche le directory in UNIX sono file. Le autorizzazioni sulle directory (ma anche sui dispositivi, ecc.) Funzionano esattamente come per i file ordinari.
Ogni file ha un elenco di autorizzazioni ad esso associate, che determinano ciò che ogni utente è autorizzato a fare con il file .
I permessi di accesso ai file nello standard POSIX sono modellati sui permessi di accesso UNIX.
I diritti su un file UNIX sono attribuiti a tre diverse "azioni" possibili:
A volte chiamiamo r, wex "flag" o "flags". Su un dato file, questi 3 flag devono essere definiti per il suo proprietario, il suo gruppo, ma anche per gli altri utenti (diversi dal proprietario e non appartenenti al gruppo).
Solo root e il proprietario di un file possono modificare i loro permessi di accesso.
Questo insieme di 3 diritti su 3 entità è generalmente rappresentato come segue: affianchiamo i diritti r, w poi x rispettivamente per il proprietario (u), il gruppo (g) e gli altri utenti (o). I codici u, g e o (u come utente , g come gruppo e o come altri ) sono usati dai comandi UNIX che consentono di assegnare diritti e proprietà dei file. Quando un flag è assegnato a un'entità, scriviamo questo flag (r, w o x), e quando non è assegnato, scriviamo un '-'. Per esempio,
rwxr-xr-- \ /\ /\ / v v v | | droits des autres utilisateurs (o) | | | droits des utilisateurs appartenant au groupe (g) | droits du propriétaire (u)significa che il proprietario può leggere, scrivere ed eseguire il file, ma gli utenti del gruppo assegnato al file possono solo leggerlo ed eseguirlo, e infine gli altri utenti possono solo leggere il file.
Un altro modo per rappresentare questi diritti è in forma binaria grazie ad una chiave numerica basata sulla corrispondenza tra un numero decimale e la sua espressione binaria:
L'espressione binaria a tre caratteri è associata ai 3 tipi di diritti (rwx); è quindi sufficiente dichiarare per ciascuna delle categorie di utenti (utente, gruppo, altro) un numero compreso tra 0 e 7 a cui corrisponde una sequenza di diritti di accesso. Per esempio :
Un trucco consente di associare rapidamente un valore decimale alla sequenza di diritti desiderata. Tutto quello che devi fare è assegnare i seguenti valori per ogni tipo di diritto:
Quindi aggiungiamo questi valori a seconda che si voglia o meno assegnare il diritto per corrispondenza.
Quindi, rwx "è" 7 (4 + 2 + 1), rx "è" 5 (4 + 1) e r-- "è" 4. I diritti completi (rwxr-xr--) sono quindi equivalenti a 754. Un modo diretto per assegnare i diritti è scriverli in questo modulo e utilizzare il codice a 3 cifre risultante con chmod (vedi sotto).
Per vedere quali diritti sono assegnati a un file, digita semplicemente il comando ls -l nomefile:
# ls -l toto -rwxr-xr-- 1 user group 12345 Nov 15 09:19 totoL'output significa che il file toto (dimensione 12345) appartiene a "user", che gli è stato assegnato il gruppo "group" e che i diritti sono rwxr-xr--. Nota che ci sono in effetti 10 caratteri nell'area dei diritti. Il primo - non è un diritto, è un carattere riservato per indicare il tipo di file. Può assumere i seguenti valori:
La modifica dei diritti viene eseguita con il comando chmod ; il cambio di proprietario o gruppo, utilizzando il comando chown .
La modifica dei diritti può essere eseguita anche semplicemente dal numero di 3 cifre calcolato come sopra. Quindi, per assegnare i diritti r-xr-xr-x (cioè 555), basta eseguire:
chmod 555 nom_du_fichierEsistono altri diritti speciali, che consentono di gestire ulteriormente le autorizzazioni.
Questo diritto si applica ai file eseguibili, consente di assegnare temporaneamente a un utente i diritti del proprietario del file, durante la sua esecuzione. Infatti, quando un programma viene eseguito da un utente, le attività che eseguirà saranno limitate dai suoi diritti, che quindi si applicano al programma. Quando il diritto SUID viene applicato a un eseguibile e qualsiasi utente lo esegue, il programma avrà i diritti del proprietario del file durante la sua esecuzione. Ovviamente, un utente può avere il diritto SUID solo se possiede anche i diritti di esecuzione del programma. Questo diritto viene utilizzato quando un'attività, sebbene legittima per un utente tipico, richiede diritti aggiuntivi (generalmente quelli di root ). Dovrebbe quindi essere usato con cautela. Per le partizioni aggiuntive, è necessario attivare il bit suid per poterlo utilizzare specificandolo nelle opzioni delle partizioni interessate nel file fstab .
ValutazioneLa sua bandiera è la lettera s o S che sostituisce la x del proprietario. La lettera maiuscola o minuscola della 's' permette di conoscere lo stato del flag x (diritto del proprietario di eseguire) che è quindi mascherato dal diritto del SUID 's' o 'S': è una s se l'esecuzione del titolare del diritto è presente, o altrimenti una S. È quindi posizionato in questo modo:
---s------ ou ---S------Un file con i diritti
-rwxr-xr-xa cui aggiungiamo il diritto SUID avrà quindi la notazione
-rwsr-xr-x ValoreIl diritto SUID ha il valore ottale 4000.
Esempio: - rwsr - xr - x corrisponde a 4755.
Il diritto SUID viene utilizzato per il programma di montaggio (di solito si trova in / bin):
-rwsr-xr-x 1 root bin 68804 /bin/mount Protezione contro un attacco tipo sushiSu Linux, sono state fatte restrizioni legali sul flag SUID:
Non è certo che le attuali versioni di Unix abbiano implementato questa sicurezza; in questo caso si apre la porta ad un attacco che si chiama sushi ( su shell ): l'utente root crea un file di shell con il bit SUID, lasciando i diritti di scrittura agli altri utenti; uno di loro sarà in grado di modificare il file ed eseguire quello che vuole con i diritti di root.
Questo diritto funziona come il diritto SUID, ma applicato ai gruppi. Assegna a un utente i diritti del gruppo a cui appartiene il proprietario dell'eseguibile e non più i diritti del proprietario.
DirectoryQuesto diritto ha un uso diverso se viene applicato a una directory. Normalmente, quando un file viene creato da un utente, ne è il proprietario e gli viene applicato un gruppo predefinito (di solito utenti se il file è stato creato da un utente e root o wheel se è stato creato da root ). Tuttavia, quando un file viene creato in una directory con il diritto SGID, a questo file verrà assegnato il gruppo di directory per impostazione predefinita. Inoltre, se un'altra directory viene creata nella directory che contiene il diritto SGID, anche questa sottodirectory avrà questo diritto.
ValutazioneCome il diritto SUID, sostituisce il flag x, ma quello dei diritti di gruppo, e la capitale indica il diritto di esecuzione x nascosto, è presente se non è allocato.
------s--- ou ------S---Un file con i diritti
-rwxr--r--a cui aggiungiamo il diritto SGID avrà quindi la notazione
-rwxr-Sr-- ValoreIl diritto SGID ha il valore ottale 2000.
Esempio: - rwxr - S r - - corrisponde a 2744.
Questo diritto ( sticky bit translation ) viene utilizzato per gestire i permessi di scrittura di una directory in modo più sottile. In effetti, il diritto di scrittura significa che puoi creare ed eliminare file in questa directory. Il bit appiccicoso consente di distinguere tra i due diritti.
DefinizioneQuando questo diritto è impostato su una directory, proibisce l'eliminazione di un file in essa contenuto a qualsiasi utente diverso dal proprietario del file. Tuttavia, è sempre possibile che un utente con diritti di scrittura su questo file lo modifichi (ad esempio per trasformarlo in un file vuoto). La creazione di nuovi file è sempre possibile per tutti gli utenti che hanno il diritto di scrivere su questa directory. Nota che è lo stesso principio delle pagine di Wikipedia , sono modificabili ma non possiamo eliminarle.
Per i file, l'uso è abbastanza diverso. Lo sticky bit indica quindi che questo file deve rimanere ancora nella RAM dopo la sua esecuzione. L'obiettivo all'epoca era migliorare le prestazioni evitando di caricare / scaricare un file dalla memoria (ad esempio, un eseguibile o una libreria software ). Il termine appiccicoso significava che il file rimaneva bloccato in memoria. Tuttavia, questa funzionalità è supportata solo su un piccolo numero di sistemi Unix come HP-UX . Nessuna versione di Linux supporta questa funzionalità di sticky bit .
ValutazioneIl suo flag è to T, che sostituisce il diritto di esecuzione x degli utenti diversi dal proprietario e da quelli appartenenti al gruppo del file, allo stesso modo dei diritti SUID e SGID. Anche la capitale funziona allo stesso modo, è presente se il diritto di prestazione x nascosto non è presente.
---------t ou ---------TUn file con i diritti
-rwxr-xr-xa cui aggiungiamo lo sticky bit destro avrà quindi la notazione
-rwxr-xr-t ValoreLo sticky bit a destra ha il valore ottale 1000.
Esempio: - rwxr - xr - t corrisponde a 1755.
Su alcuni sistemi UNIX, lo sticky bit viene utilizzato per la directory / tmp, che deve essere scrivibile da tutti gli utenti, senza che questi cancellino i propri file l'uno dall'altro:
drwxrwxrwt 86 root root 20480 tmpCon i permessi UNIX non è possibile avere una gestione molto fine delle liste di controllo accessi : possiamo solo dare specifici diritti a:
È possibile rimediare aggiungendo software aggiuntivo per la gestione degli elenchi di controllo degli accessi. Nel caso particolare di una delle distribuzioni GNU / Linux , ciò si ottiene installando il pacchetto corrispondente (esempio: pacchetto acl negli archivi debian ).
Un file con un elenco di ACL verrà presentato con un "+" alla fine della riga
-rwxr--r--+Mentre un file con un "." indicherà la presenza di un contesto SELinux . I dettagli possono essere elencati con il comando ls -Z .
-rwxr--r--.Le autorizzazioni NTFS di Microsoft e le autorizzazioni di accesso UNIX sono conformi allo standard POSIX , ma sono significativamente diverse:
La complessità della gestione dei diritti in Windows non è necessariamente un vantaggio: aumentando la complessità, possiamo ridurre il controllo e la comprensione delle interazioni tra i diritti del sistema da parte di un essere umano. Una semplice gestione della sicurezza può dare un migliore senso di controllo del sistema, ma impedisce un po 'di finezza.