Pages: [1]   Go Down
Print
Author Topic: ESERCIZI DI LABORATORIO SVOLTI  (Read 2738 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
winnie86
Apprendista Forumista
**
Offline Offline

Posts: 119



« on: 09-01-2009, 15:35:51 »

Salve a tutti...
avrei bisogno di una traccia da seguire per esercitarmi sul laboratorio...per caso qualcuno potrebbe postare qualche esempio svolto di esercizi dati precedentemente dal prof Toscano?
Ve ne sarei molto grata!!! testate
Logged
KingDavid
Forumista
***
Offline Offline

Posts: 788


Alla fine [...] tutta la realtà è binaria.


« Reply #1 on: 09-01-2009, 16:29:50 »

Salve a tutti...
avrei bisogno di una traccia da seguire per esercitarmi sul laboratorio...per caso qualcuno potrebbe postare qualche esempio svolto di esercizi dati precedentemente dal prof Toscano?
Ve ne sarei molto grata!!! testate

Code:
COMPITO 1

Esercizio 1_1:
Creare utente prova, Creare utente prova, gruppo primario users. Creare
utente modello, avente gruppo primario users, inizialmente bloccato.
Impostare una quota per l'utente modello a 12MB e 15MB sulle dimensioni
(supponendo blocchi da 1k) 10000 e 12000 inode (rispettivamente limiti soft e
hard), e utilizzare tale utente modello per impostare la quota all'utente prova.

---------comandi da shell---------

useradd -g users -p "prova" prova
#aggiunge l'utente prova nel gruppo(-g)users con password (-p) "prova"
useradd -g users -p "modello" modello
#aggiunge l'utente modello nel gruppo(-g)users con password (-p) "modello"

OPPURE INTERATTIVO
{
adduser --ingroup users prova
# aggiunge l'utente prova nel gruppo (--ingroup) users
adduser --ingroup users modello
# aggiunge l'utente modello nel gruppo (--ingroup) users
}

passwd -l modello # blocca l'utente modello senza modificare la password

quotatool -u modello -b -q 10000 -l 15000
# configura i blocchi (-b) dell'utente (-u) modello, soft (-q), hard (-l)
quotatool -u modello -i -q 10000 -l 12000
# configura gli inode (-i) dell'utente (-u) modello, soft (-q), hard (-l)

OPPURE INTERATTIVO
{
edquota modello

Filesystem block soft hard     inodes soft hard
/dev/sda2 12000 15000 10000 12000
}

OPPURE
{
# configura la quota dell'utente (-u) modello per tutti i filesystem (-a)
setquota -u modello 12000 15000 10000 12000 -a
    #    soft  hard  soft  hard
    # block       inode
}

edquota -p modello prova
# configura la quota dell'utente prova come quella dell'utente modello







Esercizio 1_2:
Creare uno script NON INTERATTIVO che:
- prende in input un file contente un elenco di file, ed il nome di un gruppo;
- per ognuno dei file specificati, se non è un file speciale (cioè è un file o
cartella), imposta il gruppo del file al nome di gruppo specificato come
parametro (se è una cartella, ricorsivamente sui file contenuti).

---------SCRIPT esercizio1_2.sh---------

#!/bin/bash

# se il numero di parametri é diverso da 2 entra nell'if
if ! test $# -eq 2
then
echo "numero di parametri errati"
exit 1;
fi

# se il primo parametro non é un file esistente entra nell'if
if ! test -e $1
then
echo "file mancante"
exit 2;
fi

# esegue il for per ogni file dell'elenco del primo parametro
for file in `cat $1`
do
dettaglio=`ls -ld $file`
# fa ls di un file per volta e salva l'output nella variabile dettaglio
echo $dettaglio
# test se il file è una cartella (d) o un file semplice (-)
# ${dett:0:1} prende 1 carattere a partire dall'indice 0
if (test ${dett:0:1}=='d') || (test ${dett:0:1}=='-')
then
chgrp -R $2 $file
# imposta ricorsivamente (-R) al file (cartella) $file il gruppo $2
fi
done

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

Esercizio 1_3:
Configurare cron perchè, ogni 10 minuti, tra le 8 e le 17, tra lunedì e venerdì,
invii un segnale al demone syslog (facility local1, livello notice) un messaggio,se nel sistema é presente (== ha effettuato il login) più di un utente (suggerimento: si potrebbe usare i comandi who e wc, e magari il loro
output...).

---------SCRIPT esercizio1_3.sh---------

#!/bin/bash

# conta il numero di utenti connessi
utenti = `who | grep -c tty`

# se il numero di utenti é diverso da 1 entra nell'if
if ! test $utenti -eq 1
then
# invia il messaggio "utenti loggati $utenti" a syslog
`logger -p local1.notice -t "utenti loggati" "$utenti"`
fi

---------MODIFICA crontab---------

*/10 8-17 * * 1-5 root /usr/local/bin/esercizio1_3.sh
# dal lunedi al venerdì ogni 10 minuti dalle 8 alle 17
# esegue il comando /usr/local/bin/esercizio1_3.sh



COMPITO 2

Esercizio 2_1:
Creare utente prova, avente come gruppo primario users, facente parte del gruppo audio e video, con password - prova, inizialmente bloccato.
Configurare sudo perchè l'utente prova possa riavviare (opzione reload, sistema System V) il servizio apache.

---------comandi da shell---------

adduser --ingroup users prova
addgroup prova audio
addgroup prova video
passwd -l prova

---------modifiche nel file sudoers---------
# PER MODIFICARE SUDOERS USARE VISUDO
# configura sudo affinché l'utente prova possa riavviare apache
prova ALL=/etc/init.d/apache reload

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

Esercizio 2_2:
Creare uno script NON INTERATTIVO che:
- prende in input un file contente un elenco di file _e_ il nome di un file;
- per ognuno dei file indicati,
- se non é un file speciale (cioé é un file o cartella), se é presente nel sistema ed é più recente del file specificato come secondo parametro, inseriscine il nome in /var/backups/modified.txt

---------SCRIPT esercizio2_2.sh---------

#!/bin/bash

if ! test $# -eq 2
then
echo "parametri errati"
exit 1;
fi

if ! test -e $1
then
echo "file del primo parametro inesistente"
exit 2;
fi

if ! test -e $2
then
echo "file del secondo parametro inesistente"
exit 2;
fi
echo "" > modified.txt
for file in `cat $1`
do
dettaglio=`ls -ld $file`
if (test ${dettaglio:0:1}=='d' || test ${dettaglio:0:1}=='-') && (test $file -nt $2)
then
echo $dettaglio >> modified.txt
fi
done

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

Esercizio 2_3:
Configurare cron perché, ogni 30 minuti, tre le 8 e le 17 tra lun e ven, se
presente il file /var/tmp/deleteme rimuove tutti i file il cui nome inizia per X
presenti in /var/tmp (oltre a /var/tmp/deleteme).

---------SCRIPT esercizio2_3.sh---------

#!/bin/bash

if test -e /var/tmp/deleteme
then
`rm /var/tmp/X*`
fi

---------MODIFICA crontab---------

*/30 8-17 * * 1-5 root /usr/local/bin/esercizio2_3.sh

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

COMPITO 3

Esercizio 3_1:
Creare due utenti: foo e bar , aventi gruppo primario users, password "test".
Creare una directory leggimi nella directory personale di foo; tale directory deve essere (ovviamente) di proprietà (utente e gruppo) di foo, ed accessibile solo a quest'ultimo.
Tramite ACL posix renderla accessibile e attraversabile per l'utente bar.

---------comandi da shell---------

sudo adduser --ingroup users foo
sudo adduser --ingroup users bar
sudo mkdir /home/foo/leggimi
sudo chown foo.users /home/foo/leggimi

setfacl -m u:bar:x /home/foo/leggimi

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

Esercizio 3_2:
Creare uno script NON INTERATTIVO che:
- Prende in input (il percorso di) una directory, (il percorso di) un file e un valore numerico.
- per ognuno dei file contenuti nella directory (non ricorsivamente), se sono stati creati prima del file e sono più piccoli della dimensione specificata, rimuovili.

---------SCRIPT esercizio3_2.sh---------

#!/bin/bash

if ! test $# -eq 3
then
echo "ERRORE!!!! --> Usare ./esercizio3_2 percorsoCartella percorsoFile dimensione"
exit 1;
fi

if ! test -d $1
then
echo "Il primo parametro deve essere il percorso di una cartella"
exit 2;
fi

if ! test -e $2
then
echo "Il secondo parametro deve essere il percorso di un file"
exit 3;
fi

if ! test $3 -gt 0
then
echo "Il terzo parametro deve essere un valore numerico"
exit 4;
fi

for file in `ls -1 $1`
do
dimensione=`ls -1ds $1/$file | cut -d ' ' -f1`

if (test $1/$file -nt $2) && (test $dimensione -lt $3)
then
`rm $1/$file`
fi
done
--------------------------------------------------------------------------------

Esercizio 3_3:
Configurare il demone cron perché, ogni due giorni, alle 5, se esiste l'opzione check in /etc/default/checkuser ed esiste ed é eseguibile il file /usr/local/bin/localcheck, lo esegue.
NB. L'output del programma chiamato va scartato.

---------SCRIPT esercizio3_3.sh---------

#!/bin/bash

if ! test -e /etc/default/checkuser
then
echo "file non esiste"
exit 1
fi

if test -z `cat /etc/default/checkuser | grep check`
then
echo "file é vuoto"
exit 2
fi

if ! test -e /usr/local/bin/localcheck
then
echo "localcheck non esiste"
exit 3
fi

var=`ls -l /usr/local/bin/localcheck`

if test ${var:3:1} == 'x'
then
/usr/local/bin/localcheck &>/dev/null
fi

---------MODIFICA crontab---------

00 5 */2 * * root /usr/local/bin/esercizio3_3.sh


COMPITO 4

Esercizio 4_1:
Creare due utenti alice e bob, aventi gruppo primario users password test (gli utenti devono avere la propria cartella personale, ovviamente di loro proprietà)
Configurare sudo in modo che gli utenti facenti parte dell'alias gestione possano creare nuovi utenti ed inserire alice e bob tra gli utenti di tale alias

---------comandi da shell---------

useradd -g users -s /bin/bash -m alice
useradd -g users -s /bin/bash -m bob
passwd alice
passwd bob

---------modificare /etc/sudoers tramite visudo---------

visudo
(spostarsi con h j k l per scrivere premere i, per tornare in modalità comando premere ESC, per salvare da modalità comando premere : per salvare ed uscire scrivere wq e premere INVIO)
User_Alias GESTIONE=alice,bob
Cmnd_Alias USERADD=/usr/sbin/useradd, /usr/sbin/userdel, /usr/sbin/usermod

GESTIONE ALL=NOPASSWD: USERADD

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

Esercizio 4_2:
Creare uno script NON INTERATTIVO che:
- Prende in input il nome di un programma (1) ed un valore numerico (2)
- controlla la presenza in memoria del programma (1) a intervalli di tempo pari al valore numerico (2). Se il programma viene trovato in memoria per 5 intervalli temporali consecutivi, lo uccide.

---------SCRIPT esercizio4_2.sh---------

#!/bin/bash

if ! test $# -eq 2
then
echo "numero di parametri errato"
exit 1
fi

for ciclo in 1 2 3 4 5
do
programmi=`ps -A | grep -c $1`
if ! test $programmi -eq 0
then
echo "ciclo $ciclo"
sleep $2
else
exit 2
fi
done

dettaglio=`ps -A | grep $1`
`kill ${dettaglio:1:4}`

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



Esercizio 4_3:
Configurare cron perché, ogni lunedì alle 18:00, se esiste il file /var/lib/runit.txt allora lo rimuove, riavvia il demone apache e invia un segnale al demone syslog, facility local0, livello info.

---------SCRIPT esercizio3_3.sh---------

#!/bin/bash

if test -e /var/lib/runit.txt
then
        rm /var/lib/runit.txt
        /etc/init.d/apache reload
        logger -p local0.info -t "File /var/lib/runit.txt eliminato" "demone apache riavviato"
fi

---------MODIFICA crontab---------

00 18 * * 1 root /usr/local/bin/esercizio4_3.sh

Logged

Basti pensare che un ipotetico quadrato di specchi, lungo 200 chilometri per ogni lato, potrebbe produrre tutta l'energia necessaria all'intero pianeta.
(Carlo Rubbia)
winnie86
Apprendista Forumista
**
Offline Offline

Posts: 119



« Reply #2 on: 09-01-2009, 17:30:54 »

Grazie mille...troppo gentile!!!
Logged
KingDavid
Forumista
***
Offline Offline

Posts: 788


Alla fine [...] tutta la realtà è binaria.


« Reply #3 on: 09-01-2009, 18:09:07 »

Grazie mille...troppo gentile!!!
Logged

Basti pensare che un ipotetico quadrato di specchi, lungo 200 chilometri per ogni lato, potrebbe produrre tutta l'energia necessaria all'intero pianeta.
(Carlo Rubbia)
winnie86
Apprendista Forumista
**
Offline Offline

Posts: 119



« Reply #4 on: 10-01-2009, 17:59:54 »

Ciao a tutti...scusate...siccome ho provato diversi metodi per abilitare la gestione delle quote su ubuntu...ma nessuno sembra funzionare...qualcuno può darmi qualche consiglio su cosa fare per installare il pacchetto?!?Please....!!!
Logged
ɹǝǝuıƃuǝsɹǝʌǝɹ
Administrator
God of the Forum
*****
Offline Offline

Gender: Male
Posts: 4.467


Più grande è la lotta, e più è glorioso il trionfo


WWW
« Reply #5 on: 10-01-2009, 18:23:22 »

Quello che serve sapere per superare l'esame non è la gestione delle quote di una particolare distribuzione Linux, ma la gestione delle quote secondo come è stato spiegato nelle slides.
 .
Logged

La grande marcia della distruzione mentale proseguirà. Tutto verrà negato. Tutto diventerà un credo. È un atteggiamento ragionevole negare l'esistenza delle pietre sulla strada; sarà un dogma religioso affermarla. È una tesi razionale pensare di vivere tutti in un sogno; sarà un esempio di saggezza mistica affermare che siamo tutti svegli. Accenderemo fuochi per testimoniare che due più due fa quattro. Sguaineremo spade per dimostrare che le foglie sono verdi in estate. Non ci resterà quindi che difendere non solo le incredibili virtù e saggezze della vita umana, ma qualcosa di ancora più incredibile: questo immenso, impossibile universo che ci guarda dritto negli occhi. Combatteremo per i prodigi visibili come se fossero invisibili. Guarderemo l'erba e i cieli impossibili con uno strano coraggio. Saremo tra coloro che hanno visto eppure hanno creduto.

In tutto, amare e servire.

  
                            ن                           
I can deal with ads,
I can deal with buffer,
but when ads buffer
I suffer...

...nutrimi, o Signore, "con il pane delle lacrime; dammi, nelle lacrime, copiosa bevanda...

   YouTube 9GAG    anobii  S  Steam T.B.o.I. Wiki [univ] Lezioni private  ʼ  Albo d'Ateneo Unicode 3.0.1
Usa "Search" prima di aprire un post - Scrivi sempre nella sezione giusta - Non spammare - Rispetta gli altri utenti - E ricorda di seguire il Regolamento
winnie86
Apprendista Forumista
**
Offline Offline

Posts: 119



« Reply #6 on: 10-01-2009, 18:32:06 »

emh...forse mi sono espressa un pò male...non mi funziona nessun comando per l'assegnazione delle quote (es:edquota,...)...cosa dovrei fare?
Logged
ɹǝǝuıƃuǝsɹǝʌǝɹ
Administrator
God of the Forum
*****
Offline Offline

Gender: Male
Posts: 4.467


Più grande è la lotta, e più è glorioso il trionfo


WWW
« Reply #7 on: 10-01-2009, 18:57:05 »

Controlla se hai abilitato le quote del filesystem, come spiegato nel file della Lezione 5 (file), pag. 19 e successive:
Quote
Per attivare: aggiungere le opzioni usrquota e/
o grpquota (rispettivamente per attivare la
quota sugli utenti e sui gruppi) nel file fstab.

In ogni caso, che errore ti da in output il programma che stai eseguendo e che programma stai eseguendo?
 
Logged

La grande marcia della distruzione mentale proseguirà. Tutto verrà negato. Tutto diventerà un credo. È un atteggiamento ragionevole negare l'esistenza delle pietre sulla strada; sarà un dogma religioso affermarla. È una tesi razionale pensare di vivere tutti in un sogno; sarà un esempio di saggezza mistica affermare che siamo tutti svegli. Accenderemo fuochi per testimoniare che due più due fa quattro. Sguaineremo spade per dimostrare che le foglie sono verdi in estate. Non ci resterà quindi che difendere non solo le incredibili virtù e saggezze della vita umana, ma qualcosa di ancora più incredibile: questo immenso, impossibile universo che ci guarda dritto negli occhi. Combatteremo per i prodigi visibili come se fossero invisibili. Guarderemo l'erba e i cieli impossibili con uno strano coraggio. Saremo tra coloro che hanno visto eppure hanno creduto.

In tutto, amare e servire.

  
                            ن                           
I can deal with ads,
I can deal with buffer,
but when ads buffer
I suffer...

...nutrimi, o Signore, "con il pane delle lacrime; dammi, nelle lacrime, copiosa bevanda...

   YouTube 9GAG    anobii  S  Steam T.B.o.I. Wiki [univ] Lezioni private  ʼ  Albo d'Ateneo Unicode 3.0.1
Usa "Search" prima di aprire un post - Scrivi sempre nella sezione giusta - Non spammare - Rispetta gli altri utenti - E ricorda di seguire il Regolamento
winnie86
Apprendista Forumista
**
Offline Offline

Posts: 119



« Reply #8 on: 26-01-2009, 19:11:39 »

Ciao a tutti...ho provato a svolgere gli esercizi di lab dati da Toscano in passato...e a parte quelli simili agli es svolti gentilmente da KingDavid...ho riscontrato difficoltà in alcuni punti di diversi esercizi...per i quali ho trovato (bene o male) le soluzioni nelle slides e in altre risorse!!L'unico per il quale non ho trovato nulla per ora è:

Esercizio:
Configurare syslog perché i messaggi della facility local3, di livello info e
notice (e solo questi) vadano nel file /var/log/local3.log, mentre tutti quelli dal
livello notice al livello emerg di qualsiasi facility siano rediretti su
/var/log/mylog.log.
Configurare logrotate perché gestisca questi file, in modo che, in entrambi i
casi, vengano preservati 5 file di rotate, e la rotazione avvenga
settimanalmente.

Potete aiutarmi a svolgerlo?
Inoltre...qualcuno sa dirmi perchè quando imposto qualche azione in crontab nn viene svolta?
« Last Edit: 27-01-2009, 12:59:25 by winnie86 » Logged
winnie86
Apprendista Forumista
**
Offline Offline

Posts: 119



« Reply #9 on: 28-01-2009, 13:40:18 »

Ciao a tutti...forse ho trovato la soluzione all'esercizio che ho postato prima...posto qui la mia soluzione:

Per configurare syslog perché i messaggi della facility local3, di livello info e
notice (e solo questi) vadano nel file /var/log/local3.log, mentre tutti quelli dal
livello notice al livello emerg di qualsiasi facility siano rediretti su
/var/log/mylog.log.

Ho pensato che bisogna aggiungere in /etc/syslog.conf le seguenti righe:

local3.=info;local3.=notice >  /var/log/local3.log
*.notice > /var/log/mylog.log

Invece per configurare logrotate perché gestisca questi file, in modo che, in entrambi i
casi, vengano preservati 5 file di rotate, e la rotazione avvenga
settimanalmente.
 Secondo me si deve inserire in /etc/logrotate.conf:

/var/log/local3.log{
   weekly
   rotate 5 (non so se va bene)
}
/var/log/mylog.log{
   weekly
   rotate 5 (non so se va bene)
}

Per favore...qualcuno può dirmi se sono giusti??? pray
Logged
Pages: [1]   Go Up
Print
Jump to: