Sunteți pe pagina 1din 9

 UTILIZATORI, GRUPURI, PAROLE

sudo useradd dracula ( face cont)

sudo pswd dracula (parola cont)

sudo groupadd monsters (face grup)

sudo adduser dracula monsters (adauga cont existent la grup)

usermod -m -d /newhome/username username ( seteaza home ul)

sudo usermod -d /home/countdracula dracula ( set path for dracula) + mkdir /home/countdracula

adaug folder cu toate drepturile la utilizator: sudo chown username: foldername

sudo chgrp groupname ./foldername ( adaugare la grup fisier)

sudo chmod g+rw ./foldername (adaugare drept read-write)

chmod u,g,a + ( - ) rwx

ls –l ( vezi drepturile, dimensiune fisier etc)

 CREARE EXECUTABIL , MAKEFILE

touch Makefile

touch exec

sudo chmod a+x exec

vim Makefile

{ build: light.o sound.o

gcc light.o sound.o -o exec

light.o: sound.c

gcc -c sound.c

sound.o: sound.c

gcc -c sound.c

make build ---> corect


make run ---> recompilare si ii da run programului

run: build

./exec

make clean --->sterge obiecte create de executabil ( doar sound.o rezulta din exec) si exec

clean:

rm sound.o exec

make templates ---> creeaza intermediarele boo.s si boo.o din boo.c

templates: boo.c

gcc -c -save-temps boo.c

 APLICATII

1.a) Scrieţi un script în /home/student/tema2-scripts numit task1a.sh în care generaţi


un fişier numit filesys.bin de 1000 MB (1M = 1024K) care să conţină doar octeţi de 0 în
folderul /mnt (hint: dd)

#!/bin/bash

sudo dd if=/dev/zero of=/mnt/filesys.bin count=1000 bs=1M

b) Scrieţi un script în /home/student/tema2-scripts numit task1b.sh în care să


modificați fișierul filesys.binastfel încât acesta să conțină un sistem de fișiere de
tip ext2 (hint: mkfs)

#!/bin/bash

sudo mkfs.ext2 /mnt/filesys.bin

c) Scrieţi un script în /home/student/tema2-scripts numit task1c.sh în care să creaţi un


mountpoint în /mnt/mymnt şi să montaţi filesystem-ul obţinut
anterior /mnt/filesys.bin acolo de tip loop

#!/bin/bash

sudo mkdir /mnt/mymnt

sudo mount /mnt/filesys.bin /mnt/mymnt

d) Scrieţi un script în /home/student/tema2-scripts numit task1d.sh în care creaţi două


foldere în noul sistem de fişiere montat în /mnt/mymnt - randoms, passwords
 În folderul randoms generaţi un fişier de 10000 Bytes cu date random. Asigurati-va ca
tipul lui e binar. Numele lui trebuie sa fie random.bin
 În folderul passwords generaţi 100 de fişiere care să conţină parole cu date random
având numele: only_numbers_and_lettersNUM.txt - va conţine o parolă de 30 de
caracatere random formată doar din litere mari şi/sau mici şi cifre. Nici un alt caracter
acceptabil, NUM din nume e o valoare din intervalul (1..100). Hint: Bash loops
#!/bin/bash
sudo mkdir /mnt/mymnt/randoms
sudo mkdir /mnt/mymnt/passwords
sudo dd if=/dev/urandom of=/mnt/mymnt/randoms/random.bin count=1
bs=10000
for NUM in {1 ..100}
{
sudo touch /mnt/mymnt/passwords/only_numbers_and_letters$NUM.txt
sudo head /dev/urandom | tr –dc A-Za-z0-9 | head –c 30 >
/mnt/mymnt/passwords/only_numbers_and_letters$NUM.txt
}
e) Realizaţi configuraţiile necesare în sistemul vostru astfel încât la fiecare reboot să
găsim montat filesys.bin în /mnt/mymnt cu permisiuni de citire şi scriere pentru orice
utilizator al sistemului. Hint fstab.
vim /etc/fstab
/mnt/filesys.bin /mnt/mymnt ext2 rw 0 0
sudo mount –a
2. Realizaţi un shell script numit task2.sh plasat în /home/student/tema2-scripts.
Acesta va monitoriza următoarele valori din sistem şi le va plasa într-un
fişier /home/student/system_monitor.csv în modul append. Fiecare linie din csv va avea
forma:
name_of_computer,timestamp,percent_cpu_usage_inSystemAtThisTime,bytes_of_mem_
usage_inSystemAtThisTime,num_bytes_transmitted,num_bytes_received
Octeţii (bytes) received/transmitted se referă la octeţii de date primiţi şi transmişi pe
interfaţa de reţea: enp0s3
Memoria consumată se referă la memoria RAM consumată la acel moment de timp. Se
doreşte valoarea în KB (kilobytes, kilo-octeţi), nu MB, GB etc…
CPU usage: este procentul de CPU folosit de întregul sistem la acel moment pe o medie de
15 minute. Valoarea va fi un număr real (de tip float, de forma 0.19 - observaţi că
separarea părţii întregi de cea fracţionară se face prin PUNCT (.) şi nu prin virgulă!)
Se vor monitoriza 10 iteraţii în fişierul csv cerut. Asta înseamnă că fişierul csv va conţine
doar 10 linii de forma descrisă mai sus, separate prin virgulă (,)
Hints:
 Pentru timestamp: man date, căutaţi după seconds since 1970-01-01 00:00:00
UTC
 Pentru octeţii transmişi/primiţi pe interfaţa de reţea: /proc/net/dev sau ls
/sys/class/net/enp0s3/statistics
 Pentru memoria consumată: free
 Pentru CPU usage: uptime
 Pentru numărul de iteraţii: Bash loops
 shell expansion
#!/bin/bash
for i in {1..10}
do
echo “$(hostname)” >> /home/student/system_monitor.csv
done
 3. Realizaţi un script în /home/student/tema2-scripts numit task3.sh în care
afişaţi dimensiunea totală în octeţi (bytes) a tuturor fişierelor cu extensia .conf din
folderul /etc (în mod recursiv) într-un fişier /home/student/total_size.txt iar
erorile le raportează în /home/student/error.txt. Câteva aspecte importante
despre script:
 Nu se va rula ca root. Se va rula ca student. Aşadar fişierele asupra cărora
student nu va putea citi vor da erori ce vor fi raportate
 Nu-l complicaţi prea mult, ideal se poate face dintr-o singură comandă
(oneliner) sau un shell script cu maxim 3 linii.
Hints:

 Când descoperiţi fişierele *.conf - lista lor - s-ar putea să fie nevoie să afişaţi totul
pe o singură linie.
Puteţi obţine acest lucru folosind sed
 stat, paste, bc, find
#!/bin/bash
for dim in $((ls –Rl /etc | grep ‘\.conf$’ | cut –d’ ‘ –f5) 2>
/home/student/error.txt)
do
let suma=suma+dim
done
echo $suma > /home/student/total_size.txt
 4. Creați un script în directorul /home/student/tema2-
scripts numit real_users.sh care să afișeze toți utilizatorii reali din sistem,
sortați lexicografic, câte unul pe linie. Prin utilizator real înţelegem un utilizator care
are un shell valid de login.
Hint: /etc/shells
#!/bin/bash
for user in $(cat /etc/passwd | sort)
do
if grep –Fxq “$(echo $user | cut –d: -f7 )” /etc/shells
then
echo $user | cut –d: -f1
done
5. Să se creeze un script în directorul /home/student/tema2-
scripts numit powsnsums.sh care primește argumente în linia de comandă, să se decidă
care dintre ele sunt numere intregi in baza 10 și să se afișeze:
1. Numărul de argumente primite în lina de comandă.
2. Numerele ce reprezintă o putere de a lui 2, câte unul pe linie, în ordinea primită. (A
nu se considera 1 putere a lui 2)
3. Suma numerelor.
#!/bin/bash
echo “Numarul de argumente este $#.”
for arg in “$@”;
do
p=0
nr=$arg
while (( nr > 0 ));
do
if (( (nr & 1) == 1 )); then
p=$(( p +1 ))
fi
if (( p > 1 )); then
break
fi
nr=$(( nr >> 1 ))
done
if ( (( p == 1 )) && (( $arg != 1 )) ); then
printf ‘%d\n’ “$arg”
fi
done
for arg in $@
do
nr=$arg
if [ -n “$nr” ] && [ “$arg” –eq “$nr” ] 2>/dev/null
then
sum=$((sum+arg))
fi
done
echo “Suma nr este $sum.”

6. Configurati carol si ferdinand sa poata comunica (da ping) unul cu celalalt. Ele au deja
adrese puse pe interfetele eth0, insa nu pot comunica. Checkerul va verifica daca acestea
pot vorbi cu masina virtuala (192.168.1.1). Configurați în mod static temporar, pe
interfetele eth0 ale containerelor urmatoarele adrese:
 192.168.1.14/24 pe carol
 192.168.1.27/24 pe ferdinand
 192.168.1.34/24 pe cantacuzino
 192.168.1.41/24 pe titulescu
Faceţi configuraţiile anterioare sa fie permanente (dupa un restart al containerului,
configuraţiile încă să existe).
Vedem ce adresa ip avem pe fiecare container cu ip a s
Adaugam adresele ip dorite cu ip addr add 192.168.1.14/24 dev eth0 pt prima de
exemplu
Stergem adresele ip nedorite cu ip addr del 192.168.1.13/45 dev eth0 de exemplu
Pentru a face configuratiile permanente: ( de ex. pt carol)
vim /etc/rc.local
ip addr flush dev eth0
ip addr add 192.168.1.14/24 dev eth0
(aceste 2 comenzi intre comentarii si exit 0 )
chmod a+x /etc/rc.local
.//etc/rc.local
sudo docker restart carol pe host
7. Nu ne putem conecta cu SSH pe titulescu de pe celelalte containere sau de pe masina
virtuala. Rezolvati problema. Faceti ca problema sa nu revina la un restart al
containerului titulescu (nu se puncteaza daca doar ati rezolvat temporar problema).
service ssh start systemctl start ssh systemctl enable ssh
8. Pe containerul cantacuzino pare să nu fie conexiune la internet (ping google.com va
eşua). Investigaţi care este sursa problemei şi realizaţi configuraţia necesară. Puteţi folosi
orice adresă publică o găsiţi pe Internet, nu există restricţii, important e să rezolvaţi
problema.
vim /etc/network/interfaces
dupa source-directory interfaces.d (cu un rand liber intre ele):
auto eth0
iface eth0 inet static
address 192.168.1.34
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
se sterg cele 2 comenzi din /etc/rc.local si pastreaz doar exit 0 dupa comentarii
9. La task-ul anterior probabil că aţi realizat o configuraţie temporară. Plănuim ca după un
restart al containerului cantacuzino problema să nu mai revină, e nevoie să realizaţi o
configuraţie permanentă, care să fie disponibilă şi după reboot.
vim /etc/systemd/resolved.conf
DNS=8.8.8.8
FallbackDNS=8.8.8.8
sudo docker restart cantacuzino pe host
10. Configuraţi SSH astfel incat userul student de pe containerul titulescu sa se poata
conecta la userul student de pe containerul cantacuzino fara sa i se ceara parola.
(student@titulescu → student@cantacuzino)
Configuraţi un server de SAMBA (smb) pe cantacuzino. Creaţi un folder /mnt/trianon pe
care sa il distribuiţi prin samba şi în el creaţi
fişierele: franta, marea_britanie, sua, italia, japonia, regatul_sarbocroat, cehoslov
acia, ungaria. Share-ul se va numi trianon.
Montati pe containerul titulescu filesystemul share-uit prin samba in directorul /mnt/smb.
De pe titulescu:
ssh-keygen
ssh-copy-id student@192.168.1.34
ssh student@192.168.1.34
(analog de pe cantacuzino cu adresa ip a lui titulescu)
Instalare samba
sudo apt-get update
sudo apt-get install samba smbclient cifs-utils
sudo smbpasswd –a student ( punem parola student userului student)
vim /etc/samba/smb.conf
dam la sfarsitul fisierului si scriem urmatoarele exact asa dupa 2-3 randuri de
ultimul rand de text:
[trianon] ( nume share) (urmeaza tab uri mereu)
path = /mnt/trianon
read only = no
valid users = student
browsable = yes
public = yes
writable = yes
service smbd start
cream fisierul de share uit /mnt/trianon cu fisierele aferente in el
montam fisierul /mnt/trianon pe titulescu in /mnt/smb
cream /mnt/smb cu mkdir
vim /etc/fstab
//192.168.1.34/trianon /mnt/smb cifs
username=student,password=student,iocharset=utf8,file_mode=0777,dir_
mode=0777 0 0
mount –a
11. Realizaţi configuraţia de montare a share-ului trianon de pe cantacuzino de la task ul
anterior în mod permanent pe containerul titulescu (dupa restart-ul containerului să
găsim în /mnt/smb gata montat tratatul de la Trianon).
sudo mount –t cifs –o user=student //192.168.1.34/trianon /mnt/trianon

S-ar putea să vă placă și