Κατηγορία: linux

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

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

    Αναβάθμιση του 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: πως να ενεργοποιήσετε το tap στο touchpad και άλλα παρεμφερή

    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 backup

    Είδαμε κάτι αντίστοιχο για τον 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 {} \;

    (περισσότερα…)

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

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

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

    sudo crontab -e

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

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

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

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

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

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

    (περισσότερα…)

  • linux malware detect ή lmd ή maldet

    linux malware detect ή lmd ή maldet

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

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

    (περισσότερα…)

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

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

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

    (περισσότερα…)

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

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

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

    (περισσότερα…)

  • apache: authorization και authentication

    apache: authorization και authentication

    Όσο βρισκόμαστε όλο και περισσότερο 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.