ArLUG (grupul utilizatorilor de Linux din Arad), este o comunitate de oameni, care împărtașesc pasiunea pentru sistemul de operare GNU/Linux și software-ul liber.

Scopurile ArLUG sunt:
* promovarea sistemului de operare Linux și a software-ului liber
* formarea/menținerea/dezvoltarea unei comunități locale
* educarea și instruirea oamenilor (ne)familiarizați cu acest sistem

Archive for 'HOWTOs'

simple utilizari ale lui scp

Probabil că aţi avut nevoie la un moment dat să copiaţi fişiere de pe un calculator pe altulş server pe altul, sau de pe staţia de lucru pe server – indiferet care dintre variante în mod nomral ar trebuii sa parcurgeţti urmatorii unul din paşi:

  1. să deschideţi o conexiune FTP; asta implică instalat server de ftp =>complicat
  2. să mergeţi cu stiku, discheta, cd+rw sau alt media – daca serarul e in alta locatie decat cladirea?

Există o posibiliate mai simplă si e “build in” în prodoculul de ssh si se numeşte scp (secure file copy).

Şi să trecem la treaba cum putem să o folosim. Foarte simplu ţinând cont că există pe ambele maşini la care avem acces.

  • Copiaţi fişierul “foo.txt”, de la o distanţă pe local:

$ scp utilizator@masinaladistanta.ro:foo.txt /ceva/director/local

  • Copiaţi fişierul “foo.txt”, de pe local la distanţă

$ scp foo.txt utilizator@masinaladistanta.ro:/ceva/director/la-distanta

  • Copiaţi directorul “foo” de pe local în directorul de la distanţă numit “bar”

$ scp -r foo utilizator@masinaladistanta.ro:/ceva/director/la-distanta/bar

  • Copiaţi fişierul “foo.txt” de pe maşina de la distanţă “masina1.ro” pentru maşina de la distanţă “masina2.ro”

$ scp utilizator@masina1.ro:/ceva/director/la-distanta/foo.txt \

utilizator@masina2.ro:/ceva/director/la-distanta

  • Copierea fişierelor “foo.txt” şi “bar.txt” de pe local în directorul personal de pe maşina de la distanţă

$ scp foo.txt bar.txt utilizator@masinaladistanta.ro:~

  • Copiază fişiere multiple de maşina de la distanţă în directorul curent de pe local

$ scp utilizator@masinaladistanta.ro:/ceva/director/la-distanta\{a,b,c\} .

$ scp utilizator@masinaladistanta.ro:~/\{foo.txt,bar.txt\} .


Câteva opţiuni importante:

  • -x (pe BSD) -xdev (pe Linux)       Ramâne pe acelaşi sistem de fişiere (dev în fstab).
  • -exec cmd {} \; Execută comanda şi înlocuieşte {} cu calea completă
  • -iname Ca şi  -name dar e case insensitive (nu ţine cont de majuscule şi minuscule)
  • -ls arată informaţii despre fşier (similar ls -la)
  • -size n n este +-n (k M G T P)
  • -cmin n Statusul fişierului a fost schimbat acum n minute

# find . -type f ! -perm -444 # Găseşte fişierele fara drept de citire de all
# find . -type d ! -perm -111 # Găsesşte directoare ne accesibile de all
# find /home/user/ -cmin 10 -print # Fişierele create sau modificate în ultimele 10 minute
# find . -name ‘*.[ch]‘ | xargs grep -E ‘expr’ # Caută ‘expr’ în director şi mai jos
# find / -name “*.core” | xargs rm # Găsesşte core dumps şi ştergele
# find / -name “*.core” -print -exec rm {} \; # idem mai sus
# find . \( -iname “*.png” -o -iname “*.jpg” \) -print -exec tar -rf images.tar {} \;
# Găseşte imagini şi crează arhive, iname nu e case sensitive.
# find . -type f -name “*.txt” ! -name README.txt -print # Exclude README.txt
# find /var/ -size +10M -exec ls -lh {} \; # Găsesşte fişiere mai mari de 10MB
# find /var/ -size +10M -ls # mai simplu
# find . -size +10M -size -50M -print
# find / -type f -user root -perm -4000 -exec ls -l {} \;
# Găsesşte fişierele SUID, fişiere vulnerabile care trebuie securizate

Grijă maxima cu xarg sau exec deoarece pot să returneze rezultate aiurea dacă fişierele sau directoarele conţin spaţii. Dacă ai îndoieli, foloseşte “-print0 | xargs -0” în loc de “| xargs“.
Opţiunea -print0 trebuie să fie ultima din comandă. Studiază şi mini tutorialul pentru find de aici http://www.hccfl.edu/pollock/Unix/FindCmd.htm.

# find . -type f | xargs ls -l # NU VA FUNCŢIONA CU SPAŢII ÎN NUME
# find . -type f -print0 | xargs -0 ls -l # NU VA FUNCŢIONA CU SPAŢII ÎN NUME
# find . -type f -exec ls -l ‘{}’ \; # Foloseşte ‘{}’ cu -exec


surse de inspiraţie: www.google.com şi man find

Avand nevoie zilele astea de un generator de parole pentru niste mysql-uri mi-am pus problema daca nu pot sa fac asta din ceea ce-mi ofera linuxul (nu vroeam sa folosesc perl sau alte limbaje). Asa ca am recurs la un goole search pentru a vedea cum pot crea un generator din bash. Astfel dupa ceva documentatie, unde am gasit diferite forme de “programare” m-am folosit de /dev/urandom si de tr (translate), parsand informatia de /dev/urandom catre tr care face selectia dupa formula: a-zA-Z0-9.

Fara prea multe comentarii iata sciptul rezultat:

#!/bin/bash
#Super simple password generator
#silviu.silaghi@gmail.com
if [ "$#" != 1 ]; then
echo ""
echo "Usage:"
echo "$0 [number of characters]"
echo ""
echo "Example:"
echo "$0 12"
#
else
tr -dc A-Za-z0-9 < /dev/urandom | head -c $1 | xargs
fi

Google repo in Fedora

Odata cu lansarea browserului web Chrome pentru platforma Linux, Google pune la dispozitie si un repository care poate fi folosit pentru a instala si/sau actualiza diferitele aplicatii Google cu ajutorul utilitarului yum.

Pentru a include acest repository pe un calculator cu Fedora, trebuie definit un fisier .repo astfel:

#cat /etc/yum.repos.d/google.repo

[google]
name=Google repo
baseurl=http://dl.google.com/linux/rpm/stable/$basearch
enabled=1
gpgcheck=1
gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub
Odata definit fisierul .repo instalarea browserului web Chrome se face foarte simplu prin intermediul yum astfel:

[root@Fedora-Machine1 ~]# yum install google-chrome-beta


Loaded plugins: refresh-packagekit


Setting up Install Process


Resolving Dependencies


--> Running transaction check


---> Package google-chrome-beta.i386 0:4.0.249.43-34537 set to be updated


--> Finished Dependency Resolution

Dependencies Resolved
==========================================================
Package                  Arch       Version                 Repository    Size
==========================================================
Installing:
google-chrome-beta       i386       4.0.249.43-34537        google        17 M
Transaction Summary
==========================================================
Install       1 Package(s)
Upgrade       0 Package(s)
Total download size: 17 M
Is this ok [y/N]: y
Downloading Packages:
google-chrome-beta-4.0.249.43-34537.i386.rpm             |  17 MB     00:01 …
warning: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY, key ID 7fac5991
google/gpgkey                                            | 3.4 kB     00:00 …
Importing GPG key 0×7FAC5991 “Google, Inc. Linux Package Signing Key <linux-packages-keymaster@google.com>” from https://dl-ssl.google.com/linux/linux_signing_key.pub
Is this ok [y/N]: y
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing     : google-chrome-beta-4.0.249.43-34537.i386                 1/1
Installed:
google-chrome-beta.i386 0:4.0.249.43-34537
Complete!
[root@Fedora-Machine1 ~]#

Deoarece în ultima perioadă de timp foarte multe persoane cu care am discutat despre Linux și infrastructura IT au ridicat problema backup-ului pentru sistemele Linux/Unix, am făcut un tutorial care să demonstreze una din posibilele soluții oferite de Linux și Open Source în domeniul protecției datelor.

Tutorialul în format PDF se găsește aici.

Orice sugestii, completări sau comentarii constructive sunt binevenite.

Instalare Ubuntu Netbook Remix

Pentru ca in ultimul timp piata a fost invadata de laptopuri de mici dimensiuni si pentru ca Sandra este posesoarea unui laptop Gigabyte M912M, m-am pus pe cautat una bucata distributie Linux care sa se potriveasca perfect cu acesta. Nu m-am stresat prea tare pana am dat peste Ubuntu Netbook Remix si m-am decis sa-l instalez pe jucaria nevestei.

Pentru instalare ai nevoie de:

Pregatire:

Am descarcat imaginea de pe pagina ubuntu.com pe calculatorul meu pe care s-a nimerit sa fie un MS XP. Am descarcat win32 Disk Imager de aici, am incarcat imaginea de mai sus in program si am scris-o pe USB Stick.

Daca folosesti ubuntu poti instala usb-imagewriter folosind comanda:

sudo apt-get install usb-imagewriter


Instalare:

Dupa ce ai terminat de scris imaginea pe USB Stick pornesti laptopul si bootezi de pe el (USB). Instalarea nu dureaza mai mult de 10 minute, iar pasii ce trebuie facuti sunt foarte simpli motiv pentru care nu ii mai explic aici. Daca nu te descurci cu instalarea sitemului poti folosi acest tutorial explicat pas cu pas.

Crazy Man mi-a trimis traducerea acestui articol pe care m-a rugat să-l postez aici. Traducerea aparține lui crazy man, Adrian Vesa și Seba Popity.
Carlo Wood, Mar 2008

Introducere

I se întâmplă fiecăruia mai devreme sau mai târziu: o fracţiune de secundă după ce ai apăsat Enter realizezi greşeala, dar este deja prea târziu. Tocmai ai şters un fişier sau director valoros pentru care nu este rezervă (backup). Sau poate există o rezervă, dar e veche de o lună… şi, şocat, vezi ultima lună fugind prin faţa ochilor şi realizezi dureros ce trebuie să refaci …
Continue reading…

Imaginati-va urmatoarea situatie: aveti de compilat o aplicatie Linux/UNIX sau modul de kernel, care necesita prezenta surselor pe disc, sa spunem in /usr/src/kernels/kernel-2.6.21.i386/ sau altundeva. Dar, nu aveti spatiu indeajuns ca sa copiati sursele sau sa instalati pachetele kernel-devel sau linux-source (e vorba de Fedora/RedHat sau Debian/Ubuntu)… Suna familiar? credeti-ma cateodata se intimpla :)

Ca si solutie se poate monta un director de pe un PC aflat la distanta care contine sursle de kernel necesare. Se poate face prin mai multe protocoale: smb, ftp, etc. In acest articol vom monta un director aflat pe alt PC folosind protocolul ssh, care este cel mai popular de acces la distanta si securizat de accesare a sistemelor Linux prin retea.

Mai jos sunt prezentati pasii necesari pentru a realiza acest lucru. Avem nevoie de doua pakete: sshfs si fuse-utils.

a. Ubuntu/Debian:

sudo aptitude install fuse-utils sshfs

b. Fedora/Centos/RedHat:

yum install fuse-sshfs fuse fuse-libs

c. Alt Linux: descarcati si compilati  sshfs/fuse din surse

2. Verificati daca modulul de kernel fuse este incarcat:

lsmod | grep fuse

Ar trebuii sa fie o linie care sa contine fuse in lista (daca nu e: modprobe fuse).

3. Montati sistemul de fisiere de la distanta: (doua comenzi)

mkdir -p /mnt/sshfs/
sshfs remote-user@remote-machine:/some/directory /mnt/sshfs

unde remote-user este utilizatorul autorizat sa se autentifice pe remote-machine prin ssh. Va cere parola, dupa care enter :)

4. Asta e tot

Una din lucrurile interesante ce pot fi făcute cu lsof este de a recupera fişiere care tocmai au fost şterse.

În linux un fişier este un pointer către un inode, care conţine informaţii despre fişier (permisiuni, deţinător, şi unde este conţinul său în realitate pe disc). Stergând fişierul se şterg defapt legăturile către inode, dar nu şi inode-ul – dacă un alt proces îl are deja deschis, nu poate fi dat spre scriere până procesul respectiv nu a terminat lucrul cu inode-ul respectiv.

Pentru a încerca asta, creaţi un fişier, salvaţil ca şi sample.txt apoi tastaţi less sample.txt. Acum deschideţi alt terminal, şi tastaţi rm sample.txt. Dacă încercaţi acum ls sample.txt veţi primii un mesaj de eroare, deoarece legăturile către fisier au fost şterse. Dar, less încă are o referinţă către fişier. Aşadar acum tastam:

  # lsof | grep sample.txt
  less 24080 ramu 4r REG 8,2 14 3096673 .../sample.txt (deleted)

Coloanele importante sunt a doua, care ne dă PID-ul procesului care tine fişierul deschis (24080), şi a patra, care ne dă descriptor-ul fişierului (4). Acum, mergem în /proc, unde înca există o referinţă către inode, de unde se poate copia fişierul înapoi (adică recupera):

  # ls -l /proc/24080/fd/4
  lr-x------ 1 ramu users 64 2009-06-02 18:46 /proc/24080/fd/4 -> .../sample.txt (deleted)

  # cp /proc/24080/fd/4 sample.txt

Notă: A NU se folosii opţiunea -a cu cp, pentru că aceasta va copia numai legătura simbolică, mai degrabă decât conţinutul real al fişierului.

Acum, verificaţi fişierul si asiguraţi-vă că aveţi ceea ce credeţi că ati vrea, şi aţi terminat!

P.S. În mod evident, circumstantele nu pot fi întotdeauna astfel, asa că această abordare poate fi utilizată doar dacă un alt proces are fişierul deschis. In rest nu poteti să utilizaţi această metodă pentru a recupera un fisier.

Tradus de la LinuxJournal

Dacă se întâmplă cumva să uitaţi parola de root pe sistemul vostru, nu vă panicaţi pentru că există o modalitate să rezolvaţi problema.

Dacă folosiţi GRUB (marea majoritate) ca şi manager de boot, selectaţi sitemul care trebuie pornit şi adougaţi 1 la finalul liniei de comandă a kernelului. Dacă nu apare casuţa de editare, apasaţi tasta e ca să intraţi in editor. 1 îi spune kernelului să pornească sistemul in single user mode.

Sistemul ar trebuii să pornească într-un promt de root. În acest moment doar folosiţi comanda passwd pentru a schimba parola de root

Altă opţiune este să porniţi sistemul cu un CD Live care vă oferă o linie de comndă. Montati / al sistemului care vreţi să-i schimbaţi parola.

$ mkdir /mnt/system
$ mount /dev/sda1 /mnt/system

Acum chroot pe directorul unde a fost montat sistemul şi apoi schimbaţi parola.

$ chroot /mnt/system
$ passwd

Restartaţi sistemul