Faceți căutări pe acest blog

duminică, 24 martie 2013

Capturi video

 Ghidându-mă după principiul strămoșesc că o imagine face cât o mie de cuvinte mă folosesc copios de screenshoturi în materialele mele, poate chiar excesiv. Uneori merg chiar mai departe și fac și ceva capturi video-audio ( https://www.youtube.com/user/stressat1 ), deoarece mi se pare extrem de dificil pentru un începător să realizeze cum funcționează o astfel de aplicație. Tocmai am adăugat două capturi video din tty, despre slmenu și links -g, le puteți vedea în linkul precedent sau în materialele de pe blog:
slmenu: http://stressat.blogspot.ro/2013/03/slmenu.html
links -g: http://stressat.blogspot.ro/2012/09/browser-grafic-in-tty-links.html

 Dacă cineva dorește vreun screencast al vreunei aplicații CLI (mutt, alpine, bashburn, etc) să posteze cererea aici, în limita posibilităților mă voi conforma.
 Oricum ar fi, în funcție de idei, timp și chef poate voi mai face niscaiva capturi... :D

sâmbătă, 16 martie 2013

Slmenu

 K.Mandla tocmai mi-a luminat ziua! Voi prezenta în română și (sper) pe înțelesul oricui slmenu, o clonă pentru consolă a dmenu, o chestie care ne ușurează mult lucrul în linia de comandă! Acest material este pur și simplu o preluare/ prelucrare/ adaptare a articolului de aici: https://inconsolation.wordpress.com/2013/03/16/bonus-slmenu-and-some-seriously-wicked-console-wizardry/

ACTUALIZARE: video (alegeți o calitate a imaginii bună/ HD):


1- Instalăm slmenu, în Arch pachetul se numește slmenu-hg și este în AUR, deci instalăm cu yaourt -S slmenu-hg
2- Facem în ~ un fișier text în care punem numele aplicațiilor folosite uzual, fiecare pe o linie, ceva de genul:
alpine
htop
links -g
mc
moc
screen
tvmaxe-cli
youtube-viewer
 O posibilitate:
echo "alpine
moc
htop
orice-nume-aplicație" > .cli-apps.txt
 Altă posibilitate:
touch .cli-apps.txt; nano .cli-apps.txt
 Scriem numele aplicațiilor pe linii diferite, Ctrl+o, Enter, Ctrl+x.
 Eu am denumit fișierul .cli-apps.txt
3- Facem în .bashrc un alias de forma: alias xe='eval `slmenu < .cli-apps.txt`', de acum înainte comanda xe va porni slmenu.
4- Putem chiar aloca o tastă, așa încât apăsarea acelei taste va rula slmenu. K.Mandla arată cum se poate face, eu folosesc deja un keymap personalizat, pentru a putea folosi diacriticele românești (http://stressat.blogspot.ro/2012/10/personalizare-tty.html), deci am modificat direct fișierul de setări personal.map ca la apăsarea tastei cu steagul M$ (sau cum spune poetic K.Mandla "logo of The Evil One" :D ) să-mi apară meniul dorit în tty.
 În primul rând trebuie să cunoaștem codul tastei cu pricina, deci dăm în terminal comanda (ca root sau precedată de sudo) showkey și apăsăm tasta pe care dorim s-o asignăm comenzii. Outputul va fi de forma:
[root@stressat shogun]# showkey
kb mode was ?UNKNOWN?
[ if you are trying this under X, it might not work
since the X server is also reading /dev/console ]

press any key (program terminates 10s after last keypress)...
keycode  28 release
keycode 125 press
keycode 125 release


 Deci tasta M$ are codul 125 și showkey se închide automat după 10 secunde de la apăsarea ultimei taste încercate! Ok, acum adăugăm în fișierul nostru de configurări, în cazul meu /usr/share/kbd/keymaps/i386/qwerty/personal.map liniile:
keycode 125 = F70
string F70 = "xe\n"


 Acum la logarea în tty apăsarea tastei va face să apară slmenu.Tty mă interesează în primul rând, dar merge și-n konsole sau yakuake sau orice alt emulator de terminal cu condiția ca în X tasta cu pricina/ cea cu logo M$ în cazul meu să nu fie alocată altei chestii, eu de exemplu o folosesc pentru schimbarea layout-ului tastaturii, așa că folosesc aliasul xe...
 Pentru ieșirea din slmenu fără să pornim o aplicație (dacă apăsăm tasta din greșeală...) apăsăm Ctrl+C.
 Navigăm între aplicațiile din slmenu cu tastele săgeți, Enter pentru rularea aplicației dorite, cea marcată cu background diferit. În cazul că avem multe aplicații în .cli-apps.txt vor fi afișate doar aplicațiile care încap în fereastră și < sau > (după caz, depinde dacă suntem la începutul sau sfârșitul listei).
  Putem alege ca slmenu să afișeze aplicațiile pe linii suprapuse (slmenu -l număr-linii, slmenu -l 8 pentru 8 linii) sau să afișeze în fața numelor aplicațiilor  un prompt (slmenu -p prompt).
 Dacă modificăm .bashrc (aliasul xe) pentru a nu reporni konsole/ yakuake/ terminal dăm comanda source .bashrc, se vor re-incărca setările bash.
 Slmenu (aliasul și/ sau tasta locată) funcționează perfect și-n screen, așa am pornit mocp, alpine și mc. :D


 Sursă: https://inconsolation.wordpress.com/2013/03/16/bonus-slmenu-and-some-seriously-wicked-console-wizardry/
 Slmenu: https://bitbucket.org/rafaelgg/slmenu

vineri, 15 martie 2013

Inxi

 Am mai scris câte ceva despre utilitare pentru detectarea componentelor hardware: http://stressat.blogspot.ro/2013/01/detectie-hardware.html. Tocmai am aflat (mulțumesc symbianflo!) despre alt utilitar similar, inxi, care m-a entuziasmat. Și celelalte variante prezentate anterior își fac treaba bine, dar fie dau prea puține informații (lspci, lsusb), fie prea multe detalii (lshw, hwinfo, dmidecode), și-n plus informațiile sunt cam criptice, greu de înțeles/ interpretat de către mulți utilizatori.Aaaaa, da, și aspectul lasă de dorit, de ce n-am avea la dispoziție un output ordonat și frumos prezentat?
 Este vizibil din screenshot că informația prezentată este completă, ordonată pe categorii, fonturile color și îngroșate (bold) fac outputul ușor de înțeles și interpretat, intuitiv. Cireașa de pe tort o reprezintă și informațiile adiționale, fără legătură directă cu componentele hardware: distribuție, mediu grafic, kernel, arhitectură sistem, nume localhost, senzorii de temperatură, numărul proceselor, memoria folosită, uptime, șamd.
 
 Cu man inxi sau inxi -h puteți afla cum anume să folosiți utilitarul, în screenshotul precedent am pasat opțiunea -F (full output), dar putem afla doar datele despre ceea ce ne interesează, la obiect, iată câteva exemple:
inxi -A   = info audio/ placă audio
inxi -n   = info rețea
inxi -c    = info procesor (CPU)
inxi -G   = info grafică
inxi -i     = info IP plus rețea
inxi -M   = date mașină (producător, model, placă de bază, bios)
 Parametrii disponibili pot fi și combinați, de exemplu:
inxi -fC   = info CPU + toate flagurile CPU
inxi -tcm10  = aflăm primele 10 procese consumatoare de CPU și Ram
 Un aspect simpatic este posibilitatea de-a modifica culorile outputului, cu ajutorul opțiunii -c urmată de un număr între 0 (fără culori și caractere bolduite) și 32.

 Pentru ca inxi să funcționeze în parametrii optimi și informațiile oferite să fie complete sunt necesare câteva dependențe (xrandr, hddtemp, sensors, lsusb, lspci, df, uname, uptime, mesa-utils, etc) pe care le aflați cu inxi --recommends.
 Ați observat ce dependențe are? Lspci, lsusb, dmidecode, uptime, uname, df, glxinfo??? :D 

marți, 12 martie 2013

Backup

 Sunt învățat să-mi fac periodic backup partiției / pentru orice eventualitate, dar se poate face backup oricărei partiții. În funcție de chef folosesc dd (disk dump) sau Clonezilla.
Înainte de a trece la clonarea partiției / trebuie să  cunoaștem calea/numele exact al partiției sursă (cea pe care dorim s-o clonăm) și a partiției țintă, destinație, cea unde vom salva backupul, plus punctele de montare. Nu e neapărat nevoie ca partiția unde vom salva să fie de pe hdd-ul mașinii, putem folosi un hdd extern sau un stick USB pregătit special pentru așa ceva (de dimensiune mare/ eu am unul de 16 GB, formatat altfel decît FAT32, asta deoarece imaginea creată va fi mai mare de 4 GB!).
 Putem afla numele partițiilor și punctul de montare folosind linia de comandă (mount|grep ^'/dev', df -h) sau în mod grafic cu utilitare precum Gparted, Kdiskfree.


 dd
 Este simplu de folosit, de încredere, dar dacă nu e folosită cum trebuie periculos, nu degeaba i se spune și disk destroyer... :D
 Partiția clonată, cea căreia îi facem backup trebuie să fie demontată (nu putem clona partiția / a distribuției pe care lucrăm în acel moment), deci trebuie să folosim fie un live-cd, live-usb, fie (dacă avem) o altă distribuție de pe mașina noastră. De exemplu eu voi face backup partiției / Gentoo logat în Arch, partiția / din Gentoo este /dev/sda3 și o demontez înainte de backup. Imaginea rezultată o voi salva pe o partiție NTFS (/dev/sd2 montată în /media/disk1), voi folosi gzip pentru arhivare/ comprimare (nivel comprimare standard, -6, compromisul între viteză și dimensiune; dacă doriți viteză mai mare atunci folosiți gzip --fast, iar pentru dimensiune cât mai redusă gzip --best) și pv pentru a vedea progresul clonării. Comanda folosită de mine:
dd if=/dev/sda3 bs=8M | pv | gzip > /media/disk1/Backup/backup-gentoo.gz
if=/dev/sda3  = input file= partiția sursă, / Gentoo, nemontată
media/disk1/Backup/backup.gz = partiția destinație (/dev/sda2, montată ca media/disk1), directorul Backup, iar backup-gentoo.gz este numele dat imaginii.

 Pentru înlocuirea partiției / cu imaginea creată cu dd:
gunzip /media/disk1/Backup/backup-gentoo.gz | dd of=/dev/sda3

 În mod normal dd durează mai mult decât Clonezilla, pentru o partiție de ~15 GB dd ia cam 35-40 minute la compresie bună și 25-30 minute la compresie normală, iar Clonezilla cam cu 10-20 minute mai puțin. Dar dacă aveți 2 distribuții instalate timpul consumat în plus nu contează, în timp ce dd macină vă vedeți de treburile obișnuite, ascultați muzică, urmăriți un film, navigați pe net, șamd!
 În cazul expus mai sus (o partiție de 17,9 GB) a durat 31 minute și a rezultat o imagine de 6,2 GB.

Clonezilla
 Despre Clonezilla nu are rost să scriu ceva, doar că este de încredere și ușor de folosit, vă recomand un tutorial excelent: http://queen-soft.blogspot.ro/2009/02/clonezilla-alternativa-gratuita-la.html

duminică, 10 martie 2013

Drepturi de root

 Un sistem GNU/ Linux este conceput având în minte siguranța, de aici sistemul de administrare a drepturilor pentru fiecare utilizator în parte (mai ales deoarece Linux este un sistem multiuser și multitask). De obicei lucrul ca user normal este suficient pentru uz curent.
 Sunt situații când avem nevoie de permisiuni mai multe decât de obicei, pentru instalări/ dezinstalări, updateuri, modificări fișiere din afara directorului nostru /home/user. Putem căpăta permisiuni suplimentare temporar atât în linia de comandă cât și în interfața grafică.

 CLI
 În linia de comandă putem folosi două alternative, su și sudo.
 Su (switch user sau substitute user, în unele documentații apare și super user, incorect după părerea mea, su nu e legat obligatoriu de contul root...) este comanda cu ajutorul căreia putem schimba contul curent. Dată fără argumente va cere parola de root și va schimba contul curent din utilizatorul logat în cont de root. Dacă după su adăugăm un nume de alt utilizator normal ni se va cere parola acelui cont și vom fi logați în terminal ca acel utilizator.
 Ceea ce ne interesează este logarea ca root pentru actualizări sau instalări sau modificarea fișierelor la care nu avem drepturi de scriere ca utilizator normal, deci vom da comanda su, su -, su -c nume-comandă, sau sux apoi tastăm la cerere parola de root. Citiți man su pentru detalii, câteva explicații pe scurt:
su = căpătăm drepturi de root (devenim userul root), dar nu se modifică variabilele PATH și directorul curent;
su - (alternative: su -l sau su --login)= devenim userul root și-n plus se schimbă și variabilele PATH, iar directorul root devine directorul de lucru;
su -c comandă = devenim root doar pentru comanda pasată shell-ului, după rularea comenzii devenim iar userul inițial; deci căpătăm permisiuni sporite temporar, nu trebuie să ne delogăm după ce-am terminat de instalat, actualizat, modificat; dacă comanda are propriile opțiuni, parametri, trebuie încadrată între ghilimele (' sau ")
sux = este un wrapper pentru su, trebuie instalat separat, face același lucru ca su, dar în plus primim toate drepturile asupra serverului X.
 Comanda env |grep DISPLAY arată drepturile asupra X, vedeți că la su - nu avem așa ceva, pwd ne arată directorul curent.


 Sudo (super user do) permite unui utilizator cu drepturi (drepturi de execuție stabilite în /etc/sudoers) executarea unei comenzi ca utilizator root sau alt user cu drept de sudo. După executarea comenzii rămânem logați cu contul de user normal. Într-un interval scurt de timp (implicit e 5 minute...) putem folosi iar comanda sudo fără să ni se ceară parola! După acel interval (timeout) vom fi iar nevoiți să dăm parola.
sudo comandă=  va executa comanda cu permisiunile contului root, ca și cum ar fi dată de root;
sudo -s/ sudo -i/ sudo su= diverse metode de a ne loga ca userul root cu ajutorul parolei de utilizator, nu a celei de root; sudo -i schimbă și directorul curent în /root, celelalte două variante păstrează locația curentă; într-un fel echivalează cu folosirea su, astfel trebuie să părăsim contul de root la terminarea lucrului (instalări, dezinstalări, actualizări, lucrul cu fișiere asupra cărora utilizatorul nostru nu are permisiuni de execuție, etc); pentru a vedea diferențele dintre aceste 3 comenzi dați comanda pwd;
sudo -u nume-user comandă=  va executa comanda dată ca userul specificat după opțiunea -u;

  Pentru ca un utilizator să aibă drept de sudo trebuie trecut în fișierul de configurări al sudo, /etc/sudoers. În același fișier putem modifica comportamentul sudo:
1- modificare timeout (timp în care nu ni se cere parola)= adăugăm la finalul fișierului o linie de genul la subsecțiunea ## Defaults specification:
Defaults:nume-utilizator timestamp_timeout=x  (înlocuim x cu 10, 15, etc, pentru timeout de 10 sau 15 minute, iar pentru a se păstra comportamentul toată sesiunea o valoare mai mică de 0, de exemplu -1); dacă dorim să se ignore setarea revocăm cu sudo -K, sudo -k sau sudo -v;
2- setăm sudo să ceară parola de root, nu cea a utilizatorului ce dă comanda:
Defaults rootpw;
3-  setăm sudo să insulte utilizatorul ce greșește parola:
Defaults insults;
4- drept de folosire sudo de către un grup întreg (wheel): decomentăm (ștergem # din fața liniei roșii):
## Uncomment to allow members of group wheel to execute any command
# %wheel ALL=(ALL) ALL
5- folosire sudo fără parolă de către membrii grupului wheel prin decomentarea linii scrise cu roșu:
## Same thing without a password
#%wheel ALL=(ALL) NOPASSWD: ALL
 Similar putem da drept de sudo doar unui anumit utilizator cu o linie de genul:
nume-utilizator ALL=(ALL) NOPASSWD: ALL
după cea cu:
root ALL=(ALL) ALL Mai sigur este setarea sudo pentru permiterea executării DOAR a anumitor comenzi fără parolă:
nume-utilizator ALL=(ALL) NOPASSWD: comandă1, comandă1, comandă3, ..., comandăX
stressat ALL=(ALL) NOPASSWD: /usr/sbin/lshw, /usr/sbin/hddtemp

 Surse: man su, man sudo, man sudoers

LE: puteți observa că folosesc ocazional sudo (prefer su în mod normal), dar întotdeauna sudo cu parolă de root (19 caractere acum, schimbată periodic/ minuscule+ majuscule+ cifre+ caractere non-alfanumerice/ adică @, $, #, !, etc)! Din motive de siguranță evident, chiar dacă mă-ndoiesc c-aș reprezenta o țintă, ideea e să nu ușurez munca ”crackerilor”!
 Recunosc sincer că nu-mi pasă foarte mult dacă-mi crapă sistemul (dd rulz!, Clonezilla e ok), sau dacă-mi pierd date din /home (am salvate datele, muzica, etc. pe un hdd extern și parțial pe dvd-uri), dar parcă nu m-aș simți linuxist dacă m-aș lăsa în bătaia vântului (la mila script-kiddies!)... :D


 GUI
 O metodă simplă este să folosim front end-urile grafice pentru comanda su (kdesu sau gksu, în funcție de mediul grafic folosit, kdesu în KDE, gksu în Gnome, Xfce, etc), ori pentru sudo (kdesudo, gksudo). Să presupunem că dorim să deschidem o aplicație ca user root, managerul de fișiere Dolphin sau să edităm un fișier cu editorul de text kate.
 Cu ajutorul Krunner (apăsăm Alt+F2 și va apărea căsuța krunner) sau terminalului tastăm kdesu dolphin sau kdesu kate /etc/sudoers, scriem parola de root în caseta de dialog apărută și aplicația dorită va porni ca și cum ar fi deschisă de userul root, astfel că avem toate permisiunile de execuție necesare!
  O metodă mai ”radicală”, nerecomandată este logarea în interfața grafică ca user root. Este inutilă și periculoasă, dar este posibilă!
 În Kde se poate face prin modificarea fișierului de configurare al kdm, kdmrc (AllowRootLogin=true) /usr/share/config/kdm/kdmrc în Arch, în alte distribuții poate fi altă cale, aflăm calea ca root cu comanda find / -name kdmrc.

 Altă metodă este folosirea systemsettings- Login Screen (Ecran de autentificare).

Back to top