Ενότητα 1 · 1.4
Περιήγηση στη γραμμή εντολών
Ενότητα 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 δεν είναι πάντα πλήρως διαθέσιμο σε μια ελάχιστη εγκατάσταση.
Τρεις συνήθειες που αργότερα σας γλιτώνουν από πολλά προβλήματα:
- Κάντε πρώτα ένα αντίγραφο:
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak. - Ελέγξτε τη ρύθμιση πριν επανεκκινήσετε μια υπηρεσία. Πολλά προγράμματα έχουν δική τους εντολή γι' αυτό:
sshd -t,nginx -t(μαθήματα 2.2 και 7.2). - Αλλάζετε ένα πράγμα κάθε φορά, ώστε να ξέρετε τι προκάλεσε ένα σφάλμα.
Σε τι κατάσταση είναι ο 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 0Buname -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φιλτράρετε την έξοδο.
Κουίζ
Άσκηση
Άσκηση O1.4: Γνωριμία με τον server σας. Εκτελέστε τις εντολές του μαθήματος στον δικό σας server και συμπληρώστε: διανομή και έκδοση, kernel, ελεύθερο χώρο δίσκου, διαθέσιμη μνήμη, load, IPv4 και IPv6, καθώς και ποια αρχεία στο /etc/ssh μπορεί να τα διαβάσει μόνο ο root. Στη συνέχεια απαντήστε σε δύο ερωτήσεις σχετικά με όσα είδατε.
Άσκηση O1.4: Γνωριμία με τον server σας
Αυτή την άσκηση την κάνετε μόνοι σας: κανείς δεν την ελέγχει. Σημειώστε τι έχετε κάνει και επισημάνετε την άσκηση ως ολοκληρωμένη.
Η στήλη available περιλαμβάνει και τη μνήμη cache που αποδεσμεύει το Linux. Το αρχείο .pub είναι το δημόσιο μέρος που βλέπει κάθε client· το αρχείο χωρίς .pub είναι μυστικό (600, root), γιατί όποιος το έχει μπορεί να παριστάνει τον server σας.
Τα τικ και οι σημειώσεις σας παραμένουν μόνο σε αυτό το πρόγραμμα περιήγησης· δεν τα στέλνουμε πουθενά. Αν έχετε εγγραφεί, αποθηκεύουμε στο Τα μαθήματά μου μόνο ότι έχετε ολοκληρώσει την άσκηση.
Για περαιτέρω μελέτη
- Αύξηση του αποθηκευτικού χώρου του VPS σας
- Πρόσβαση SSH και το Terminal στο DirectAdmin: ποια πακέτα την περιλαμβάνουν και πώς συνδέεστε
- Debian Reference, κεφάλαιο 1 (οδηγός για τη γραμμή εντολών): https://www.debian.org/doc/manuals/debian-reference/ch01.en.html
- Filesystem Hierarchy Standard 3.0: https://refspecs.linuxfoundation.org/FHS_3.0/fhs/index.html
