Μετάβαση στο περιεχόμενο

Ρυθμίσεις cookies

Επιλέξτε ανά κατηγορία ποια cookies επιτρέπετε. Μπορείτε να αλλάξετε την επιλογή σας οποιαδήποτε στιγμή μέσω των Ρυθμίσεων cookies στο κάτω μέρος κάθε σελίδας. Δήλωση απορρήτου

Απαραίτητα

Πάντα ενεργά

Χρειάζονται για τη σύνδεση, για να διατηρείται το καλάθι σας και για να θυμόμαστε τις επιλογές σας. Είναι πάντα ενεργά.

Ποια cookies;
  • weboke_sessie, weboke_klant, weboke_remember: η συνεδρία σας και η παραμονή σε σύνδεση
  • weboke_basket: το καλάθι σας
  • wkBtwIncl: εμφάνιση τιμών με ή χωρίς ΦΠΑ
  • wok_cookies: η επιλογή σας για τα cookies, 12 μήνες

Μετρούν ποια διαφήμιση οδηγεί σε επίσκεψη ή παραγγελία, ώστε να μην πληρώνουμε για διαφημίσεις που δεν αποδίδουν.

Ποια cookies;
  • Google Ads μέσω Google Tag Manager (_gcl_au, _gcl_aw), έως 90 ημέρες
  • OpenAI Ads, διαφημίσεις στο ChatGPT
  • wok_aff: μέσω ποιου συνεργάτη ήρθατε σε εμάς (πρόγραμμα συνεργατών), 60 ημέρες

4,6

Χώρα και γλώσσα

Κάθε χώρα έχει τη δική της ιστοσελίδα, με τιμές και ΦΠΑ της χώρας αυτής.

Προβολή

Περιήγηση στη γραμμή εντολών

Ενότητα 1: Ο πρώτος σας server · Χρόνος ανάγνωσης: 11 λεπτά

Στόχος μαθήματος: Μετά από αυτό το μάθημα μπορείτε να κινείστε άνετα σε έναν Linux server: να περιηγείστε σε φακέλους, να διαβάζετε και να επεξεργάζεστε αρχεία, να βλέπετε πόσος χώρος δίσκου και πόση μνήμη είναι ελεύθερα και να βρίσκετε μόνοι σας βοήθεια για μια εντολή.

Βασικές έννοιες: shell, prompt, φάκελος και διαδρομή, απόλυτη και σχετική διαδρομή, /etc, /var/log, /home, ls -l, cd, cat, less, nano, man, --help, συμπλήρωση με Tab, uname, df, free, uptime, pipe, grep

Το shell και το prompt

Μετά τη σύνδεση επικοινωνείτε με το shell: το πρόγραμμα που διαβάζει και εκτελεί τις εντολές σας. Στο Debian και στο Ubuntu αυτό είναι συνήθως το bash. Αριστερά από τον κέρσορα βρίσκεται το prompt:

anna@web1:~$
root@web1:~#

Αυτό σας λέει τρία πράγματα: ποιος είστε (anna ή root), σε ποιον server (web1) και σε ποιον φάκελο βρίσκεστε (το ~ είναι ο δικός σας αρχικός φάκελος). Ο τελευταίος χαρακτήρας είναι σημαντικός: το $ σημαίνει απλός χρήστης, το # σημαίνει root. Αν βλέπετε #, κάθε εντολή εκτελείται με όλα τα δικαιώματα. Πληκτρολογείτε εκεί με προσοχή.

Φάκελοι και διαδρομές

Στο Linux τα πάντα κρέμονται από ένα ενιαίο δέντρο που ξεκινά από το / (ο ριζικός φάκελος, που δεν πρέπει να τον μπερδεύετε με τον χρήστη root). Μερικούς φακέλους θα τους συναντάτε συνεχώς σε αυτό το μάθημα:

ΦάκελοςΤι περιέχει
/etcΡυθμίσεις: SSH (/etc/ssh), web server (/etc/nginx), χρήστες (/etc/passwd)
/var/logΑρχεία καταγραφής (πέρα από το journal, μάθημα 6.2)
/var/libΔεδομένα προγραμμάτων, για παράδειγμα βάσεις δεδομένων και Docker
/homeΑρχικοί φάκελοι απλών χρηστών, όπως ο /home/anna
/rootΑρχικός φάκελος του root
/usrΕγκατεστημένα προγράμματα και βιβλιοθήκες
/tmpΠροσωρινά αρχεία, που καθαρίζονται αυτόματα
/srv ή /var/wwwΣυνήθης θέση για ιστότοπους και υπηρεσίες

Μια απόλυτη διαδρομή ξεκινά από το /, για παράδειγμα /etc/ssh/sshd_config. Μια σχετική διαδρομή ξεκινά από εκεί όπου βρίσκεστε τώρα: αν βρίσκεστε στο /etc, τότε το ssh/sshd_config είναι το ίδιο αρχείο. Το .. είναι ο φάκελος από πάνω, το . ο τρέχων φάκελος.

anna@web1:~$ pwd
/home/anna
anna@web1:~$ cd /etc/ssh
anna@web1:/etc/ssh$ ls
moduli  ssh_config  ssh_config.d  sshd_config  sshd_config.d  ssh_host_ed25519_key  ssh_host_ed25519_key.pub ...
anna@web1:/etc/ssh$ cd ..
anna@web1:/etc$ cd
anna@web1:~$

Το cd χωρίς τίποτα μετά σας επιστρέφει στον αρχικό σας φάκελο.

Προβολή αρχείων

Το ls -l δείχνει περισσότερα από τα ονόματα:

anna@web1:/etc/ssh$ ls -l sshd_config ssh_host_ed25519_key ssh_host_ed25519_key.pub
-rw-r--r-- 1 root root 3248 Aug 12 10:01 sshd_config
-rw------- 1 root root  399 Nov  2 14:20 ssh_host_ed25519_key
-rw-r--r-- 1 root root   91 Nov  2 14:20 ssh_host_ed25519_key.pub

Από αριστερά προς τα δεξιά: τα δικαιώματα, ο αριθμός συνδέσμων, ο κάτοχος, η ομάδα, το μέγεθος σε bytes, η ημερομηνία και το όνομα. Προσέξτε τη διαφορά: το μυστικό host key (-rw-------) μπορεί να το διαβάσει μόνο ο root, το δημόσιο (-rw-r--r--) ο καθένας. Στο μάθημα 3.1 θα μάθετε να διαβάζετε αυτά τα δικαιώματα με ακρίβεια. Το ls -la εμφανίζει και τα κρυφά αρχεία: ονόματα που ξεκινούν με τελεία, όπως το .ssh.

Για να διαβάσετε το περιεχόμενο:

  • cat bestand: ολόκληρο το αρχείο με μία κίνηση, πρακτικό για μικρά αρχεία·
  • less bestand: περιήγηση με τα βελάκια και το κενό, αναζήτηση με /woord, έξοδος με q·
  • head -n 20 bestand και tail -n 20 bestand: οι πρώτες ή οι τελευταίες γραμμές· το tail -f συνεχίζει να παρακολουθεί καθώς προστίθενται γραμμές.

Επεξεργασία αρχείου με το nano

Τις ρυθμίσεις τις αλλάζετε σε έναν επεξεργαστή κειμένου. Το nano είναι ο απλούστερος:

root@web1:~# nano /etc/hosts

Στο κάτω μέρος εμφανίζονται οι συντομεύσεις· το ^ σημαίνει Ctrl. Αποθήκευση είναι Ctrl+O και Enter, έξοδος Ctrl+X, αναζήτηση Ctrl+W. Όποιος ήδη δουλεύει με το vim μπορεί να το χρησιμοποιήσει· το vim δεν είναι πάντα πλήρως διαθέσιμο σε μια ελάχιστη εγκατάσταση.

Τρεις συνήθειες που αργότερα σας γλιτώνουν από πολλά προβλήματα:

  1. Κάντε πρώτα ένα αντίγραφο: cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak.
  2. Ελέγξτε τη ρύθμιση πριν επανεκκινήσετε μια υπηρεσία. Πολλά προγράμματα έχουν δική τους εντολή γι' αυτό: sshd -t, nginx -t (μαθήματα 2.2 και 7.2).
  3. Αλλάζετε ένα πράγμα κάθε φορά, ώστε να ξέρετε τι προκάλεσε ένα σφάλμα.

Σε τι κατάσταση είναι ο server σας;

Μερικές εντολές που χρησιμοποιείτε σε κάθε περίσταση:

anna@web1:~$ uname -a
Linux web1 6.12.0-... #1 SMP ... x86_64 GNU/Linux
anna@web1:~$ uptime
 10:12:44 up 3 days,  2:10,  1 user,  load average: 0.08, 0.05, 0.01
anna@web1:~$ df -h /
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        40G  3.1G   35G   9% /
anna@web1:~$ free -h
               total        used        free      shared  buff/cache   available
Mem:           3.8Gi       412Mi       2.9Gi       1.0Mi       720Mi       3.4Gi
Swap:             0B          0B          0B
  • uname -a: ποιος kernel εκτελείται.
  • uptime: πόση ώρα είναι ήδη σε λειτουργία ο server και το load average για 1, 5 και 15 λεπτά. Χοντρικά: ένα load που μένει για μεγάλο διάστημα πάνω από τον αριθμό των πυρήνων του επεξεργαστή σημαίνει ότι υπάρχει αναμονή.
  • df -h: ελεύθερος χώρος δίσκου (το -h σημαίνει "human readable", με G και M). Ένας γεμάτος δίσκος είναι από τις πιο συχνές αιτίες για έναν server που σταματά "χωρίς λόγο".
  • free -h: μνήμη. Κοιτάξτε τη στήλη available, όχι το free: το Linux χρησιμοποιεί την ελεύθερη μνήμη ως cache (buff/cache) και την αποδίδει όταν τη χρειάζεται ένα πρόγραμμα.

Και το δίκτυό σας, από το μάθημα 1.2: ip -brief address.

Αναζήτηση βοήθειας

Δεν χρειάζεται να θυμάστε όλες τις επιλογές. Πρέπει όμως να ξέρετε πού θα τις βρείτε:

  • Το man ssh ανοίγει το εγχειρίδιο (manual page) μιας εντολής. Περιήγηση όπως στο less, αναζήτηση με /. Το man sshd_config περιγράφει κάθε ρυθμιζόμενη λέξη σε εκείνο το αρχείο.
  • Το ls --help δίνει στις περισσότερες εντολές μια σύντομη λίστα επιλογών.
  • Το πλήκτρο Tab συμπληρώνει ονόματα εντολών και αρχείων. Πατώντας δύο φορές Tab εμφανίζονται οι δυνατές επιλογές. Έτσι αποφεύγετε τυπογραφικά λάθη σε μεγάλες διαδρομές.
  • Το πάνω βελάκι επαναφέρει προηγούμενες εντολές· το history τις εμφανίζει όλες.

Σε μια ελάχιστη εγκατάσταση λείπουν μερικές φορές τα εγχειρίδια. Στο Debian και στο Ubuntu τα εγκαθιστάτε με apt install man-db (ενότητα 4).

Pipes και grep

Μπορείτε να συνδέετε εντολές μεταξύ τους με ένα pipe (|): η έξοδος της μίας γίνεται είσοδος της επόμενης. Το grep φιλτράρει τις γραμμές που περιέχουν μια λέξη:

anna@web1:~$ grep PasswordAuthentication /etc/ssh/sshd_config
#PasswordAuthentication yes
anna@web1:~$ ls -l /etc | less

Οι γραμμές που ξεκινούν με # είναι σχόλια: δεν κάνουν τίποτα και συχνά δείχνουν την προεπιλεγμένη τιμή. Στο μάθημα 2.2 θα δείτε γιατί αυτό μπορεί να προκαλέσει σύγχυση στο SSH.

Παγίδες

  • Επικόλληση χωρίς ανάγνωση. Οι εντολές από το internet κάνουν ακριβώς ό,τι γράφουν, ακόμη κι αν αυτό διαφέρει από όσα υπόσχεται ο τίτλος του άρθρου. Διαβάζετε κάθε εντολή πριν την εκτελέσετε, ιδίως όταν είστε root.
  • Το rm δεν έχει κάδο ανακύκλωσης. Ό,τι διαγράφεται χάνεται. Να είστε ιδιαίτερα προσεκτικοί με το rm -r (ένας φάκελος με όλο το περιεχόμενό του) και με χαρακτήρες μπαλαντέρ όπως το *.
  • Τα κεφαλαία μετράνε. Το /etc/SSH δεν υπάρχει· το /etc/ssh υπάρχει.
  • Τα κενά σε διαδρομές πρέπει να μπαίνουν σε εισαγωγικά: cat "/srv/mijn site/index.html". Ακόμη καλύτερα: μη χρησιμοποιείτε κενά σε ονόματα σε έναν server.

Σύνοψη

  • Το prompt σας λέει ποιος είστε, σε ποιον server και πού βρίσκεστε· το # σημαίνει root.
  • Οι ρυθμίσεις βρίσκονται στο /etc, τα logs στο /var/log, τα δεδομένα προγραμμάτων στο /var/lib, οι αρχικοί φάκελοι στο /home.
  • Διαβάζετε με cat, less, head και tail· επεξεργάζεστε με nano, αφού κάνετε αντίγραφο, και ελέγχετε τη ρύθμιση πριν από την επανεκκίνηση.
  • Τα df -h, free -h, uptime και ip -brief address δείχνουν σε τι κατάσταση είναι ο server σας.
  • Βοήθεια βρίσκετε στο man και στο --help· το Tab συμπληρώνει· με | και grep φιλτράρετε την έξοδο.

Κουίζ

1. Το prompt σας είναι root@web1:/var/log#. Τι γνωρίζετε τώρα;



2. Βρίσκεστε στο /etc. Ποια διαδρομή δείχνει στο ίδιο αρχείο με το /etc/nginx/nginx.conf;



3. Το free -h δείχνει free 120Mi και available 2.9Gi. Έχει ο server πολύ λίγη μνήμη;



4. Ποια είναι η πιο συνετή κίνηση πριν αλλάξετε το /etc/ssh/sshd_config;



5. Πού ψάχνετε ποιες ρυθμίσεις αναγνωρίζει το sshd_config;



Άσκηση

Άσκηση O1.4: Γνωριμία με τον server σας. Εκτελέστε τις εντολές του μαθήματος στον δικό σας server και συμπληρώστε: διανομή και έκδοση, kernel, ελεύθερο χώρο δίσκου, διαθέσιμη μνήμη, load, IPv4 και IPv6, καθώς και ποια αρχεία στο /etc/ssh μπορεί να τα διαβάσει μόνο ο root. Στη συνέχεια απαντήστε σε δύο ερωτήσεις σχετικά με όσα είδατε.

Άσκηση O1.4: Γνωριμία με τον server σας

Αυτή την άσκηση την κάνετε μόνοι σας: κανείς δεν την ελέγχει. Σημειώστε τι έχετε κάνει και επισημάνετε την άσκηση ως ολοκληρωμένη.



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

Για περαιτέρω μελέτη

Μια στιγμή…

Ρυθμίστε τα domains σας

Ρυθμίστε για κάθε domain τους nameservers, τη σύνδεση με το hosting σας και ποιος θα είναι ο κάτοχος.

Φόρτωση των domains σας…