Capitolo 5. Problemi di cui essere al corrente per stretch

Indice

5.1. Aspetti specifici dell'aggiornamento a Stretch
5.1.1. Il montaggio ritardato di /usr non è più supportato
5.1.2. L'accesso FTP ai mirror ospitati da Debian verrà rimosso
5.1.3. Pacchetti obsoleti degni di nota
5.1.4. Componenti deprecati per Stretch
5.1.5. Cose da fare dopo l'aggiornamento prima di riavviare
5.1.6. Gli eseguibili sono adesso compilati in modo predefinito come eseguibili indipendenti dalla posizione (PIE, Position Independent Executable).
5.1.7. La maggior parte dei pacchetti di compatibilità con LSB sono stati rimossi
5.2. Limitazione nel supporto per la sicurezza
5.2.1. Stato della sicurezza dei browser web
5.2.2. Mancanza di supporto di sicurezza per l'ecosistema di libv8 e Node.js
5.3. Problemi relativi a specifici pacchetti
5.3.1. Protocollo SSH1 e cifrari più vecchi disabilitati in OpenSSH in modo predefinito
5.3.2. Modifiche potenziamente incompatibili all'indietro in APT
5.3.3. Il server Xorg non è più in modo predefinito setuid root
5.3.4. Upstart rimosso
5.3.5. Lo strumento debhelper ora genera in modo predefinito pacchetti dbgsym.
5.3.6. Cambiamenti relativi a OpenSSL
5.3.7. Modifiche a Perl che possono rendere non funzionante software di terze parti
5.3.8. Incompatibilità PostgreSQL PL/Perl
5.3.9. net-tools will be deprecated in favor of iproute2

A volte i cambiamenti introdotti da un nuovo rilascio comportano effetti collaterali che non si possono ragionevolmente evitare o che espongono a errori da altre parti. In questa sezione sono documentati i problemi noti. Si leggano anche le errata corrige, la documentazione dei pacchetti interessati, le segnalazioni di errori e altre informazioni riportate in Sezione 6.1, «Ulteriori letture».

5.1. Aspetti specifici dell'aggiornamento a Stretch

Questa sezione tratta le voci relative all'aggiornamento da Jessie a Stretch

5.1.1. Il montaggio ritardato di /usr non è più supportato

[Nota]Nota

Questa sezione riguarda solo i sistemi che usano un kernel personalizzato in cui /usr è in un punto di montaggio separato da /. Se si usano i pacchetti del kernel forniti da Debian non si è affetti da questo problema.

Il montaggio di /usr usando solamente strumenti che si trovano in / non è più supportato. Ciò funzionava in passato solamente per poche configurazioni specifiche e ora sono esplicitamente non supportate.

Questo significa che per stretch tutti i sistemi in cui /usr è una partizione separata devono usare un generatore di initramfs che monti /usr. Tutti i generatori di initramfs in Stretch lo fanno.

5.1.2. L'accesso FTP ai mirror ospitati da Debian verrà rimosso

I mirror ospitati da Debian smetteranno di fornire l'accesso via FTP. Se si usa il protocollo ftp nel proprio file sources.list, migrare a http. Per la migrazione, guardare l'esempio seguente:

deb http://deb.debian.org/debian          stretch         main
deb http://deb.debian.org/debian-security stretch/updates main

# tor variant (requires apt-transport-tor)
# deb  tor+http://vwakviie2ienjx6t.onion/debian          stretch            main
# deb  tor+http://sgvtcaew4bxjd7ln.onion/debian-security stretch/updates    main

Gli esempi soprastanti non includono non-free e contrib. Se si ha necessità di avere queste componenti abilitate, ricordarsi di includerle.

Per maggiori informazioni fare riferimento all'annuncio: Chiusura dei servizi FTP pubblici.

5.1.3. Pacchetti obsoleti degni di nota

Quello che segue è un elenco di pacchetti obsoleti noti e degni di nota (vedere Sezione 4.8, «Pacchetti obsoleti» per una descrizione).

L'elenco dei pacchetti obsoleti comprende:

5.1.4. Componenti deprecati per Stretch

Con il prossimo rilascio di Debian 10 (nome in codice Buster) alcune funzionalità diventeranno deprecate. Gli utenti dovranno migrare ad altre alternative per evitare problemi nell'aggiornamento a 10.

Ciò include le seguenti funzionalità:

  • TODO: Add items if any

5.1.5. Cose da fare dopo l'aggiornamento prima di riavviare

Quando apt-get dist-upgrade ha terminato, l'aggiornamento è «formalmente» completo, ma ci sono alcune altre cose di cui ci si deve occupare prima del successivo avvio.


      add list of items here
      
    

5.1.6. Gli eseguibili sono adesso compilati in modo predefinito come eseguibili indipendenti dalla posizione (PIE, Position Independent Executable).

In modo predefinito il compilatore GNU GCC 6 fornito da Debian Stretch compila tutti gli eseguibili come indipendenti dalla posizione. Ciò fornisce un alleggerimento da tutta una classe di vulnerabilità.

Sfortunatamente il kernel Linux fornito in Debian 8 (fino a 8.7) ha un problema che fa sì che alcuni programmi compilati come eseguibili indipendenti dalla posizione vadano in crash riportando un errore non descrittivo come segmentation fault. Questo problema è stato risolto nella versione di Linux fornita in 8.8 (versione 3.16.43 o successive) e nel kernel fornito in Debian 9 (versione 4.9 o successive).

È raccomandato di aggiornare il kernel ad una versione con il problema risolto e poi di riavviare prima di fare l'aggiornamento a stretch. Se si sta eseguendo il kernel Debian 8.8 o uno successivo non si è affetti da questo problema.

Se si sta eseguendo una versione affetta dal problema del kernel durante l'aggiornamento è fortemente raccomandato fare un riavvio con kernel di stretch immediatamente dopo l'aggiornamento per evitare di incontrare questo problema.

5.1.6.1. Cambiamenti di comportamento di PIE per gli amministratori di sistema e gli sviluppatori

[Nota]Nota

Questa sezione è principalmente rivolta agli sviluppatori o agli amministratori di sistema. Gli utenti desktop difficilmente saranno interessati dal problema descritto in questa sezione.

Quanto detto sopra porta anche ad alcuni cambiamenti che è bene conoscere.

  • Lo strumento file (tra gli altri) classifica tali binari come «oggetti condivisi» invece che come «eseguibili». Se si hanno filtri basati su file binari, potrebbe essere necessario aggiornarli (es. filtri anti-spam).

  • Anche le librerie statiche compilate in un eseguibile ora devono essere compilate come codice indipendente dalla posizione. Il seguente messaggio di errore da un linker è un sintomo di un problema relativo a questo:

    relocation ... against '[SYMBOL]' can not be used when making a shared object; recompile with -fPIC
    

  • Storicamente gli eseguibili indipendenti dalla posizione sono stati associati su certo hardware ad una perdita di prestazioni. In particolare per l'architettura Debian i386 (macchine Intel a 32 bit). Mentre GCC 5 e GCC 6 hanno fortemente migliorato le prestazioni per eseguibili indipendenti dalla posizione su Intel a 32 bit, questa ottimizzazione potrebbe non essere applicabile a tutte le architetture. Considerare di valutare le prestazioni del proprio codice se si ha come obiettivo architetture di macchine con un numero molto limitato di registri.

5.1.7. La maggior parte dei pacchetti di compatibilità con LSB sono stati rimossi

A causa di una mancanza di interessa e di testabilità, Debian ha rimosso la stragrande maggioranza dei pacchetti di compatibilità LSB (Linux Standard Base).

Debian continuerà a fornire poche utilità chiave LSB selezionate utilizzate internamente ed esternamente, come lsb-release e le funzioni init di sysvinit in lsb-base. Inoltre Debian conferma la sua forte adesione alla versione 2.3 del Filesystem Hierarchy Standard (FHS) con le modifiche minori descritte nel manuale Debian Policy.

5.2. Limitazione nel supporto per la sicurezza

Ci sono alcuni pacchetti per i quali Debian non può garantire di fornire i backport minimi per ragioni di sicurezza. Questi verranno trattati nelle sottosezioni che seguono.

Notare che il pacchetto debian-security-support aiuta a tenere traccia dello stato del supporto di sicurezza per i pacchetti installati.

5.2.1. Stato della sicurezza dei browser web

Debian 9 contiene diversi motori per browser che sono affetti da varie vulnerabilità di sicurezza. L'alto tasso di vulnerabilità e la parziale mancanza di supporto a lungo termine da parte degli autori originali complica l'attività di supporto di questi browser tramite l'applicazione delle correzioni di sicurezza alle versioni precedenti. Inoltre la dipendenza reciproca delle librerie rende impossibile aggiornare a una nuova versione. Perciò, in Stretch sono presenti browser basati sui motori webkit, qtwebkit e khtml, ma non sono coperti dal supporto di sicurezza. Non si dovrebbe usare questi browser con siti web non fidati.

Per un browser web di uso generico si raccomanda Firefox oppure Chromium.

Chromium, pur essendo costruito sul codice Webkit, è un pacchetto foglia che verrà mantenuto aggiornato ricompilando i rilasci correnti di Chromium per stable. Firefox e Thunderbird verranno anch'essi mantenuti aggiornati ricompilando i rilasci ESR correnti per stable.

5.2.2. Mancanza di supporto di sicurezza per l'ecosistema di libv8 e Node.js

La piattaforma Node.js è costruita sulla base di libv8-3.14 che ha un grande volume di problemi di sicurezza ma al momento non ci sono volontari all'interno del progetto o nel Team di sicurezza sufficientemente interessati e con la volontà di investire la grande quantità di tempo richiesto per limitare questi problemi in arrivo.

Sfortunatamente ciò significa che libv8-3.14, nodejs e l'ecosistema di pacchetti node-* associati attualmente non dovrebbe essere usato con contenuti non fidati, come dati non ripuliti presi da Internet.

In aggiunta questi pacchetti non riceveranno alcun aggiornamento di sicurezza durante la vita del rilascio Stretch.

5.3. Problemi relativi a specifici pacchetti

Nella maggior parte dei casi i pacchetti dovrebbero aggiornarsi senza problemi da Jessie a Stretch. C'è un numero limitato di casi dove può essere necessario un qualche intervento, prima o durante l'aggiornamento; questi casi sono descritti in dettaglio di seguito, pacchetto per pacchetto.

5.3.1. Protocollo SSH1 e cifrari più vecchi disabilitati in OpenSSH in modo predefinito

Il rilascio di OpenSSH 7 ha disabilitato in modo predefinito alcuni vecchi cifrari e il protocollo SSH1. Fare attenzione quando si aggiornano macchine a cui si ha accesso solo via SSH.

Fare riferimento alla documentazione di OpenSSH per maggiori informazioni.

5.3.2. Modifiche potenziamente incompatibili all'indietro in APT

Questa sezione copre alcune delle modifiche incompatibili ad APT che potrebbero influenzare il sistema.

5.3.2.1. APT ora recupera i file con un utente non privilegiato («_apt»)

APT ora cerca di liberarsi di tutti i privilegi di root prima di recuperare i file dai mirror. APT può rilevare alcuni casi d'uso comuni dove ciò porterebbe a un fallimento e ripiega sul recuperare il materiale come root dando un avvertimento. Tuttavia può non riuscire a rilevare alcune configurazioni particolari (es. regole di firewall specifiche per UID).

Se si incontrano problemi con questa funzionalità, diventare l'utente «_apt» e controllare che:

  • abbia accesso in lettura ai file in /var/lib/apt/lists e /var/cache/apt/archives;

  • abbia accesso in lettura all'archiviazione della fiducia di APT (/etc/apt/trusted.gpg e /etc/apt/trusted.gpg.d/);

  • possa risolvere nomi DNS e scaricare file. Esempi di metodi per testarlo sono:

    # Dal pacchetto dnsutils (se si usa tor, controllare invece con tor-resolve).
    $ nslookup debian.org >/dev/null || echo "Impossibile risolvere debian.org"
    $ wget -q https://debian.org/ -O- > /dev/null || echo "Impossibile scaricare la pagina indice di debian.org"
    

    Per problemi con DNS controllare che /etc/resolv.conf sia leggibile.

5.3.2.2. Nuovo motore di pin di APT

APT 1.1 ha introdotto un nuovo motore di pin che corrisponde ora alla descrizione nella pagina di manuale.

Il vecchio motore assegnava una priorità di pin per pacchetto, quello nuovo assegna le priorità di pin per versione. Sceglie poi la versione con il più alto pin che non sia una retrocessione o che ha un pin > 1000.

Questo cambia l'effetto di alcuni pin, specialmente quelli negativi. In precedenza, fare il pin di una versione a -1 di fatto evitava che il pacchetto venisse installato (il pin del pacchetto era -1), ora evita solamente che venga installata la versione di questo pacchetto.

5.3.2.3. Nuovi requisiti per repository APT

[Nota]Nota

Questa sezione è rilevante solo se si hanno (o si intendono usare) repository di terze parti abilitati o se si mantiene un repository APT.

Per migliorare la stabilità degli scaricamenti e garantire la sicurezza dei contenuti scaricati, APT ora ha per i repository APT i seguenti requisiti:

  • Il file InRelease deve essere disponibile.

  • Tutti i metadati devono includere almeno i codici di controllo SHA256 di tutti gli elementi. Ciò include la firma gpg del file InRelease.

  • Le firme del file InRelease devono essere fatte con una chiave di dimensione uguale o maggiore di 2048 bit.

Se ci si affida ad un repository di terze parti che non può conformarsi con i requisiti suddetti, invitare i responsabili ad aggiornare il proprio repository. Ulteriori informazioni sul file InRelease possono essere trovate sul Debian Wiki.

5.3.3. Il server Xorg non è più in modo predefinito setuid root

[Nota]Nota

Questa modifica si applica solo se il proprio display manager di X gestisce l'esecuzione di X senza privilegi di root (o se si avvia X manualmente tramite startx). Attualmente l'unico display manager conosciuto che fa questo è gdm. Gli altri display manager semplicemente avviano X come root, indipendentemente da questo cambiamento.

Questo riduce il rischio di una scalata di privilegi grazie a bug nel server X. Tuttavia, per funzionare, ha alcuni requisiti:

  • Richiede logind e libpam-systemd.

  • Richiede un driver video nel kernel (dato che Xorg non può più comunicare direttamente con l'hardware).

  • Richiede di essere in esecuzione sulla console virtuale da cui è stato avviato.

Quando eseguito come utente normale, il log di Xorg sarà disponibile in ~/.local/share/xorg/.

Se non è possibile soddisfare questi requisiti, installare il pacchetto xserver-xorg-legacy per ripristinare Xorg con setuid.

5.3.4. Upstart rimosso

A causa della mancanza di manutenzione da parte degli autori a monte, il sistema init Upstart è stato rimosso da Stretch. Se il proprio sistema fa affidamento su questo pacchetto, tenere a mente che non verrà aggiornato durante la vita di Debian 9 e che, a partire da Debian 10 (Buster), i compiti upstart potrebbero essere rimossi dai pacchetti.

Considerare il passaggio a un sistema init supportato, come systemd o openrc.

5.3.5. Lo strumento debhelper ora genera in modo predefinito pacchetti dbgsym.

[Nota]Nota

Questa sezione è pensata principalmente per gli sviluppatori o le organizzazione che compilano i propri pacchetti Debian.

La suite di strumenti debhelper genera ora in modo predefinito pacchetti «dbgsym» per i binari ELF. Se si sviluppano e impacchettano binari, controllare che i propri strumenti supportino questo pacchetti extra generati automaticamente.

Se si usa reprepro si vorrà aggiornare almeno alla versione 4.17.0. Per aptly sarà necessaria almeno la versione 1.0.0 che sfortunatamente non è disponibile in Debian Stretch.

Se i propri strumenti non sono in grado di lavorare in modo pulito con essi, si può chiedere a debhelper di disabilitare questa funzionalità aggiungendo «noautodbgsym» nella variabile DEB_BUILD_OPTIONS del proprio servizio di compilazione. Vedere la pagina di manuale di dh_strip per ulteriori informazioni.

5.3.6. Cambiamenti relativi a OpenSSL

L'applicazione openssl si aspetta gli argomenti opzione prima degli argomenti non opzione. Per esempio questo non funziona più:

openssl dsaparam 2048 -out file

mentre questo lo fa ancora:

openssl dsaparam -out file 2048

Il comando openssl enc ha cambiato il digest predefinito (usato per creare la chiave dalla passphrase) da MD5 a SHA256. Il digest può essere specificato con l'opzione -md nel caso in cui vecchi file debbano essere decifrati con il nuovo openssl (o viceversa).

I cifrari 3DES e RC4 non sono più disponibili per la comunicazione TLS/SSL. I server con link a openssl non possono offrirli e i client non possono connettersi a server che offrono solo quelli. Ciò significa che openssl e Windows XP non hanno alcun cifrario comune.

Il pacchetto libssl-dev fornisce file header per compilare con openssl 1.1.0. L'API è cambiata molto ed è possibile che il software non compili più. È disponibile una panoramica dei cambiamenti. Se non si può aggiornare il proprio software c'è anche libssl1.0-dev che fornisce header per openssl 1.0.2.

5.3.7. Modifiche a Perl che possono rendere non funzionante software di terze parti

[Nota]Nota

Questa sezione riguarda il codice mantenuto al di fuori di Debian 9: script e moduli Perl locali, di terze parti od obsoleti.

  • Alcuni moduli sono stati rimossi dal nucleo centrale di Perl e sono ora forniti in pacchetti separati. Esempi degni di nota sono CGI, disponibile nel pacchetto libcgi-pm-perl, e Module::Build, disponibile nel pacchetto libmodule-build-perl.

  • La directory di lavoro corrente (.) è stata rimossa dall'elenco predefinito di directory per gli include: @INC. Questo può avere un effetto sull'uso di require(), do(), ecc. in cui gli argomenti sono file nella directory corrente.

  • L'elenco completo delle modifiche in Perl a partire dalla versione in Debian 8 è disponibile in perl522delta e perl524delta.

5.3.8. Incompatibilità PostgreSQL PL/Perl

Il pacchetto del linguaggio procedurale PostgreSQL PL/Perl in jessie è incompatibile con la versione di Perl in stretch. Il pacchetto postgresql-plperl-9.4 verrà rimosso durante l'aggiornamento, rendendo non funzionanti le procedure Perl lato server. L'aggiornamento a PostgreSQL 9.6 non dovrebbe essere disturbato, le procedure funzioneranno nel nuovo cluster PostgreSQL se è installato il pacchetto postgresql-plperl-9.6. Se non si è sicuri, fare un backup dei propri cluster PostgreSQL 9.4 prima dell'aggiornamento a stretch.

5.3.9. net-tools will be deprecated in favor of iproute2

The net-tools package is no longer part of new installations by default, since it's priority has been lowered from important to optional. Users are instead advised to use the modern iproute2 toolset (which has been part of new installs for several releases already). If you still prefer to continue using the net-tools programs you can simply install it via

apt install net-tools

Quello che segue è un riassunto dei comandi net-tools insieme ai loro equivalenti per iproute2:

vecchi comandi net-toolscomandi iproute2 sostitutivi
arpip n (ip neighbor)
ifconfigip a (ip addr), ip link, ip -s (ip -stats)
iptunnelip tunnel
nameifip link
netstatss, ip route (for netstat -r), ip -s link (for netstat -i), ip maddr (for netstat -g)
routeip r (ip route)