Utenti, Gruppi e Permessi elenco degli utenti - /etc/passwd Appunti Corso Linux 2011 Lez. 6 In un sistema Linux (ma anche Unix, *BSD, Mac) gli utenti locali del sistema operativo sono registrati in un file principale /etc/passwd Analogamente ad un file CSV (comma separate values) /etc/passwd contiene tutte le informazioni degli utenti divise in 7 campi separati dal : Il presente documento costituisce solo una sorta di appunti degli argomenti che verranno trattati durante la sesta lezione del Corso Linux 2011 organizzata dal Gruppo Linux Macerata.Utilizzate lo spazio qui a lato per appuntare eventuali integrazioni o correggere imprecisioni che dovessero emergere durante la serata. Samuele Cacchiarelli 19/7/2011 1. user 2. password (per motivi di sicurezza vi è solo una x) 3. UID 4. GID 5. Informazioni generali (GECOS) 6. home directory 7. shell es: cat /etc/passwd grep sam sam:x:500:500:samuele Cacchiarelli:/home/sam:/bin/bash apropos passwd passwd (1) passwd (5) man 5 passwd GECOS Questo campo è opzionale e viene usato solo per fornire informazioni. Di solito contiene il nome per esteso dell'utente. GECOS sta per General Electric Comprehensive Operating System, (sistema operativo comprensivo della General Electric), ribattezzato GCOS quando la divisione grandi sistemi della GE fu venduta alla Honeywell. Dennis Ritchie riferì: «A volte dovevamo spedire una stampa o un gruppo di lavori alla macchina GCOS. Il campo del gcos nel file delle password era un posto in cui sbattere le informazioni per la $IDENTcard. Per niente elegante.» elenco delle password - /etc/shadow Per motivi di sicurezza le password degli utenti sono state spostate dal file /etc/passwd e inserite in un file apposito, /etc/shadow, che solo root può leggere. Anche questo file contiene informazioni in un formato analogo al precedente: 9 campi separati dal : 1. nome di login 2. password criptata 3. data dell'ultimo cambiamento di password Pag. 1 di 6
4. numero minimo di giorni richiesti tra un cambio di password e l'altro 5. numero massimo di giorni richiesti tra un cambio di password e l'altro 6. giorni di preavviso di scadenza della password (quanti giorni prima della scadenza deve comparire l'avviso di scadenza). 7. giorni di tolleranza oltre la scadenza della password 8. data di scadenza dell'account (espresso come giorni dal 1 gen 1970) 9. campo vuoto (non utilizzato) cat /etc/passwd grep sam sam:$6$2voqfwx...iaqpwzczmx0:14973:0:99999:7::: elenco dei gruppi - /etc/group stesso formato: 4 campi separati dal : 1. nome del gruppo 2. password (questo campo è normalmente vuoto) 3. GID 4. elenco utenti appartenenti al gruppo (separati da, senza spazi) man 5 group BACHI Come dice la man page 4.2BSD di initgroups(3): Sembra che nessuno tenga aggiornato /etc/group. elenco delle password dei gruppi - /etc/gshadow Anche se l'assegnamento di password per i gruppi non viene mai fatto, analogamente a quanto avviene per l'elenco degli utenti, esiste anche un elenco protetto dove registrare le password dei gruppi: /etc/gshadow). stesso formato del file: 4 campi separati dal : 1. nome del gruppo 2. password criptata (NS: Se la password è presente questa viene richiesta quando un utente di un altro gruppo sceglie di accedervi, con il comando newgrp) 3. amministratori (separati da virgola. NS. Questi sono gli utenti che possono decidere di cambiare la password di gruppo) 4. elenco utenti appartenenti al gruppo utenti e gruppi di sistema e non In ogni sistema Linux esistono utenti e gruppi di sistema, ovvero creati già dal sistema operativo in fase di installazione di nuovo software. Per convenzione questi utenti e gruppi di sistema hanno UID o GID inferiori a 500. L'utente root e il gruppo root hanno UID e GID 0. Pag. 2 di 6
7 comandi utili per gestire utenti e gruppi 1) aggiungere un utente: useradd -m nomeutente (system-config-user) 2) assegnare una password all'utente: passwd nomeutente 3) rimuovere un utente: userdel -r nomeutente 4) creare un nuovo gruppo: Graficamente tutti questi comandi si possono fare con l'interfaccia utenti e gruppi di Gnome groupadd nomegruppo NS. per assegnare una password al gruppo bisogna farlo a mano o in fase di creazione del gruppo indicando la password in forma già criptata. 5) cancellare un gruppo: groupdel nomegruppo: 6) aggiungere un utente ad un gruppo: gpasswd -a nomeutente nomegruppo 7) rimuovere un utente da un gruppo: gpasswd -d nomeutente nomegruppo NB è possibile gestire utenti e gruppi anche usando semplicemente un editor di testi, l'importante è non fare errori ed editare tutti i quattro file in maniera corretta e coerente. Per fare questo, sebbene sia possibile usare un qualsiasi editor, è consigliabile usare come editor: vipw (per i file delgi utenti) e vigr (per i file dei gruppi). Questi comandi evitano che qualcun'altro possa effettuare modifiche a file o gruppi mentre si stanno facendo modifiche direttamente ai file interessati. il gruppo wheel ( la casta) Storicamente tutti i sistemi BSD-Unix e derivati hanno un particolare gruppo di utenti, chiamato wheel. Il suo scopo era quello di indicare quali utenti potevano diventare root attraverso il comando su. Ovvero, solo coloro che appartenevano al gruppo wheel potevano usare su per diventare root. Questo ruolo storico di wheel non è mai stato rispettato nei sistemi Linux. Pag. 3 di 6
Colpa di Stallman. Nella documentazione del comando su si legge questo infatti: 23.6.1 Why GNU `su' does not support the `wheel' group ------------------------------------------------------ (This section is by Richard Stallman.) [...] However, occasionally the rulers do tell someone. Under the usual `su' mechanism, once someone learns the root password who sympathizes with the ordinary users, he or she can tell the rest. The "wheel group" feature would make this impossible, and thus cement the power of the rulers. I'm on the side of the masses, not that of the rulers. If you are used to supporting the bosses and sysadmins in whatever they do, you might find this idea strange at first. (gnome-control-center user-accounts) In un sistema Linux quindi chiunque può usare su per diventare root (sempre che conosca la password di root). Fedora ha deciso di assegnare tuttavia a wheel un ruolo preciso. In Fedora 15 wheel è il gruppo degli utenti amministratori. Coloro che appartengono a questo gruppo possono svolgere comandi di amministrazione attraverso il desktop Gnome, utilizzando la propria password invece che quella di root. il comando sudo ( Super User Do) Bug: 1) l'interfaccia grafica semplificata di gestione degli utenti di gnome Account utente non mostra in tempo reale le modifiche al gruppo wheel (ma le rispetta comunque: chi fa parte di wheel è amministratore comunque) 2) se ci sono piu amministratori policykit chiede la password solo dell'utente promosso amministratore per primo rispetto agli atri Mentre in Ubuntu gli utenti amministratori (in Ubuntu sono quelli che fanno parte del gruppo adm) possono usare il comando sudo per effettuare i comandi di amministrazione utilizzando la propria password, in Fedora, per fare la stessa cosa, occorre riconfigurare il comando sudo. Occorre modificare il file di configurazione di sudo: /etc/sudoers. Visto il delicato compito di questo file, per editarlo è possibile utilizzare al posto di un editor di testi qualsiasi, il comando visudo. visudo ## Allows people in group wheel to run all commands # %wheel ALL=(ALL) ALL É sufficiente decommentare la riga relativa a wheel. passare ad un nuovo utente (in console) su nomeutente su - nomeutente Pag. 4 di 6
passare ad un nuovo gruppo (in console) newgrp GRUPPO D: perchè passare ad un nuovo gruppo? R: Per accedere a file o cartelle ai quali non avrei avuto accesso altrimenti. D: cosa altro comporta passare ad un nuovo gruppo? R: Quando si crea un file nuovo questo sarà di proprietà dell'utente e del gruppo che si è in quel momento. NB! Ogni file o cartella in un filesystem Linux deve appartenere ad un utente e ad un gruppo. Si possono visualizzare queste informazioni con il comando: ls -l drwxr-x---. 2 root root 4096 12 lug 22.18 prova Gruppo Proprietario Utente Proprietario In un filesystem Linux ogni file o cartella deve appartenere ad un Utente e ad un Gruppo e deve indicare quali permessi di accesso hanno l'utente, i membri del gruppo e gli altri su di esso. I PERMESSI BASE IN UN SISTEMA LINUX principali permessi che si possono avere sui file Lettura, Scrittura, Esecuzione (rwx) principali permessi che si possono avere sulle directory Lettura, Scrittura, Attraversamento (rwx) a chi si applicano i permessi vengono distinti tre soggetti differenti: 1. l' UTENTE proprietario (si applica la prima terna di permessi) 2. i membri del GRUPPO proprietario (si applica la seconda terna di permessi) 3. tutti gli ALTRI (si applica la terza terna di permessi) Pag. 5 di 6
Come assegnare/cambiare i permessi (principali) il modo più rapido ma un po' più difficile da memorizzare è attraverso un codice ottale di 3 cifre da passare come argomento al comando chmod. Vediamo come: Ogni permesso ha un valore ottale (r) lettura = 4 (w) scrittura = 2 (x) esecuzione/attraversamento = 1 Con chmod si può impostare anche ulteriori permessi speciali, aggiungendo un ulteriore numero davanti al codice a 3 cifre visto per i permessti principali : es: chmod 1777 /tmp (s) Set UID = 4 (s) Set GID = 2 (t) Sticky-bit = 1 se si vuole dare permesso di lettura + scrittura + esecuzione, il codice numerico corrispondente è 4+2+1 ovvero 7. se si vuole dare permesso di sola lettura ed esecuzione, il codice corrispondente è 4 +1 ovvero 5. se non si vuole dare nessun permesso il codice corrispondente è 0 Per assegnare questi permessi visti qui sopra rispettivamente al proprietario, al gruppo e in via residuale a tutti gli altri, il codice ottale a 3 cifre corrispondente è dato dalla concatenazione dei 3 codici visti qui sopra, ovvero: 750 chmod 750 prova come assegnare/cambiare proprietario e gruppo ad un file o cartella Come detto, in fase di creazione di un file o cartella, in automatico viene assegnato un utente e un gruppo a quel file o cartella. Per cambiarli si usa il comando chown chown UTENTE.GRUPPO file il comando umask Ogni volta che si crea un file o cartella oltre all'assegnazione automatica di questi a un utente e ad un gruppo, vengono assegnati automaticamente anche dei permessi per i 3 soggetti visti sopra (utente,gruppo,altri). Questi permessi (standard) vengono decisi da un valore impostato con il comando umask (comando builtin) umask -S Per cambiare questi valori di default basta aggiungere come argomento i nuovi valori di default. es: umask -S u=rwx,g=rx,o= Fine lezione Pag. 6 di 6