vineri, 14 iunie 2013

Blocarea inchiderii sistemului de catre utilizatorii obisnuiti

In versiunile noi de Slackware, un utilizator obinuit, fara privilegii suplimentare care sa-i fi fost acordate, poate inchide sistemul doar prin intermediul meniului oferit in cadrul interfetelor grafice (KDE, XFCE etc) la care este conectat. Dar uneori, chiar si doar aceasta facilitate poate fi considerata a fi prea mult si administratorul sistemului sa doreasca sa blocheze facilitatea de shutdown sau de reboot prin care alti utilizatori decat el, sa poata inchide sau reporni sistemul. Este cazul tipic in care sistemul functioneaza ca server si nu dorim ca acesta sa poata fi inchis de orice utilizator conectat de la distata.

Altfel, administratorul (root) are la dispozitie 3 parghii prin care poate controla, cine poate inchide/restarta serverul (exceptand desigur facilitatile interfetelor grafice amintite) prin intermediul comenzii shutdown (halt, reboot). Acestea sunt: fisierul /etc/sudoers, fisierele /etc/shutdown.allow, /etc/inittab si capturarea secventei <CTRL><ALT><DEL> in cadrul consolelor virtuale tty de login, respectiv prin acordarea prioritatii corespunzatoare prin intermediul modificarii ownership-ului si permisiunilor fisierului /sbin/shutdown.

In cazul in care se doreste dezactivarea oricarei modalitati de inchidere restartare a sistemului, de catre alti utilizatori decat superuserul, cea mai eficienta metoda este aceea de a rula comanda shutdown cu un timp suficient de mare de activare:

root@yeti:~# shutdown -h 525600 "Inchiderea sistemului in 525600 minute" &

Executand ca superuser aceasta comanda, nici un alt utilizator nu va mai putea inchide sau restarta sistemul, atat timp cat comanda este activa (nu a fost anulata, tot de catre root).

duminică, 2 iunie 2013

Midnight Commander si afisarea spatiului pe disc ocupat de fisiere/directoare

Midnight Commander este un program extrem de util, atunci cand lucrati cu sistemul de fisiere, intr-un terminal linux. El poate fi rulat utilizand comanda mc. Are multe functii care usureaza lucrul cu fisierele si directoarele, aflate atat pe sistemul local sau chiar la distanta, pe un alt sistem, la care va conectati, de exemplu, prin protocolul ftp.

Una dintre functiile disponibile, dar numai atunci cand programul mc a fost rulat dintr-una dintre consolele standard, virtuale, tty (de login, generate (spawned) de procesul init, la care aveti acces atunci cand sistemul dumneavoastra functioneaza in runlevel 3, implicit la Slackware Linux, sau cand utilizati combinatia de taste <CTRL><ALT><F1-F6>, daca va aflati in mediul grafic XWindows, fie initilizat cu comanda startx, dintr-una din consolele mentionate, fie implicit, cand sistemul se afla in runlevel 4), este functia de calculare si afisare a marimii (dimensiunii) directoarelor selectate. Functia respectiva poate fi accesata utilizand tasta WakeUp, sau Sleep, pentru tastaturile care au aceste taste. Daca nu dispuneti de o astfel de tastatura, pentru a afisa spatiul efectiv ocupat pe disc de fisierele si directoarele sistemului de fisiere, nu va ramane decat solutia clasica, aceea de a recurge la comenzile UNIX standard (ar mai fi o posibilitate, tot o combinatie de taste in mc, dar va las pe voi sa o descoperiti :):

razvan@yeti:~$ du -B4K -csh ./
8.6G    ./
8.6G    total
razvan@yeti:~$

Pentru a verifica faptul ca va aflati intr-un terminal virtual tty, puteti folosi comanda:

razvan@yeti:~$ tty
/dev/tty3

marți, 26 martie 2013

slackpkg - un utilitar pentru update de sistem

Dupa cum v-am spus intr-o postare anterioara, pachetele de instalare a programelor in sistemul de operare Slackware Linux au, de regula, extensiile .txz sau .tgz si pot fi instalate, dupa ce au fost descarcate/downloadate, utilizand instalpkg, in cazul unei instalari noi, sau upgradepkg, in cazul unui upgrade. Va voi arata acum o alta metoda folosita pentru a upgrada sistemul la o versiune mai noua (sau chiar la versiunea "-current", aflata in faza de beta-release, adica ce nu este una stabila, ci una oferita spre testare publicului larg), sau pentru a-l tine "la zi" cu ultimele versiuni ale programelor. Este o metoda foarte simpla si ceea ce imi place la ea este usurinta cu care pot realiza upgrade-ul sistemului, fara a mai fi nevoie sa verific manual ce programe s-au modificat, sa le descarc pe fiecare in parte si sa le instalez. Totul este realizat automat, prin executia unei serii scurte de comenzi, tastate ca utilizator root bineinteles, programul necesitand insa si o serie de configurari/setari, descrise in cele ce urmeaza.

Programul are fisierele de configurare in directorul /etc/slackpkg. In acest director, primul fisier ce trebuie putin modificat este fisierul mirrors. Acest fisier contine doua sectiuni cu adrese de servere ftp mirror pentru distributia Slackware - pentru versiunea curenta si pentru ultima versiune stabila (14.0 in martie 2013). Decomentati (stergeti caracterul # de inceput de linie) linia care va convine. Eu folosesc de exemplu serverul http://slackware.osuosl.org/pub/slackware/slackware-14.0/ pentru a tine updatat sistemul meu in acest fel.
Al doilea fisier ce trebuie modificat este fisierul blacklist. Acest fisier contine pachetele care nu vor fi upgradate, sterse sau instalate de slackpkg. De regula aici se trec expresii regulate partiale care sa acopere diferite serii de pachete instalate "by third parties", de exemplu pachetele neoficiale de pe Slackbuilds.org, sau alte tipuri de pachete neoficiale Slackware.
Este recomandat si chiar necesar sa blacklistati (decomentati) urmatoarele pachete:
  • kernel-firmware
  • kernel-generic
  • kernel-generic-smp
  • kernel-huge
  • kernel-huge-smp
  • kernel-modules
  • kernel-modules-smp
Acum, inainte de a incepe procesul de update propriu-zis trebuie verificat (in ChangeLog.txt de la adresa mirror utilizata) daca au aparut kerneluri noi. Daca raspunsul este afirmativ, va trebui sa descarcati si sa instalati (folositi installpkg si nu upgradepkg!!!) noile pachete kernel. Apoi updatati fisierul /etc/lilo.conf cu noul kernel, fara a scoate vechiul kernel, si rulati comanda lilo (dar, despre utilizarea lilo pentru gestionarea procesului de bootare intr-o postare viitoare). In felul acesta veti putea sa incarcati sistemul folosind vechiul kernel, in cazul in care apar probleme.
Avand facute aceste modificari esentiale, puteti incepe procesul de update. Acesta presupune executia secventiala a urmatoarelor comenzi:

root@yeti:~# slackpkg update
root@yeti:~# slackpkg install-new
root@yeti:~# slackpkg upgrade-all
root@yeti:~# slackpkg clean-system


Acestea fiind spuse, atrag totusi atentia ca metoda expusa mai sus este una netestata suficient de catre mine si prin urmare pot aparea unele probleme. De exemplu, pot aparea situatii, atunci cand se upgradeaza intre diferite "snapshot"-uri de "-current", in care sa trebuiasca upgradate unele dintre pachetele slackpkg, wget, openssl, openssl-solibs, findutils, pkgtools, tar, xz, in mod manual, inainte de a incepe procesul de update. Cu toate acestea, consider ca slackpkg este un utilitar folositor, care poate simpifica mult munca de administrare a sistemului, daca este folosit cu destul de multa atentie si pricepere.