Configurazioni di un sistema Debian

Da Linux User Group Scandiano.

Questo spazio è dedicato a varie configurazioni di un sistema Debian e derivate

Conoscere la versione di Debian che stiamo utilizzando

Per conoscere la versione basta guardare nei repository oppure nel file:

/etc/debian_version

oppure lanciare il comando:

lsb_release -c

Trovare il MAC address durante l'installazione

Spesso può servirci sapere il mac address di un PC per essere registrato sul DHCP e procedere con l'installazione via rete, ad esempio con "net install" dove è fondamentale che il computer sia connesso a internet. Per fare questo ci basta eseguire una shell dal menù principale dell'installatore e dare questo comando:

ip link show eth0

Nel caso in cui la nostra interfaccia sia eth0: per vedere l'interfaccia possiamo lanciare questo comando:

cat /etc/network/devnames

Aggiornamento automatico dell'orario

Per aggiornare automaticamente l'ora possiamo usare il servizio NTP, configurare appositamente il gestore grafico dell'ora se lo permette o usare il comando rdate dopo averlo installato. Ecco un esempio del suo utilizzo:

rdate time.ien.it

Attenzione che non tutti i server NTP supportano rdate dato che è dichiarato obsoleto rispetto a NTP: a volte però è da preferire in quanto più leggero. Possiamo inserire questo comando dentro al file /etc/rc.local in modo che all'avvio aggiorni l'ora:

rdate time.ien.it
exit 0

Aggiungere utenti a sudo

Con questo comando abilitiamo l'utente pippo ad utilizzare sudo:

adduser pippo sudo

Possiamo anche semplicemente aggiungere l'utente nel file /etc/group a fianco della riga contenente sudo, come in questo esempio:

sudo:x:27:pippo

Eseguire comandi "root" da utente senza privilegi

Per eseguire comandi che necessitano dei privilegi di root si può utilizzare "sudo". Da root installiamo il pacchetto necessario:

apt-get install sudo

dopodichè editiamo con il comando visudo il file /etc/sudoers. Nell'esempio sotto vogliamo abilitare l'utente "pippo" allo spegnimento del pc (cioè all'utilizzo del comando "halt") e al suo aggiornamento (apt-get) senza dover inserire la password (questo è comodo negli script); alla fine del file scriveremo:

pippo ALL=NOPASSWD: /sbin/halt
pippo ALL=NOPASSWD: /usr/bin/apt-get

Questa è solo una delle tante funzionalità di "sudo". Per maggiorni informazioni si consiglia di leggere il manuale di "sudo". Si possono anche dare privilegi totali all'utente previo inserimento della password:

pippo  ALL=(ALL) ALL

NOTA: le regole inserite in /etc/sudoers hanno priorità diverse a seconda della loro posizione. Le regole vengono lette dal sistema nell'ordine in cui sono inserite. Una regola posta alla fine del file può pregiudicare tutte le precedenti.

Limitare i repository non ufficiali

Se abbiamo aggiunto uno o più repository non ufficiali, ma da questi vogliamo che qualche software particolare sia preso dai repository ufficiali Debian, basta scrivere nel file /etc/apt/preferences (se non c'è basta crearlo):

Package: libavcodec52 libavdevice52 libavformat52 libavutil50 libpostproc51 libswscale0 ffmpeg
Pin: release o=Debian
Pin-Priority: 990

in questo esempio si mantengono quei software multimediali ufficiali di Debian che permettono a vlc di funzionare e non quelli di debian-multimedia, senza però disabilitare quest'ultima risorsa che può servire per altri programmi. Questo caso è ripreso dal forum di Debianizzati[1]. Debianizzati ospita anche una guida più esauriente[2]

Eseguire comandi all'avvio del sistema

Per lanciare un programma o uno script all'avvio del sistema basta inserire alla fine del file /etc/init.d/bootmisc.sh dopo i ":" la stringa con il comando che dobbiamo avviare; ad esempio per far partire amuled allo startup del pc con l'utente "pippo" basta inserire:

su pippo -c "amuled &"

questo metodo è comodo perchè non richiede l'avvio della sessione grafica per far partire automaticamente i comandi.

Altro sistema è quello di scrivere il comando nel file /etc/rc.local:

/usr/local/bin/ntop -w 10000 -d -u pippo

exit 0

con questa riga lanciamo, all'avvio del sistema, ntop sulla porta 10000 (-w 10000), come demone (-d), utlizzando l'utente pippo (-u pippo). Ricordarsi di terminare il file con exit 0.


Un altro metodo utile è reperibile nella seguente pagina web:

http://forum.ubuntu-it.org/index.php?topic=435195.0

ed anche in:

http://appuntidiinformatica.wordpress.com/2008/02/09/eseguire-automaticamente-script-allavvio-di-ubuntu/

oppure in:

http://ciaolinux.myblog.it/archive/2008/09/25/eseguire-uno-script-all-avvio.html

Montare una risorsa samba in locale

Se vogliamo montare una risorsa samba in modo che diventi locale dobbiamo inserire in /etc/fstab con permessi root:

//192.168.1.1/share  /media/share    smbfs    username=utente,password=segreta,uid=utente_locale,gid=gruppo_utente_locale    0    0

- //192.168.1.1/share lo sostituiremo con il percorso della nostra risorsa di rete

- /media/share sarà la cartella locale dove vogliamo montare la nostra risorsa; di solito in /media, creiamola utilizzando l'utente root

- smbfs è il tipo di filesystem che dobbiamo far riconoscere a mount: è necessario installare il pacchetto smbfs

- utente e segreta andranno sostituiti con le credenziali della risorsa di rete

- utente_locale e gruppo_utente_locale andranno sostituiti con il nostro utente locale e gruppo locale

salviamo il file e lanciamo da root:

mount -a

se tutto va a buon fine troveremo la risorsa montata in /media/share

Trovare l'UUID di una partizione

blkid /dev/sda1

dove al posto di sda1 metteremo la nostra partizione (blkid senza opzioni mostra tutte le partizioni), oppure:

ls -l /dev/disk/by-uuid/

Quest'ultimo in generale è più comodo perché non è necessario essere root e ls lo troviamo su qualsiasi distribuzione.

Aumentare lo spazio di /tmp

Con il nostro editor preferito andiamo ad aggiungere una riga in /etc/fstab simile a questa:

tmpfs   /tmp    tmpfs   nodev,nosuid,size=4G    0       0

modificandola secondo le necessità, ad esempio aumentando o diminuendo lo spazio a disposizione, qui impostato a 4G.

Montare al boot una periferica USB in una cartella univoca con UUID

Per essere sicuri che all'avvio la nostra macchina monti un dispositivo USB sempre nello stesso mount point ci sono varie strade, ma in questo caso prendiamo in esame un metodo che utilizza UUID. Prima di tutto colleghiamo la nostra periferica al sistema e cerchiamo l'UUID della sua partizione. Consultare il paragrafo Configurazioni_di_un_sistema_Debian#Trovare l'UUID di una partizione. Supponiamo che il nostro UUID sia:

94b8d78c-5e22-47a1-8d5b-7af79c7bfa30

a questo punto possiamo inserire in fstab una riga del tipo:

UUID=94b8d78c-5e22-47a1-8d5b-7af79c7bfa30       /media/disco   ext3      users,rw,noatime,noauto       0     0

dove /media/disco andrà sostituito con il percorso della cartella in cui vogliamo montare la nostra partizione, ext3 è il tipo di filesystem, users,rw,noatime,noauto e 0 0 sono opzioni particolari e per conoscere quelle migliori per il proprio caso si rimanda alla pagina di fstab. A questo punto incontriamo un problema: se la partizione inserita, come nell'esempio, è situata su un disco USB il nostro sistema all'avvio non riuscirà a montarla automaticamente perché quando andrà a leggere il file fstab non avrà ancora caricato i moduli USB e per lui il disco esterno non sarà ancora riconoscibile. Ovviamo a questo problema inserendo questa riga nel file /etc/rc.local prima di exit 0:

mount /media/disco

Salviamo, riavviamo e verifichiamo che il nostro disco venga montato.

Problema con più schede audio: impostare quella di default

Prove effettuate con Debian Weezy.

Una configurazione molto frequente è di avere due o più periferiche audio sullo stesso computer, ad esempio quando aggiungiamo una scheda PCI più performante alla nostra scheda audio integrata o quando, come nel caso descritto, installiamo una scheda video con modulo video/audio HDMI. In questi casi facilmente il sistema caricherà in modo arbitrario e alternato una scheda al posto di un'altra: in questo modo non avremo una scheda predefinita precisa e il risultato sarà che l'uscita audio cambierà continuamente.

Il sistema più veloce nel caso volessimo disabilitare la scheda audio integrata è di disattivarla nel bios ma se vogliamo mantenerla attiva, o nel caso della scheda HDMI bisogna procedere in modo diverso.

Nel nostro caso abbiamo due schede che possiamo trovare con il comando:

cat /proc/asound/cards
0 [ICH6           ]: ICH4 - Intel ICH6
                      Intel ICH6 with AD1981B at irq 21
1 [NVidia         ]: HDA-Intel - HDA NVidia
                      HDA NVidia at 0xf4200000 irq 17

che a seconda del riavvio vengono invertite:

0 [NVidia         ]: HDA-Intel - HDA NVidia
                      HDA NVidia at 0xf4200000 irq 17
1 [ICH6           ]: ICH4 - Intel ICH6
                      Intel ICH6 with AD1981B at irq 21

Per fare in modo di assegnare lo stesso indirizzo alla stessa scheda dobbiamo capire quali moduli audio vengono caricati all'avvio. Digitiamo:

lsmod | grep "snd"

nel caso presentato abbiamo:

snd_intel8x0           24218  0 
snd_hda_intel          20019  0 
snd_ac97_codec         99186  1 snd_intel8x0
snd_hda_codec          54244  1 snd_hda_intel
ac97_bus                1086  1 snd_ac97_codec
snd_hwdep               5380  1 snd_hda_codec
snd_pcm                60503  4 snd_intel8x0,snd_hda_intel,snd_ac97_codec,snd_hda_codec
snd_seq                42881  0 
snd_timer              15582  2 snd_pcm,snd_seq
snd_seq_device          4493  1 snd_seq
snd                    46446  9 snd_intel8x0,snd_hda_intel,snd_ac97_codec,snd_hda_codec,snd_hwdep,snd_pcm,snd_seq,snd_timer,snd_seq_device
soundcore               4598  1 snd
snd_page_alloc          6249  3 snd_intel8x0,snd_hda_intel,snd_pcm

Forse questa ricerca non è semplicissima ma aiutandoci con il comando lspci e conoscendo il nostro hardware possiamo arrivare a distinguere i moduli che vogliamo configurare:

00:1e.2 Multimedia audio controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Audio Controller (rev 03)
00:1f.1 IDE interface: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) IDE Controller (rev 03)
01:00.0 VGA compatible controller: nVidia Corporation G98 [GeForce 8400GS] (rev a2)
01:00.1 Audio device: nVidia Corporation High Definition Audio Controller (rev a1)

Confrontando i dati vediamo che è il modulo snd_intel8x0 che viene caricato per l'audio integrato e il modulo snd_hda_intel per il controller audio HD.

Se volessimo disabilitare definitivamente il modulo per l'audio HD basterebbe, con permessi root, scrivere nel file /etc/modprobe.d/alsa-base-blacklist.conf:

blacklist snd_hda_intel

e al riavvio successivo il modulo audio HD non verrebbe caricato.

Se invece vogliamo definire un ordine preciso di avvio scriviamo nel file /etc/modprobe.d/sound (crearlo se non esiste) quanto segue:

options snd_intel8x0 index=0
options snd_hda_intel index=1

In questo caso la scheda integrata verrà caricata come prima scheda (0) e la scheda HD come seconda (1).

Ogni utente poi può scegliere quali delle due caricare come scheda audio predefinita, basta creare nella home questo file:

vim ~/.asoundrc

e se vogliamo usare la scheda audio integrata inseriamo:

defaults.ctl.card 0
defaults.pcm.card 0

Se questa è la configurazione ottimale per il sistema possiamo copiare il file in /etc/skel così che ad ogni nuovo utente creato venga aggiunto il file in maniera automatica.

Ripristinare la configurazione originale del pannello di Gnome

Può capitare di voler ripristinare lo stato originale del pannello di Gnome. In questo caso utilizzando il nostro utente eliminiamo la cartella:

rm -fr ~/.gconf/apps/panel

e riavviamo la sessione grafica.

Password persa

Se abbiamo perso la password del nostro utente o dell'utente root per poterla resettare basta avere accesso al disco, ad esempio con una distribuzione live, editare il file /etc/passwd e nella riga che contiene il nostro nome togliere la x, come in questo caso:

alle:x:1000:1000:Alle,,,:/home/alle:/bin/bash

la riga diventerà:

 alle::1000:1000:Alle,,,:/home/alle:/bin/bash

La "x" significa che la password cifrata è in "/etc/shadow", togliendola il sistema non andrà a leggere quel file e l'utente potrà accedere senza password.

Esempio tratto da: http://www.debian.org/doc/manuals/debian-reference/ch04.it.html#_creating_encrypted_password

Forzare il controllo del filesystem all'avvio

Per fare in modo che all'avvio successivo il sistema controlli il file system basta aggiungere il file forcefsck in questo modo:

touch /forcefsck

Al successivo avvio dopo il controllo il file verrà automaticamente eliminato. Altro metodo è utilizzare shutdown con queste opzioni:

shutdown -rF now

Configurazioni di SSH server

Per installare il servizio ssh basta lanciare da riga di comando con privilegi root:

aptitude install openssh-server

A questo punto se vogliamo rendere più sicuro il nostro server bastano piccoli accorgimenti. Editiamo il file /etc/ssh/sshd_config modificando le seguenti linee:

PermitRootLogin no

La riga sopra non permette all'utente root di collegarsi utilizzando ssh: è comodo perché obbliga l'utilizzo di un altro utente, questo significa che bisogna conoscere il nome di un user valido; successivamente è poi possibile diventare root.

Port 2222

Buona norma è modificare la porta di default di ssh: sulla porta 22 spesso avvengono effettuati sugli IP pubblici svariati tentativi di connessioni utilizzando metodi brute force. Utilizzare una porta che non viene già utilizzata da altri servizi: è possibile anche consultare il file /etc/services.

Altra operazione quasi fondamentale, se è possibile, è quella di filtrare gli accessi a seconda degli IP. Basterà inserire in /etc/hosts.deny una riga simile a questa:

sshd: ALL EXCEPT 10.0.0.* 192.168.1.14

Nello specifico viene negato l'accesso al servizio ssh a tutti, tranne alla rete 10.0.0.0/24 e all'IP 192.168.1.14.

Dopo le modifiche è necessario riavviare il servizio:

service ssh restart

Visualizzare Man con Vim

Se vogliamo forzare il comando man ad utilizzare vim per mostrare la documentazione dei pacchetti possiamo aggiungere al file ~/.bashrc questa riga:

export MANPAGER='bash -c "vim -MRn -c \"set ft=man nomod nolist nospell nonu\" -c \"nm q :qa!<CR>\" -c \"nm <end> G\" -c \"nm <home> gg\"</dev/tty <(col -b)"'

Debian su iMac G5 con Xfce

Di seguito alcuni appunti per installare Debain Wheezy su iMac G5 scaricabile da qui.

Installazione

Come prima cosa dopo aver masterizzato l'immagine ISO di Wheezy, inseriamo il disco nel computer e avviamo utilizzando il tasto c per avviare da CD. L'installer grafico potrebbe non essere presente, niente paura, ci viene chiesto di scegliere tra due opzioni:

  • install > per i 64 bit
  • install32 > per i 32 bit

Scegliamo ad esempio il 64 e per installare direttamente Xfce digitiamo:

install desktop=xfce

Successivamente procediamo come se fosse una normalissima installazione personalizzandola come vogliamo, ma facendo attenzione a non deselezionare l'opzione "ambiente desktop Debian" dalla scelta dei pacchetti da installare (richiamabile poi con il comando tasksel).

Xorg

Se si riscontrano problemi con l'interfaccia grafica potrebbe essere un difetto di Xorg: apriamo un terminale e verifichiamo con il comando top, se il processo che appartiene a Xorg è praticamente sempre a 99% di CPU allora dobbiamo fare come segue. Con utente root fermiamo l'interfaccia grafica:

service lightdm stop

oppure se abbiamo installato un altro desktop manager sostituiamo il servizio. nel caso di Slim sarà:

service slim stop

A questo punto creiamo il file di xorg.conf e lo spostiamo all'interno di /etc/X11:

Xorg -configure
cp -p /etc/X11/xorg.conf /etc/X11/xorg.conf.bck (questo passo è necessario solo se è già presente il file xorg.conf)
mv /root/xorg.conf.new /etc/X11/xorg.conf

Editiamo il file decommentando la riga che ospita l'opzione per il DRI e aggiungendo il valore False:

Option     "DRI"        "False"

A questo punto riavviamo l'interfaccia grafica:

service lightdm start

oppure:

service slim start

Altri problemi grafici

Su un PowerMac G5 con scheda:

NVIDIA Corporation NV34 [GeForce FX 5200 Ultra]

sono stati riscontrati fastidiosi difetti grafici: avviando apllicazioni a schermo intero alcune parti non vengono visualizzate (righe vuote nel browser e nel terminale, immagini non complete nel visualizzatore, ecc). Ecco un esempio:

NoAccel.png

Le soluzioni è di decommentare, all'interno di /etc/X11/xorg.conf, la riga:

Option     "NoAccel"

A questo punto riavviamo il servizio e proviamo. L'opzione però renderà meno fluido il movimento delle finestre.

Pannello Xfce

Al primo avvio noteremo che il desktop è abbastanza scarno e il pannello è di dimensioni ridotte, vuoto e inserito in mezzo alla scrivania. Col tasto destro possiamo editarlo, ingrandirlo, aggiungere i pulsanti che vogliamo e posizionarlo dove più ci fa comodo. Se vogliamo evitare questa operazione ecco a disposizione il file xfce4.tar.gz: basta scompattarlo e inserire la cartella xfce4 ottenuta con tutto il suo contenuto all'interno della cartella .config che troviamo all'interno della home dell'utente. Si avrà un desktop tipo questo:

Istantanea.png

Se vogliamo che un'impostazione, come questa del pannello, venga caricata di default per tutti i nuovo utenti basta mettere il file o la cartella dentro a /etc/skel ricostruendo il percorso utente. Ad esempio in questo caso la cartella delle impostazioni di Xfce4 è stata inserita in /etc/skel/.config/.

Wireless

Se come scheda wifi abbiamo questa (riconoscibile con il comando lspci):

Broadcom Corporation BCM4318 [AirForce One 54g] 802.11g Wireless LAN Controller (rev 02)

allora è necessario inserire il firmware proprietario. Se non l'abbiamo fatto prima, è necessario aggiungere alla fine delle line deb nel file /etc/apt/sources.list le parole contrib e non-free (quest'ultima permette l'installazione di pacchetti proprietari). Alla fine avremo righe simili a queste:

deb http://mi.mirror.garr.it/mirrors/debian/ wheezy main contrib non-free
deb-src http://mi.mirror.garr.it/mirrors/debian/ wheezy main
deb http://security.debian.org/ wheezy/updates main contrib non-free
deb-src http://security.debian.org/ wheezy/updates main

Aggiorniamo la lista dei pacchetti con:

aptitude update

e installiamo il firmware:

aptitude install firmware-b43-installer

A questo punto aggiungiamo il caricamento del modulo all'avvio del sistema editando il file /etc/rc.local (aggiungere prima di exit 0):

modprobe b43
exit 0

Riavviamo e controlliamo il corretto funzionamento. Se preferiamo che all'avvio il wifi rimanga non attivo ma disponibile ad un'eventuale attivazione possiamo usare il comando rfkill. Per prima cosa installiamolo:

 aptitude install rfkill

A questo punto editiamo nuovamente il file /etc/rc.local che diventerà:

rfkill block all
modprobe b43
exit 0

rfkill si occupa di "accendere" o "spegnere" le interfacce senza fili come wifi o bluetooth: nell'esempio sopra blocca tutto (all) ma potremmo anche sostituire all con wifi o bluetooth. Ora per riattivare il wifi ci basterà andare sul nostro pannello, cliccare con il tasto destro sul gestore della rete e spuntare "Abilita rete senza fili".

Audio

Se l'audio non funziona controlliamo che la scheda audio sia rilevata:

cat /proc/asound/cards

Se riceviamo:

--- no soundcards ---

allora qualcosa non va. Apriamo il file /etc/modprobe.d/blacklist.local.conf e decommentiamo queste linee con blacklist:

blacklist snd-aoa-codec-tas
blacklist snd-aoa-fabric-layout
blacklist snd-aoa-i2sbus
blacklist snd-aoa-soundbus
blacklist snd-aoa

Riavviamo e rilanciamo:

cat /proc/asound/cards

E vediamo se la scheda viene caricata:

0 [SoundByLayout  ]: AppleOnbdAudio - SoundByLayout
                     SoundByLayout