Lezione 4
Transcript
Lezione 4
Un approccio pratico alla gestione degli utenti e dei permessi nei sistemi UNIX Marco Bellaccini LSS Evangelista Torricelli Corso di Linux LINUX E' UN SISTEMA MULTIUTENTE: -utente root (superuser) -utenti normali IN LINUX ESISTONO I “GRUPPI DI UTENTI”. gli utenti dello stesso gruppo hanno delle “affinità” IN LINUX I FILE HANNO ALCUNI “ATTRIBUTI”: lettura – scrittura – esecuzione IN LINUX I FILE HANNO UN PROPRIETARIO, libero di decidere tutto su di essi. IN LINUX I FILE HANNO UN GRUPPO DI APPARTENENZA (ma su questo torneremo in seguito) Root – Fa attività di manutenzione della macchina, installa e rimuove il software. Ma a noi interessa questo: – – – – Amministra gli utenti: li crea, li elimina, ne cambia le password. Amministra i gruppi: li crea, li elimina, aggiunge/toglie gli utenti da essi Accede a tutto. Legge, scrive ed esegue ciò che vuole. Può modificare gli attributi di tutti i file e le directory del sistema (anche quelli non suoi). Normali utenti – Non possono toccare nulla che non gli sia esplicitamente consentito toccare. In particolare: – – – Non amministrano nessun utente (tranne – e nemmeno del tutto – loro stessi). Solitamente possono solo leggere ciò che è al di fuori della loro Home Directory (la cartella di stretta proprietà di ogni utente). Possono modificare soltanto gli attributi dei loro file e delle loro directory. Il file passwd – – – – – Contiene le informazioni su root e tutti gli utenti. Associa ad ogni utente un numero (UID) e il “gruppo di login” al quale appartiene Normalmente solo root lo può modificare. E' modificabile a mano ma ci sono modi più facili per lavorare sugli utenti. Non contiene (attualmente) le password degli utenti. Il file shadow – – Contiene le password criptate di tutti gli utenti (anche root). Un normale utente non lo può nemmeno leggere, solo root lo può modificare Il file group – – – Contiene i nomi di tutti gruppi e degli utenti che ne fanno parte. Associa ad ogni gruppo un numero (GID) Solo root lo può modificare. Un brusco approccio alla shell Comando shell: comando -opzione1 -opzione2 ... argomento COSA USEREMO (O COMUNQUE E' BENE SAPERE): “pwd” ci dice in quale cartella ci troviamo “cd una/qualche/cartella” serve a cambiare directory, ci permette di entrare in una cartella diversa da quella dove attualmente ci troviamo. “ls -l” mostra una lista dei file e delle sotto-directory di una cartella, corredata da attributi, proprietario, gruppo e molte altre informazioni su ogni elemento. “chown (-R) nuovoutente fileocartella” cambia (ricorsivamente) il proprietario di uno o più file e cartelle “chgrp (-R) nuovogruppo fileocartella” cambia (ricorsivamente) il gruppo di uno o più file e cartelle “adduser utente” crea un nuovo utente (e la sua home directory) “deluser utente” cancella un utente “groupadd gruppo” crea un nuovo gruppo “groupdel gruppo” cancella un gruppo “gpasswd -a utente gruppo” aggiunge un utente ad un gruppo “gpasswd -d utente gruppo” rimuove un utente da un gruppo “su nomeutente” ci permette di cambiare utente “whoami” stampa a schermo il nostro nome utente “groups” elenca i gruppi dei quali un utente fa parte “passwd utente” cambia la password di un utente (se non siamo root solo la nostra) “touch nomefile” crea il file “nomefile” “mkdir cart” crea la directory “cart” “cat foo” stampa a schermo il contenuto del file “foo” “mv fileocart nuovoposto” sposta file o cartelle, usato anche per rinominare “cp (-r) fileocart nuovoposto” copia (ricorsivamente) file o cartelle “rm (-r) fileocartella” cancella (ricorsivamente) file e cartelle “exit” permette il logout dell'utente “chmod [OPZIONI] fileocartella” cambia gli attributi di file e cartelle OPZIONI DI CHMOD LIVELLO PERMESSI 0 nessun privilegio 1 esecuzione 2 scrittura 3 scrittura + esecuzione 4 lettura 5 lettura + esecuzione 6 lettura + scrittura 7 lettura + scrittura + esecuzione Esempio: chmod 734 pippo 7:permette al padrone di “pippo” di leggerlo, modificarlo ed eseguirlo. 3:permette agli utenti del gruppo assegnato a “pippo” di modificarlo ed eseguirlo. 4:chiunque altro può solo leggerlo Un problema (sur)reale Siamo gli amministratori di una macchina, avente come utenti 3 cuochi: - 2 italiani - 1 francese I cuochi italiani provengono da due diverse città: c'è un cuoco romano e uno milanese. Ogni cuoco vuole avere una Home directory dove memorizzare le ricette. Tuttavia: – i 2 cuochi italiani non vogliono che il francese scopra le ricette segrete delle pizze, vogliono essere i soli a poterle leggere e modificare – il cuoco romano vuole permettere a quello milanese di leggere la ricetta della carbonara, ma non di modificarla Svolgimento: Apriamo l'emulatore di terminale e passiamo all'utente root: su root Ora creiamo gli utenti: adduser romano adduser milanese adduser luis poi creiamo i gruppi “italiani” e “francesi”: groupadd italiani groupadd francesi adesso aggiungiamo il romano e il milanese al gruppo “italiani” ed il francese al gruppo “francesi” gpasswd -a romano italiani gpasswd -a milanese italiani gpasswd -a luis francesi ora creiamo una cartella per gli italiani mkdir /home/ita chgrp italiani /home/ita entriamo della cartella /home ed osserviamo la lista dei file: cd /home ls -l permettiamo agli utenti dei gruppi italiani e francesi di scrivere (ed eseguire) nelle cartelle appena create, agli altri permettiamo solo la lettura: chmod 774 ita controlliamo come sono cambiati gli attributi dei file: ls -l Ora facciamo il logout e chiudiamo la sessione di lavoro di root: exit ora cambiamo utente (diventiamo “romano” - su romano) e “chiediamo” in quale directory ci troviamo e di che gruppi facciamo parte: pwd groups creiamo la cartella delle pizze in “ita” ed entriamoci: mkdir /home/ita/pizze cd /home/ita/pizze facciamo la pizza margherita touch margherita impediamo al francese l'accesso alla cartella delle pizze ed alle loro ricette: chmod -R 770 /home/ita/pizze creiamo la “carbonara”: cd ../ touch carbonara impediamo a tutti i tranne che a noi romani di modificarla: chmod 744 carbonara infine usciamo: exit Ora facciamo un paio di test “di resistenza”. Diventiamo “luis”. su luis Tentiamo poi di vedere che pizze si fanno in italia: ls /home/ita/pizze Una volta fallito il tentativo, usciamo e rientriamo come milanese (su milanese). Successivamente proviamo a cancellare la ricetta della carbonara: rm /home/ita/carbonara Abbiamo fallito ancora! Usciamo e rientriamo come root. eliminiamo gli utenti creati: deluser romano deluser milanese deluser luis eliminiamo le cartelle degli utenti e “ita”: rm rm rm rm -r -r -r -r /home/ita /home/romano /home/milanese /home/luis cancelliamo i gruppi “italiani” e “francesi”: groupdel italiani groupdel francesi