Sunteți pe pagina 1din 9

 

  UTILIZATORI,
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


p rogramului

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


 î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  în care să


modificați fișierul filesys.bin astfel î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


 în care să creaţi
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 î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


Hint: Bash
#!/bin/bash
sudo mkdir /mnt/mymnt/randoms
sudo mkdir /mnt/mymnt/passwords
/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_a
/mnt/mymnt/passwords/only_numbers_and_letters$NUM
nd_letters$NUM.txt
.txt
sudo head /dev/urandom | tr –dc A-Za-z0-9 | head –c 30 >
/mnt/mymnt/passwords/only_numbe
/mnt/mymnt/passwords/only_numbers_and_letters$N
rs_and_letters$NUM.txt
UM.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
Hint fstab. 
utilizator al sistemului. Hint 
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
 î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 acest
Puteţi obţine singură linie.
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
/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,
î nţelegem un utilizator car e
sortați lexicografic, câte unul pe linie. Prin utilizator real înţelegem
are un shell valid de login.
Hint: /etc/shells
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
i n 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 rrestart
estart aall containerului,
configuraţiile încă să existe ).
Vedem ce adresa ip avem pe fiecare
f iecare 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
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
8. 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
/etc/network/interfaces
dupa source-directory
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
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-copy-id student@192.168.1.34
ssh  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
/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
//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 ccontainerul
ontainerul titulescu (dupa restart-ul containerului să
găsim în /mnt/smb gata montat tratatul
montat tratatul de la Trianon)
Trianon)..
sudo mount –t cifs –o user=student //192.168.1.34/trianon
//192.168.1.34/trianon /mnt/trianon
 

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