Gestiunea Serviciilor de Rețea

Laborator 01 - Configurarea de bază a unui sistem Linux

Dacă un pachet nu este instalat iar un exercițiu face referire la acesta, instalați-l.

Linia de comandă în Linux

  • Comenzi/concepte/fișiere
    • shell, consolă, terminal, terminal virtual, emulator de terminal
    • prompt
    • comenzi
    • command completion
    • /etc/bash_completion, /etc/bash_completion.d
    • history
    • reverse search
    • keyboard shortcuts

Tutorial

  • Unul din avantajele majore ale CLI este utilizarea istoriei comenzilor și a autocomplete-ului. Cum se accesează aceste două elemente în Bash?
  • Încercați urmatoarele două comenzi: ping -c 1 google.com și apoi echo $_. Ce semnificație are rezultatul celei de-a doua comenzi?
  • În același terminal în care ați tastat comenzile de mai sus, apăsați CTRL + r și în noul prompt apărut tastați ping. Ce credeți că se întâmplă?

Exerciții

  • [01]. Care sunt comenzile care încep cu li?
Rezolvare
student@mjolnir:~$ li<TAB><TAB>
libnetcfg          liferea-add-feed   linux32            linux-version
libreoffice        line               linux64            lispmtopgm
liferea            link               linux-boot-prober  listres
  • [02]. Căutați în cadrul fișierului /etc/bash_completion șirul gunzip. Pentru ce extensii se va face autocompletion?
Rezolvare
student@mjolnir:~$ cat /etc/bash_completion | grep gunzip
complete -f -X '!*.@(Z|[gGd]z|t[ag]z)' gunzip zcat unpigz
  • [03]. Instalați pachetul make-doc. Scrieți (dar nu executați) comanda ls /usr/share/doc/make-doc/make.html. Folosind cât mai puține taste, schimbați-o în cd /usr/share/doc/make.
Rezolvare
root@mjolnir:~# apt-get install make-doc
[...]

root@mjolnir:~# ls /usr/share/doc/make-doc/make.html

Se pot folosi:
* Esc-B: "sare" un cuvânt înapoi
* Ctrl-K: "taie" textul din linia de comandă de la cursor până la sfârșit
* Ctrl-A: "sare" la inceputul liniei
  • [04]. Folosiți comanda cd - (cd minus). Ce efect are?
Rezolvare
Funcționează ca un "back" pentru navigarea în sistemul de fișiere:

root@mjolnir:~# pwd
/root

root@mjolnir:~# cd /usr/share/doc/make

root@mjolnir:/usr/share/doc/make# pwd
/usr/share/doc/make

root@mjolnir:/usr/share/doc/make# cd -
/root

root@mjolnir:~# pwd
/root
  • [05]. Folosiți comanda ls /var/cache/apt/archives/ (folosiți cât mai mult command completion). Ce comandă vă permite schimbarea cât mai eficientă în directorul /var/cache/apt/archives/ ?
Rezolvare
root@mjolnir:~# ls /var/cache/apt/archives/
[...]

root@mjolnir:~# cd $_

root@mjolnir:/var/cache/apt/archives# 
  • [06]. Folosiți comanda vim /etc/apt/sources.list. Părăsiți editorul. Rulați din nou comanda.
Rezolvare
root@mjolnir:~# vim /etc/apt/sources.list

:q părăsește editorul vi
săgeată-sus repetă comanda anterioară
  • [07]. Folosiți reverse search pentru a căuta comanda de instalare a pachetului make-doc (Hint: folosiți șirul make).
Rezolvare
Ctrl-R: reverse-search; se scrie textul "make" și se apasă enter
root@mjolnir:~#
(reverse-i-search)`make': cd /usr/share/doc/make

root@mjolnir:~# cd /usr/share/doc/make

root@mjolnir:/usr/share/doc/make#

Documentație în Linux

  • Comenzi/concepte utile:
    • whatis
    • apropos
    • --help
    • help
    • man
    • info
    • /usr/share/doc
    • documentație pe Internet/tutoriale

Tutorial

  • Tastați comanda apropos user. Ce semnificație are rezultatul de pe ecran?
  • Afișați pagina de manual a printf. Care este diferența dintre man printf și man 3 printf?
  • Deschideți pagina de manual a utilitarului ifconfig. Tastați /ether, apoi tastați n de câteva ori. Ce se întâmplă?
  • Deschideți un nou tab în Firefox, și mergeți la adresa file:////etc. Ce se întâmplă?

Exerciții

  • [01]. Ce comenzi sunt folosite pentru a lucra cu fișiere .zip? Ce comandă veți folosi pentru a afișa informații despre fișierele dintr-o arhivă .zip, fără a o dezarhiva?
Rezolvare
root@mjolnir:~# apropos zip
[...]
preunzip (1)         - prefix delta compressor for Aspell
prezip (1)           - prefix delta compressor for Aspell
prezip-bin (1)       - prefix zip delta word list compressor/decompressor
tgz (1)              - makes a gzip'd tar archive
unzip (1)            - list, test and extract compressed files in a ZIP archive
unzipsfx (1)         - self-extracting stub for prepending to ZIP archives
uz (1)               - gunzips and extracts a gzip'd tar'd archive
[...]

root@mjolnir:~# unzip -l archive.zip 
Archive:  archive.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
    13232  2009-11-08 19:53   changelog.Debian.gz
    35315  2009-11-08 19:53   changelog.gz
     1948  2009-11-08 19:53   copyright
     2466  2009-11-08 19:53   Explanations.gz
     2302  2009-11-08 19:53   NEWS.Debian.gz
    15905  2009-11-08 19:53   NEWS.gz
     3178  2009-11-08 19:53   README.gz
---------                     -------
    74346                     7 files
  • [02]. Ce conține secțiunea 5 a paginilor de manual? (Hint: man man ) Aflați informații despre fișierul /etc/passwd.
Rezolvare
root@mjolnir:~# man man
În primul ecran:
[..]
5   File formats and conventions eg /etc/passwd
[..]

root@mjolnir:~# man 5 passwd
  • [03]. Ce comenzi au informații în secțiunea 8? (Hint: /usr/share/man)
Rezolvare
root@mjolnir:~# ls /usr/share/man/man8
accessdb.8.gz			ntfscat.8.gz
acpid.8.gz			ntfsclone.8.gz
acpi_listen.8.gz		ntfscluster.8.gz
addgroup.8.gz			ntfscmp.8.gz
addpart.8.gz			ntfscp.8.gz
add-shell.8.gz			ntfsfix.8.gz
adduser.8.gz			ntfsinfo.8.gz
agetty.8.gz			ntfslabel.8.gz
anacron.8.gz			ntfsls.8.gz
apt.8.gz			ntfsprogs.8.gz
apt-cache.8.gz			ntfsresize.8.gz
[...]
  • [04]. Afișați informații de documentare despre comanda source. (Hint: source este o comandă internă bash. Ce pagină de manual ar trebui să accesați ?)
Rezolvare
root@mjolnir:~# man bash
Se caută cu "/source", apoi se folosește "n" pentru următoarea apariție a cuvântului //source//:
[...]
source filename [arguments]
Read  and execute commands from filename in the current shell environment and return the exit status of
the last command executed from filename.  
[...]
  • [05]. Folosiți o singură comandă pentru a căuta informații despre Implicit Rules din pagina info a utilitarului make. (Hint: man info)
Rezolvare
root@mjolnir:~# info make implicit rules
  • [06]. Căutați în pagina de manual a comenzii find exemplul de comandă care căută în /sbin și /usr/sbin fișierele cu drept de execuție dar fără drept de citire.
Rezolvare
root@mjolnir:~# man find
Jump la secțiunea Examples.
/-executable
Exemplul:
find /sbin /usr/sbin -executable \! -readable -print
  • [07]. Folosind o interfață web, parcurgeți documentația utilitarului make. (Hint: /usr/share/doc)
Rezolvare
In browser: file:///usr/share/doc/make-doc/make.html
  • [08]. Urmăriți în documentația Bash (man bash), secțiunea READLINE, subsecțiunea Readline Variables, ignorarea case-ului la command completion. Activați opțiunea și testați.
Rezolvare
/READLINE
/Readline Variables
root@mjolnir:~# echo "set completion-ignore-case on" >> ~/.inputrc
SAU
root@mjolnir:~# echo "set completion-ignore-case on" >> /etc/inputrc

root@mjolnir:~# mkdir AnA-ArE-MeRe

root@mjolnir:~# bash

root@mjolnir:~# cd ana

Gestiune pachete

  • Comenzi/concepte/fișiere
    • /etc/apt/sources.list
    • dpkg
    • dpkg-reconfigure
    • apt-get
    • apt-cache
    • aptitude
    • apt-file
    • update-alternatives

Tutorial

  • Utilizați comanda dpkg -l pentru a lista toate pachetele instalare în sistem
  • Instalați utilitarul apt-file și actualizați baza lui de date folosind comanda apt-file update

Exerciții

  • [01]. Afișați informații despre starea pachetelor de pe sistemul local ce conțin șirul make. (Hint: folosiți șirul make pentru căutare).
Rezolvare
root@mjolnir:~# dpkg -l "*make*"
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                   Version                Description
+++-======================-======================-============================================================
un  automake1.9            <none>                 (no description available)
un  cmake                  <none>                 (no description available)
un  liblocale-maketext-per <none>                 (no description available)
un  liblocale-maketext-sim <none>                 (no description available)
ii  make                   3.81-8.1               An utility for Directing compilation.
ii  make-doc               3.81-5.1               Documentation for the GNU version of the "make" utility.
un  makedev                <none>                 (no description available)
un  pmake                  <none>                 (no description available)
un  wmaker                 <none>                 (no description available)

root@mjolnir:~# dpkg -l | grep make
ii  ant                                  1.8.2-4                           Java based build tool like make
ii  ant-optional                         1.8.2-4                           Java based build tool like make - optional libraries
ii  glines                               1:3.0.2-2                         make color lines of five or more length
ii  make                                 3.81-8.1                          An utility for Directing compilation.
ii  make-doc                             3.81-5.1                          Documentation for the GNU version of the make" utility.
  • [02]. Ce fișiere, aflate în /usr/bin, conține pachetul make? (Hint: man dpkg)
Rezolvare
root@mjolnir:~# dpkg -L make | grep /usr/bin/
/usr/bin/make
  • [03]. Folosiți comanda tzconfig pentru a schimba timezone-ul pe ora Moscovei. Urmăriți indicațiile date de rularea comenzii.
Rezolvare
root@mjolnir:~# tzconfig
WARNING: the tzconfig command is deprecated, please use:
 dpkg-reconfigure tzdata

root@mjolnir:~# dpkg-reconfigure tzdata
  • [04]. Actualizați baza de pachetele locală.
Rezolvare
root@mjolnir:~# apt-get update
[...]
  • [05]. Căutați pachetele din repository care încep cu șirul di. (Hint: apt-cache și grep)
Rezolvare
root@mjolnir:~# apt-cache search di | grep ^di
di - advanced df like disk information utility
di-netboot-assistant - Debian-Installer netboot assistant
dia - Diagram editor
dia-common - Diagram editor (common files)
dia-gnome - Diagram editor (GNOME version)
dia-libs - Diagram editor (library files)
dia2code - a dia-UML code generator
diakonos - Customizable, usable console-based text editor
dialign - Segment-based multiple sequence alignment
[...]
  • [06]. Actualizați editorul implicit folosit în sistem în vim. Numele grupului de alternative este editor. (Hint: update-alternatives și --config)
Rezolvare
root@mjolnir:~# update-alternatives --config editor
There are 4 choices for the alternative editor (providing /usr/bin/editor).

  Selection    Path                Priority   Status
------------------------------------------------------------
* 0            /bin/nano            40        auto mode
  1            /bin/nano            40        manual mode
  2            /usr/bin/emacs23     0         manual mode
  3            /usr/bin/vim.basic   30        manual mode
  4            /usr/bin/vim.tiny    10        manual mode

Press enter to keep the current choice[*], or type selection number: 3
update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/editor (editor) in manual mode.
  • [07]. Căutați în repository pachetul ce conține fișierul header gdk.h. (Hint: apt-file)
Rezolvare
root@mjolnir:~# apt-get install apt-file
[...]

root@mjolnir:~# apt-file update
Downloading Index http://ftp.lug.ro/debian/dists/wheezy/main/Contents-amd64.diff/Index:
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  2053  100  2053    0     0   110k      0 --:--:-- --:--:-- --:--:--  133k
local file too old
[...]

root@mjolnir:~# apt-file search gdk.h | grep /gdk.h$
libgtk-3-dev: /usr/include/gtk-3.0/gdk/gdk.h
libgtk2.0-dev: /usr/include/gtk-2.0/gdk/gdk.h
lsb-build-desktop3: /usr/include/lsb3/gtk-2.0/gdk/gdk.h
r-cran-rgtk2: /usr/lib/R/site-library/RGtk2/include/RGtk2/gdk.h

Gestiune utilizatori

  • Comenzi/concepte/fișiere
    • useradd/adduser
    • userdel/deluser
    • groupmod
    • groupadd/addgroup
    • groupdel/delgroup
    • passwd
    • chpasswd
    • /etc/passwd
    • /etc/shadow
    • /etc/group
    • id/finger
    • who

Tutorial

Exerciții

  • [01]. Configurați sistemul astfel încât la adăugarea unui utilizator să i se creeze un director public_html/ și un director bin/ în home. (Hint: http://www.linfo.org/etc_skel.html)
Rezolvare
root@mjolnir:~# cd /etc/skel/

root@mjolnir:/etc/skel# mkdir public_html

root@mjolnir:/etc/skel# mkdir bin

root@mjolnir:/etc/skel# 
  • [02]. Adăugați în sistem utilizatorul ana cu parola ana. Utilizatorul ana trebuie să facă parte din grupul ana. Folosiți adduser.
Rezolvare
root@mjolnir:~# adduser ana
Adding user `ana' ...
Adding new group `ana' (1001) ...
Adding new user `ana' (1001) with group `ana' ...
Creating home directory `/home/ana' ...
Copying files from `/etc/skel' ...
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully
Changing the user information for ana
Enter the new value, or press ENTER for the default
	Full Name []: 
	Room Number []: 
	Work Phone []: 
	Home Phone []: 
	Other []: 
Is the information correct? [Y/n] 

root@mjolnir:~# ls -l /home/ana/
total 8
drwxr-xr-x 2 ana ana 4096 Nov 16 13:43 bin
drwxr-xr-x 2 ana ana 4096 Nov 16 13:43 public_html
  • [03]. Folosiți chpasswd pentru a schimba (în mod neinteractiv) parola utilizatorului ana în anaaremere.
Rezolvare
root@mjolnir:~# echo "ana:anaaremere" | chpasswd
  • [04]. Împiedicați autentificarea în sistem a utilizatorului ana. Verificați folosind su. (Hint: /etc/passwd, /bin/false)
Rezolvare
root@mjolnir:~# cat /etc/passwd | grep ^ana
ana:x:1001:1001::/home/ana:/bin/false
SAU
root@mjolnir:~# getent passwd ana
ana:x:1001:1001::/home/ana:/bin/false

root@mjolnir:~# su ana

root@mjolnir:~#

[Se schimbă calea shell-ului pentru userul ana în /bin/false]
  • [05]. Adăugați în sistem grupul gsrusers.
Rezolvare
root@mjolnir:~# groupadd gsrusers
  • [06]. Adăugați în sistem 3 utilizatori (bogdan, corina, dan) în grupul inițial gsrusers și home-ul în /home/gsrusers/$username ($username este, respectiv, bogdan, corina, dan). Folosiți useradd. (Hint: man useradd)
Rezolvare
root@mjolnir:~# mkdir /home/gsrusers

root@mjolnir:~# useradd -d /home/gsrusers/bogdan -m -g gsrusers -s /bin/bash bogdan
 
root@mjolnir:~# echo "bogdan:bogdan" | chpasswd

root@mjolnir:~# useradd -d /home/gsrusers/corina -m -g gsrusers -s /bin/bash corina

root@mjolnir:~# echo "corina:corina" | chpasswd

root@mjolnir:~# useradd -d /home/gsrusers/dan -m -g gsrusers -s /bin/bash dan

root@mjolnir:~# echo "dan:dan" | chpasswd

root@mjolnir:~# groups bogdan
bogdan : gsrusers

root@mjolnir:~# groups corina
corina : gsrusers

root@mjolnir:~# groups dan
dan : gsrusers
  • [07]. Creați grupul projects.
Rezolvare
root@mjolnir:~# groupadd projects
  • [08]. Adăugați utilizatorii bogdan și corina la grupul projects. Folosiți usermod.
Rezolvare
root@mjolnir:~# usermod -aG projects bogdan

root@mjolnir:~# usermod -aG projects corina

root@mjolnir:~# groups bogdan
bogdan : gsrusers projects

root@mjolnir:~# groups corina
corina : gsrusers projects
  • [09]. Modificați utilizatorul ana pentru a folosi ca grup inițial users și pentru a avea home-ul în /home/ana. (Hint: man usermod)
Rezolvare
root@mjolnir:~# killall -u ana

root@mjolnir:~# usermod -d /home/gsrusers/ana -m -g gsrusers ana
  • [10]. Ștergeți grupul ana.
Rezolvare
root@pisr:/home/andrei# groupdel ana
  • [11]. (EXTRA - for the brave souls that make it so far) Creați un script care primește ca argument un nume de utilizator ($user) și un nume de grup ($group). Scriptul va adăuga în mod neinteractiv utilizatorul $user în sistem în grupul inițial $group cu home-ul în /home/$group/$user. Parola va fi generată cu ajutorul utilitarului pwgen.
Rezolvare
N/A

Gestiunea sistemului și hardware-ului

  • Comenzi/concepte/fișiere
    • uname
    • /etc/issue
    • /dev
    • /sys
    • /proc
    • lspci
    • lsusb
    • lshw
    • uptime

Tutorial

  • N/A

Exerciții

  • [01]. Care este versiunea distribuției GNU/Linux de pe sistemul vostru? De cât este pornit sistemul? (Hint: ls -l /etc/*version)
Rezolvare
root@mjolnir:~# cat /etc/debian_version 
wheezy/sid

root@mjolnir:~# uname -a
Linux mjolnir 3.0.0-1-amd64 #1 SMP Sat Aug 27 16:21:11 UTC 2011 x86_64 GNU/Linux

root@mjolnir:~# uptime
 14:01:39 up 48 min,  2 users,  load average: 0.00, 0.02, 0.05
  • [02]. Folosiți uname pentru a afișa doar versiunea nucleului și a arhitecturii sistemului. (Hint: man uname)
Rezolvare
root@mjolnir:~# uname -ri
3.0.0-1-amd64 unknown
  • [03]. Câte dispozitive tip bloc și câte dispozitive de tip caracter se găsesc în /dev? (Hint: ls -l, grep ^c).
Rezolvare
root@mjolnir:~# ls -l /dev | grep ^c | wc -l
122

root@mjolnir:~# ls -l /dev | grep ^b | wc -l
17
  • [04]. Folosiți /proc și lshw pentru a afișa informații complete despre procesorul sistemului. (Hint: cpuinfo, man lshw)
Rezolvare
root@mjolnir:~# cat /proc/cpuinfo 
processor	: 0
vendor_id	: GenuineIntel
cpu family	: 6
model		: 23
model name	: Intel(R) Core(TM)2 Duo CPU     E7600  @ 3.06GHz
stepping	: 10
cpu MHz		: 1596.000
cache size	: 3072 KB
physical id	: 0
siblings	: 2
core id		: 0
cpu cores	: 2
apicid		: 0
initial apicid	: 0
fpu		: yes
fpu_exception	: yes
cpuid level	: 13
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good nopl aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 xsave lahf_lm dts tpr_shadow vnmi flexpriority
bogomips	: 6117.33
clflush size	: 64
cache_alignment	: 64
address sizes	: 36 bits physical, 48 bits virtual
power management:

processor	: 1
vendor_id	: GenuineIntel
cpu family	: 6
model		: 23
model name	: Intel(R) Core(TM)2 Duo CPU     E7600  @ 3.06GHz
stepping	: 10
cpu MHz		: 1596.000
cache size	: 3072 KB
physical id	: 0
siblings	: 2
core id		: 1
cpu cores	: 2
apicid		: 1
initial apicid	: 1
fpu		: yes
fpu_exception	: yes
cpuid level	: 13
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good nopl aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 xsave lahf_lm dts tpr_shadow vnmi flexpriority
bogomips	: 6117.94
clflush size	: 64
cache_alignment	: 64
address sizes	: 36 bits physical, 48 bits virtual
power management:

root@mjolnir:~# apt-get install lshw
[...]

root@pisr:~# lshw -class processor
  *-cpu                   
       description: CPU
       product: Intel(R) Core(TM)2 Duo CPU     E7600  @ 3.06GHz
       vendor: Intel Corp.
       physical id: 4
       bus info: cpu@0
       version: Intel(R) Core(TM)2 Duo CPU     E7600  @ 3.06GHz
       serial: To Be Filled By O.E.M.
       slot: PROCESSOR
       size: 1596MHz
       capacity: 4GHz
       width: 64 bits
       clock: 266MHz
       capabilities: fpu fpu_exception wp vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx x86-64 constant_tsc arch_perfmon pebs bts rep_good nopl aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 xsave lahf_lm tpr_shadow vnmi flexpriority cpufreq
  • [05]. Ce conțin intrările addr_len, addresss și statistics/ din directorul /sys/class/net/eth1/.
Rezolvare
root@mjolnir:~# cd /sys/class/net/eth0

root@mjolnir:/sys/class/net/eth0# cat addr_len
6 <- lungimea adresei MAC, în octeți

root@mjolnir:/sys/class/net/eth0# cat address
70:71:bc:18:1b:ea <- adresa MAC

root@mjolnir:/sys/class/net/eth0# cd statistics/

root@mjolnir:/sys/class/net/eth0/statistics# ls
collisions     rx_errors	 rx_packets	    tx_errors
multicast      rx_fifo_errors	 tx_aborted_errors  tx_fifo_errors
rx_bytes       rx_frame_errors	 tx_bytes	    tx_heartbeat_errors
rx_compressed  rx_length_errors  tx_carrier_errors  tx_packets
rx_crc_errors  rx_missed_errors  tx_compressed	    tx_window_errors
rx_dropped     rx_over_errors	 tx_dropped
laboratoare/laborator-01.txt · Last modified: 2011/11/16 14:05 by george.milescu