debian: αναβάθμιση από την 8 (Jessie) στην 9 (Stretch)

Debian Open Logo

Αναβάθμιση του debian από την 8 (Jessie) στην 9 (Stretch)

Το δοκιμάσαμε σε ένα Dell δεκαετίας (!) και όλα πήγαν μια χαρά κι έτσι μεταφέρουμε την εμπειρία μας, για το πως πάμε από την Jessie στην Stretch. Τι πετύχαμε; Να έχουμε στη διάθεσή μας φρέσκο σύστημα με ενημερωμένο kernel και το δυνατόν νεότερο λογισμικό – για τα δεδομένα του debian δηλαδή!3

Θέλετε κι εσείς; Διαβάστε τον οδηγό που ακολουθεί.

Βιάζεστε;

Αν βιάζεστε τόσο πολύ, έχετε ήδη πάρει backup, ξέρετε τι πάτε να κάνετε και απλά δεν θυμάστε τον τρόπο παραθέτουμε τα βήματα εδώ:

  • Πάρτε backup (ή snapshot)
  • Ενημερώστε το σύστημά σας
    • # apt-get update
    • # apt-get upgrade
    • # apt-get dist-upgrade
  • Ενημερώστε το sources.list, αντικαθιστώντας τη λεξούλα jessie με την λεξούλα stretch.
  • Αναβαθμίστε
    • # apt-get update
    • # apt-get upgrade
    • # apt-get dist-upgrade

Γιατί να αναβαθμίσετε;

Φρέσκο λογισμικό, ασφαλές και σταθερό.

Πιο συγκεκριμένα, διαβάζουμε στο debian.org, 15346 νέα πακέτα από ένα σύνολο των 51687 πακέτων. Περισσότερα από 29859 ενημερωμένα πακέτα (άρα 57% των πακέτων της jessie). Και τέλος, σημαντικός αριθμός πακέτων που καταργήθηκαν από την έκδοση (>6739, 13% των πακέτων του jessie).

Προετοιμαστείτε ή Παρατήστε το

Αν δεν έχετε πολύ λογισμικό εγκατεστημένο, αν τα config δεν έχουν παραπειραχθεί και αν γενικά δεν έχετε τίποτα ειδικές ρυθμίσεις μάλλον η αναβάθμιση θα πετύχει.

Σε κάθε περίπτωση, πρέπει να πάρετε backup τα πάντα πριν ξεκινήσετε την αναβάθμιση.

Αν επιχειρείτε την αναβάθμιση σε ένα σύστημα με σημαντικά services, με περίεργες και ειδικές ρυθμίσεις και περίπλοκα config, σχεδιάστε την αναβάθμιση προσεκτικά. Δείτε τι έχετε ανάγκη και τι όχι, ελέγξτε αν αξιοποιείτε κάποιο πακέτο που καταργείται στην 9 και μόνο εφόσον όλα βαίνουν καλώς, τότε συνεχίστε. Σε κάθε περίπτωση να έχετε πάντα στο μυαλό σας ένα σχέδιο για την περίπτωση που αναβάθμιση αποτύχει και βρεθείτε με μη λειτουργικό σύστημα.

Οι πιθανότητες για ένα επιτυχημένα και πλήρως λειτουργικό σύστημα μειώνονται κατακόρυφα αν στην 8 χρησιμοποιείτε λογισμικό τρίτων.  Γι αυτό το λόγο αφαιρέστε το.

# aptitude search '~o'

Η εντολή αυτή εμφανίζει όλα τα πακέτα που δεν βρίσκονται στο στάνταρ αποθετήριο.

Πάρτε backup data και config στο σύστημά σας.  Ιδανικά, αν τρέχετε το debian σε vm, πάρτε ένα snapshot. 

MariaDB και MySQL

Προσοχή: Η MariaDB αντικαθιστά τον MySQL στο Debian 9 Stretch. Αυτό σημαίνει ότι τα δυαδικά αρχεία έχουν νέο φορμάτ και δεν έχουν συμβατότητα προς τα πίσω – κάτι που εμείς στα πρώτα πειράματά μας διαπιστώσαμε με τον δύσκολο τρόπο, αλλά μας έσωσε το backup. Κατά τη διάρκεια της αναβάθμισης οι βάσεις θα αναβαθμιστούν. Εν τούτοις, αν κάτι δεν πάει καλά στις βάσεις σας με τη MariaDB να τις τρέχει, δεν θα μπορέσετε να τις πάτε πίσω. Πάρτε λοιπόν backup!

Ενημερώστε το παλιό σας σύστημα

 # apt-get update
 # apt-get upgrade
 # apt-get dist-upgrade

Λογικά δεν θα αργήσει, λάθη δεν θα προκύψουν.

Τρέξτε κι ένα:

# dpkg -C

καθώς και:

# apt-mark showhold

Αν προκύψουν θέματα στα παραπάνω, φροντίστε να τα φτιάξετε πριν την αναβάθμιση.

Ενημερώστε τα αποθετήρια (τα ρεποζίτορις δηλαδή)!

Τώρα που έχουμε ένα σύστημα πλήρως ενημερωμένο, πρέπει να αλλάξουμε τα ευρετήρια των πακέτων ώστε να δείχνουν σε αυτά του Stretch.

Πάρτε ένα backup το etc/apt/sources.list:

# cp /etc/apt/sources.list /etc/apt/sources.list.backup

Χρησιμοποιήστε το nano ή όποιον άλλο editor θέλετε για να ανοίξετε το αρχείο και αντικαταστήστε τη λέξη jessie με τη λέξη stretch.

Παράδειγμα:

JESSIE
 deb http://httpredir.debian.org/debian jessie main
 deb http://httpredir.debian.org/debian jessie-updates main
 deb http://security.debian.org jessie/updates main


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

Εναλλακτικά, κάντε ένα sed:

# sed -i 's/jessie/stretch/g' /etc/apt/sources.list

Ήρθε η ώρα για την ενημέρωση του ευρετηρίου:

# apt-get update

Προσομοιώστε

Πριν την αναβάθμιση, ας κάνουμε μια προεπισκόπηση των πακέτων που θα εγκατασταθούν, θα ενημερωθούν ή θα αφαιρεθούν:

# apt list --upgradable

Αναβαθμίστε

Α! Πριν αναβαθμίσετε! Για backup είπαμε; Πάρτε ένα backup.

Αν φτάσατε ως εδώ, και έχετε πάρει backup, τα πράγματα είναι απλά.

# apt-get upgrade
# apt-get dist-upgrade

Κατά τη διάρκεια της αναβάθμισης θα ερωτηθείτε αν επιθυμείτε επανεκκίνηση στα services. Καλύτερα επιλέξτε ναι. Αλλιώς κάθε τόσο θα διακόπτεται η αναβάθμιση με ξεχωριστό prompt για το κάθε service.

Restart services during package upgrades without asking?

Όπως θα διαπιστώσετε, η διαδικασία παίρνει πολλή ώρα, στο παλιό dell μας διήρκησε περίπου 2 ώρες και όλα πήγαν καλά, αν έχετε i7 με SSD, σίγουρα θα σταθείτε πιο τυχεροί.

Αφού φτάσατε ως εδώ, θα έχετε αναβαθμισμένο Debian στην Stretch. Κάντε ένα κόπο και τρέξτε για να βρείτε τυχόν παλιά και παρατημένα πακέτα.

# aptitude search '~o'

debian: πως να ενεργοποιήσετε το tap στο touchpad και άλλα παρεμφερή

Debian Open Logo

debian: Πως να ενεργοποιήσετε το tap στο touchpad και άλλα παρεμφερή θέματα

  • Για να ενεργοποιήσετε το tap στο touchpad γράψτε στο terminal synclient TapButton1=1
  • Για να δείτε τι είδους touchpad έχετε: egrep -i 'synap|alps|etps|elan' /proc/bus/input/devices
  • Το synclient στο terminal δείχνει όλες τις ρυθμίσεις του touchpad.

Άλλα χρήσιμα θέματα για όλες τις εκδόσεις του debian από την επίσημη ιστοσελίδα:
https://wiki.debian.org/SynapticsTouchpad

προγραμματισμένο mysql backup

mysql logo (110 x 57)

Είδαμε κάτι αντίστοιχο για τον sql server express, αλλά ήρθε και η ώρα του mysql backup. Όταν μιλάμε για mysql, μιλάμε για linux κι όταν μιλάμε για linux, ανοίγουμε την κονσόλα.

mysql backup, όλα και γρήγορα!

Ας δούμε κατ’αρχήν πως κάνουμε παίρνουμε στα γρήγορα ένα backup για όλες τις databases:

mysqldump -u root -p --all-databases > alldb.sql

Θα σας ζητηθεί ο κωδικός του root.

Για να μην ζητάει τον κωδικό του root (π.χ. cron), θα πρέπει να κολλήσετε δίπλα στο -p τον κωδικό:

mysqldump -u root -pSECRET --all-databases > alldb.sql

…και συμπίεση;

Προφανώς θα θέλετε να συμπιέσετε το αρχείο, κάτι που χάρη στην κονσόλα και το piping, γίνεται με μιας, κάπως έτσι:

mysqldump -u root -pSECRET --all-databases | bzip2 -c > alldb.$(date +%Y-%m-%d-%H.%M.%S).sql.bz2

Παρατηρήστε την απλότητα με την οποία δηλώνουμε την ημερομηνιακή μορφή του συμπιεσμένου:

$(date +%Y-%m-%d-%H.%M.%S)

ή μήπως καλύτερα σκριπτάκι;

Συχνά, είναι προτιμότερο να διατηρούμε αντίγραφο της κάθε database σε χωριστό αρχείο. Ακολουθεί ένα ωραιότατο σκριπτάκι bash, το οποίο διαβάζει τα ονόματα των βάσεων δεδομένων και για κάθε μια από αυτές – πλην των συστημικών του mysql – λαμβάνει αντίγραφο και το ζιπάρει!

#!/bin/bash

USER="root"
PASSWORD="SECRET"

databases=`mysql -u $USER -p$PASSWORD -e "SHOW DATABASES;" | tr -d "| " | grep -v Database`

for db in $databases; do
    if [[ "$db" != "information_schema" ]] && [[ "$db" != "performance_schema" ]] && [[ "$db" != "mysql" ]] && [[ "$db" != _* ]] ; then
        echo "Dumping database: $db"
        OUTPUT=`date +%Y%m%d`.$db.sql
        mysqldump -u $USER -p$PASSWORD --databases $db > $OUTPUT
        gzip $OUTPUT
    fi
done

Ονομάστε το σκριπτάκι backup και μην ξεχάσετε να το κάνετε εκτελέσιμο:

chmod +x backup

Τώρα, για να έχετε το κεφάλι σας ήσυχο βάλτε το και σε ένα κρον (crontab -e) και καλή ανάσταση:

0 7 * * * /root/mysqlbackups/backup

 

καθορισμός δικαιώματων αρχείων και καταλόγων για wordpress, joomla, drupal κλπ.

Ο,τιδήποτε ορατό στο web, εκτίθεται σε πολλούς κινδύνους. Όχι ότι θα σώσει από τους πιο επιτήδειους, αλλά μην είστε και ξεκλείδωτοι, δώστε τα σωστά permission σε files & directories.

Για τους βιαστικούς:

Μια κι έξω για τα directory ως εξής:

find /path/to/your/wordpress/install/ -type d -exec chmod 755 {} \;

Και για τ’ αρχεία:

find /path/to/your/wordpress/install/ -type f -exec chmod 644 {} \;

Συνεχίστε την ανάγνωση του «καθορισμός δικαιώματων αρχείων και καταλόγων για wordpress, joomla, drupal κλπ.»

linux: επανεκκίνηση κάθε μέρα στις 7:00

tux penguin (linux logo)

Οι περισσότεροι λινουξάδες σιχαίνονται την επανεκκίνηση και μάλιστα την προγραμματισμένη γιατί τις περισσότερες φορές συγκαλύπτει το άλυτο πρόβλημα με αυτή την πυροσβεστική και προσωρινή λύση. Αν όμως δεν θέλετε να ψαχτείτε και πιστεύετε ότι το reboot θα λύσει μέρος των προβλημάτων σας, ο τρόπος για να το προγραμματίσετε είναι ο παρακάτω.

sudo crontab -e

Προσθήκη της γραμμής:

0 7 * * * /sbin/shutdown -r +10

Αποθήκευση του αρχείου και τέλος.

linux fhs: το πρότυπο της ιεραρχίας του συστήματος αρχείων

tux penguin (linux logo)

Η τελευταία έκδοση του προτύπου είναι η έκδοση 3 που δημοσιεύτηκε το Μάιο του 2015, ενώ η προηγούμενη έκδοση είχε δημοσιευτεί 11 χρόνια νωρίτερα. Γενικότερα το fhs αναθεωρείται τακτικά για να είναι ενήμερο ως προς τις συνεχείς τεχνολογικές αλλαγές.

Συνεχίστε την ανάγνωση του «linux fhs: το πρότυπο της ιεραρχίας του συστήματος αρχείων»

linux malware detect ή lmd ή maldet

Ubuntu Grey Logo

Άλλη μια ακροστιχίδα της αγγλικής: maldet, δηλαδή malware detect, αναγνώριση κακόβουλου λογισμικού ελληνιστί. Η ακροστιχίδα μας είναι τίτλος δημοφιλούς λογισμικού για linux, που προσπαθεί να εντοπίσει κακόβουλα προγράμματα, ενδείκνυται δε για shared hosted περιβάλλοντα και παρέχει βασική προστασία από απειλές στα user account.

Αν και το προϊόν λειτουργεί στα περισσότερα flavor του linux, τα παρακάτω ισχύουν για debian, ubuntu και παρεμφερή.

Συνεχίστε την ανάγνωση του «linux malware detect ή lmd ή maldet»

mysql .net connector: Authentication with old password no longer supported, use 4.1 style passwords.

mysql logo (110 x 57)

Αν συναντήσετε το exception «Authentication with old password no longer supported, use 4.1 style passwords.», ίσως έχετε πέσει θύματα της αλλαγής του policy του mysql, ο οποίος απαιτεί ισχυρότερα password κατά τη διασύνδεση μέσω του .net connector. Οι λύσεις στο πρόβλημα είναι 2.

Συνεχίστε την ανάγνωση του «mysql .net connector: Authentication with old password no longer supported, use 4.1 style passwords.»

mysql & linux: προσθήκη χρήστη

mysql logo (110 x 57)

Θα δείξουμε πως να προσθέσουμε νέο χρήστη στον mysql χρησιμοποιώντας την κονσόλα. Υποθέτουμε ότι ο mysql τρέχει σε σύστημα linux και ότι ο χρήστης jack που θέλουμε να φτιάξουμε απαιτεί select δικαιώματα στον πίνακα transaction της βάσης δεδομένων accounting.

Συνεχίστε την ανάγνωση του «mysql & linux: προσθήκη χρήστη»

apache: authorization και authentication

apache web server

Όσο βρισκόμαστε όλο και περισσότερο online, τόσο περισσότερο εξαρτώμεθα από το internet, συνηθίζουμε, καλομαθαίνουμε θα λέγαμε καλύτερα, να έχουμε τα δεδομένα μας πάντα και παντού. Η εξάρτηση αυτή συχνά φέρνει ερωτήματα για την ιδιωτικότητα (privacy), την ασφάλεια (security), τα δικαιώματα (privileges – ως αποτέλεσμα της εκχώρησης του authorization) κλπ. Και μια που η συνδεσιμότητά μας είναι συνυφασμένη με τους web server, θα δείξουμε πως ο δημοφιλέστερος από αυτούς τακτοποιεί την ταυτοποίηση και την εξουσιοδότηση των χρηστών.

Στο online manual του httpd αποσαφηνίζονται οι έννοιες authentication και authorization, σε ελεύθερη και εν τάχει μετάφραση:

Authentication είναι κάθε διαδικασία που επαληθεύει ότι κάποιος είναι αυτό που δηλώνει.

Παραθέτουμε και την αγγλική γιατί μάλλον είναι κομψότερη:

Authentication is any process by which you verify that someone is who they claim they are.

Αντίστοιχα για το authorization:

Authorization is any process by which someone is allowed to be where they want to go, or to have information that they want to have.

Authorization ονομάζεται κάθε διαδικασία που επιτρέπει σε κάποιον να είναι εκεί που θέλει να πάει, ή που διαθέτει την πληροφορία που κάποιος θέλει να έχει.

Αρκετά με τη θεωρία. Όπως όλες σχεδόν οι έξτρα λειτουργίες του httpd, για την αυθεντικοποίηση και τον έλεγχο πρόσβασης υπάρχουν τα κατάλληλα module, αναλόγως με το τι θέλετε να κάνετε. Αν για παράδειγμα οι χρήστες ταυτοποιούνται σε ldap server, θα χρειαστείτε το mod_authnz_ldap κοκ. Στο παρόν θα δείξουμε απλή προστασία με password.

Θα χρησιμοποιήσουμε το htpasswd που έρχεται με την εγκατάσταση του apache.

Ανάλογα που έχει εγκατασταθεί – αν δεν είστε πολύ τακτικοί εντοπίστε το με
find -name
και καλέστε το για να δημιουργήσετε το αρχείο με το password του jack
htpasswd -c passfile jack

Δείξτε προσοχή στο switch -c. Χρησιμοποιήστε το για να δημιουργήσετε νέο αρχείο με password. Αν απλά θέλετε να προσθέσετε νέο χρήστη σε υφιστάμενο αρχείο, παραλλείψτε το switch.
htpasswd passfile jack

Θυμηθείτε να μεταφέρετε το passfile σε μέρος προσβάσιμο π.χ. στο /etc/apache/conf/

Δημιουργήστε ένα .htaccess αρχείο στο directory που θέλετε να προστατέψετε:


AuthType Basic
AuthName "sos folder"
AuthBasicProvider file
AuthUserFile /etc/apache/passfile
Require user jack

Τέλος, να σημειώσουμε ότι τα παραπάνω δεν εγγυώνται ασφάλεια, για να επιτευχθεί κατ'ελάχιστο συνίσταται συνδυασμός με το mod_ssl.