-
Gfxboot con GRUB (SuSE-like)
Visto che a molti non piace avere il classico grub (bianco su nero), e l'idea di avere un'immagine di sfondo limitata ad una manciata di colori non è proponibile, ho cercato il modo per avere un grub simile a quello di (Open)SuSE: animazioni (o solo anche immagini migliori) per la scelta del S.O.
by Enrico Bassetti - http://www.enricobassetti.altervista.org/guide/gfxgrub.php
Indice:
Iniziare: materiale occorrente
Servono prima di tutto:
Installazione
Per prima cosa rimuoviamo grub senza toccare le configurazioni, con il comando:
apt-get remove grub
(lo so, può sembrare una cretinata ma leggendo di seguito vi accorgerete del perché)
Quindi installare il pacchetto .deb scaricato:
dpkg -i grub-gfxboot.deb
E quindi copiare il file message.suse dentro /boot/grub/:
cp message.suse /boot/grub/
Modificare il file /boot/grub/menu.lst aggiungendo:
gfxmenu /boot/grub/message.suse
Infine possiamo dare (sostituendo /dev/hda con il dispositivo di boot):
grub-install /dev/hda
Personalizzazione del tema
Inanzitutto estraiamo il message.suse (conviene creare una cartella temporanea per questo scopo):
cpio -i < /boot/grub/message.suse
Quindi modifichiamo i file e poi diamo:
sudo ls . |cpio -o > /boot/grub/message.new
E modifichiamo il file /boot/grub/menu.lst per rispecchiare il cambiamento (sostituiamo message.suse con message.new)
Temi già pronti e crediti
Qui potete trovare l'howto in inglese (da cui ho preso spunto) e una lista di temi già pronti: http://ubuntuforums.org/showthread.php?t=208855
-
Creare un mirror locale - Debian & derivati
In questo (mini)-howto descriverò "come fare" per creare un mirror locale dopo una breve riflessione sull'effettiva convenienza.
by Enrico Bassetti - http://www.enricobassetti.altervista.org/guide/apt-mirror.php
Indice: Prerequisiti
Con i sistemi debian-based basta fare:
$ apt-get install apt-mirror
che siamo in pista; tuttavia se dobbiamo creare un mirror usando un'altra distribuzione possiamo scaricare il pacchetto sorgente da qui (compatibile con tutti i sistemi con wget e perl, quindi anche CygWin.
Mirror locale: vantaggi e svantaggi
Perché creare un mirror locale? innanzitutto dobbiamo distinguere due fasce di utenti:
- l'utente casalingo
- l'utente "professionale" (aka: sysadmin in azienda, tecnico in qualche negozio, LUG, ecc.)
Per la prima tipologia non è assolutamente necessario creare un mirror locale, anche se il parco macchine è abbastanza "ampio". Difatti un mirror comincia a diventare conveniente quando hai la possibilità di condividere la connettività oppure hai internamente un parco macchine con linux che necessita aggiornamenti continui. In questo caso risulta conveniente infatti far scaricare ad un solo PC i pacchetti, e poi i computer li aggiorneranno automaticamente (o semi-automaticamente, a seconda delle impostazioni) senza occupare banda sulla connessione ad internet. Può essere particolarmente utile negli ambienti di test, dove la macchina viene reinstallata diverse volte, oppure in ambienti di "riparazione", dove è necessario aggiornare/reinstallare la macchina ex-novo: la possibilità di un mirror locale velocizza le operazioni di aggiornamento riducendo il tempo al solo spacchettamento e posizionamento dei file sul PC.
Lista repository
Il file di configurazione di apt-mirror si trova alla locazione /etc/apt/mirror.list (nei sistemi debian[-based]) oppure nella directory di esecuzione (nel caso del sorgente). Un mirror.list per i sistemi Ubuntu (versione 7.10 gutsy) può essere:
############# config ################## # set base_path /media/hdd1/apt-mirror/ # # if you change the base path you must create the directories below with write privlages # # set mirror_path $base_path/mirror # set skel_path $base_path/skel # set var_path $base_path/var # set cleanscript $var_path/clean.sh # set defaultarch
set nthreads 10 set tilde 0 # ############# end config ############## -
SSH Chrooted
In questo howto esploreremo una delle possibilità di chroot di ssh, ovvero come restringere l'utente alla sua home, creando una fake root.
by Enrico Bassetti - http://www.enricobassetti.altervista.org/guide/ssh_chrooted.php
Prerequisiti
Inanzitutto dobbiamo avere installato OpenSSH, pam (quasi sempre incluso nelle distro), una particolare libreria di pam, chiamata libpam-chroot e makejail (per la fake root). Quindi possiamo dare (considerando che pam sia già installato):
$ apt-get install openssh-server openssh-client libpam-chroot makejail
Creazione utente
In questo caso utilizzerò la home dell'utente per la sua fake root, però si può usare anche un'altra cartella. Creo quindi l'utente:
$ adduser pippo
Rispondendo alle varie domande. Mi posiziono in /home e creo il file di descrizione di makejail, che chiamerò utente.py (uno script python):
#################################################
#
# Simple MakeJail Configuration file
#
#################################################
# Destination Dir of the Jail
chroot="/home/pippo"
# Commands that will be tested inside jail
#testCommandsInsideJail=["","",""]
testCommandsInsideJail=["bash ","ls","cd","dir"
"tar","gzip","gunzip",
"cat","less","vi","echo",
"chmod","chown","chgrp",
"dd","cp","mv","grep",
"kill","ln","mkdir","ps",
"pwd","rm","rmdir","sleep",
"touch","true",
"find","diff",
"env","id",
"scp"]
# Name of backgound processes (if any) as in ps
#processNames=["","",""]
# Commands that shound interact with demons inside
# the jail from outside the jail
#testCommandsOutsideJail=["","",""]
# Files that MUST NOT be copied
#doNotCopy=["","",""]
# Files that NUST be copied
#forceCopy=["","",""]
forceCopy=["/etc/shells", "/etc/nologin","/etc/environment",
"/etc/hosts*","/etc/ssh*",
"/bin/*sh", "/lib/libnss*",
"/dev/tty[0-9]*", "/lib/ld-linux.so.2", "/usr/bin/dircolors"]
# Do not delete anything from the followind dir
preserve=["/dev", "/lib", "/etc", "/home", "/var"]Basato su quello presente al link in fondo pagina Possiamo personalizzare i programmi da inserire, o se vogliamo possiamo fagli copiare alcuni files. Ora per creare la fake root diamo il comando:
$ makejail utente.py
E' importante che questo comando sia dato come utente root, o, in alternativa, con sudo.
Ora che abbiamo la home dell'utente, dobbiamo dire a pam di usare questa come fake root.
Configurazione PAM
Come dire a pam di usare la libreria libpam-chroot ? Semplice: per prima cosa modifichiamo il file /etc/pam.d/ssh aggiungendo la riga:
session required pam_chroot.so
Ora però dobbiamo dirgli dov'è la fake root: modifichiamo quindi il file /etc/security/chroot.conf aggiungendo:
pippo /home/pippo
Spiegazione: il primo parametro è il nome utente, e il secondo invece è il path della fake root (io ho usato la home, ma può anche essere un'altra).
Il file /etc/passwd, la home e il completamento bash
Purtroppo makejail non crea un esatto /etc/passwd nella fake root, utile al sistema per identificare l'utente dopo il login. Questo non vuol dire che l'utente non si possa loggare, ma che non venga riconosciuto da bash. Inoltre scp delle volte fa storie. La soluzione è creare un fake /etc/passwd prendendo spunto da quello del server reale e togliendo tutti gli altri utenti. E' importante che l'uid e il gid siano uguali a quelli reali per far funzionare scp.
Si può usare il seguente comando:
$ echo `cat /etc/passwd | grep pippo:` > /home/pippo/etc/passwd
Sostituendo pippo al vostro nome utente, lasciando i due punti dopo il nome utente.
Un'altra cosa che non crea è la home...va creata manualmente, sia la cartella /home che /home/nomeutente (entrambe nella fake root)
Inoltre, per rendere la shell bash più "carina" e funzionale, si possono prendere i tre file .bash* da /etc/skel (del pc reale) e piazzarli nella /root e nella home directory della fake root.
Più avanti aggiungerò uno script che sto testando...
Problema frequente: applicativo no such file or directory
Utilizzando makejail potrebbe capitarvi di avere qualche programma (a me è successo con la shell bash) che non funziona, o meglio, quando si tenta di eseguirlo nella fake root restituisce l'errore no such file or directory, ad esempio:
$ chroot /home/pippo/
/bin/bash: no such file or directory
$ _Questo molte volte è causato dalla mancanza di librerie: usate il tool ldd per trovare le librerie da cui dipende il programma e copiatelo manualmente (oppure inseritelo nello script del makejail sulla variabile forceCopy).
Generalmente quando non funzionano restituiscono questo errore, ma potrebbero anche dirvi altro. Una controllata a ldd e la cartella /lib della fake root non è una cattiva idea.
Problema comune: errore copia tty(s) varie
L'errore sorge perché si usa una versione di stat che non si interfaccia bene con makejail. Nella nuova versione infatti alla fine della riga viene messo un ritorno a capo, che nelle vecchie versioni mancava. Questo basta per impedire a makejail di vedere il risultato delle vecchie versioni. A me è successo con la versione 5.93 di stat. Nella versione di un altro mio pc, 5.97, il problema non c'era. Per vedere la versione:
stat --version
Provate ad eseguire
stat -t -c "%t %T" /dev/tty8
e se sulla stessa riga del risultato appare il prompt (nomeutente@pc:$_) allora è la versione vecchia.
Modificando /usr/sbin/makejail alla riga 276 c'è il comando stat che si presenta in questo modo:
return map(lambda h: int(h,16),execute('stat -t -c "%%t %%T" %s' % fileName)[0].split())Per fixare basta aggiungere \\n dopo %T, come nell'esempio:
return map(lambda h: int(h,16),execute('stat -t -c "%%t %%T\\n" %s' % fileName)[0].split())Crediti
Ho preso liberamente spunto da http://www.emcy.it/wiki/doku.php?id=tips:ssh_con_chroot per fare questi script. Sono molto simili ma quelli del sito non funzionavano sul mio server Ubuntu Linux Server 6.10, quindi ho deciso di pubblicare una versione fixata e completa (nel senso che questa su macchine dove quella bacata funziona, anche questa funziona ;-) )
subscribe via RSS