Archive for the ‘Linux’ Category

When trying to install Iceweasel3 with apt-get update, you get message:

igord:~# apt-get install iceweasel
Reading package lists… Done
Building dependency tree… Done
iceweasel is already the newest version.

But, if you want to use Firefox3 in Debian Etch, there is solution!

First, download Firefox3 source from here .

Suppose you downloaded it in /home/user/ directory.

# bunzip2 firefox-3.0.3.tar.bz2
# tar xvf firefox-3.0.3.tar
# cd firefox
# ./firefox

Ater this, you`ll probably receive error:

We’re sorry, this application requires a version of the GTK+ library that is not installed on your computer.

You have GTK+ 2.8.
This application requires GTK+ 2.10 or newer.

Please upgrade your GTK+ library if you wish to use this application.

Solution
(suppose you`re in /home/user):

# wget http://ftp.gnome.org/pub/gnome/sources/gtk+/2.10/gtk+-2.10.0.tar.gz
# mkdir /opt/gtk2.10
# tar xvzf gtk+-2.10.0.tar.gz
# cd gtk+-2.10.0/
# ./configure –prefix=/opt/gtk2.10

(after this you`ll probably receive messages for some library`s missing, in my case this made solution:

# apt-get install libtiff4 libtiff-tools libtiff-opengl libtiff4-dev )

then, again:

# ./configure –prefix=/opt/gtk2.10

After this, you will have to make script that will use gtk2.10 for Firefox3:

#!/bin/sh
export LD_LIBRARY_PATH=”/opt/gtk2.10/lib”
/home/user/firefox/firefox $*

and save that script to you $PATH, for example copy it to /usr/local/bin/firefox3

After this, firefox3 can be run via command “firefox3″

Enjoy!

Za dodavanje novih usera na Linuxu u shellu se koriste komande “adduser” i “useradd”, koje zatim ulaze u wizard tražeći dodatne parametre. Međutim, nekad je potrebno da se useri dodaju automatski, gde će biti prosleđeni samo username i password parametri, bez dodatnih wizarda. Dakle automatsko dodavanje usera!

Skripta koja radi takvu stvar izgleda ovako:

#!/bin/bash
username=$1
password=$2
pass=$(perl -e ‘print crypt($ARGV[0], “password”)’ $password)
useradd -m -p $pass $username

usage:

$ ./script  username  password

Very simple and very usefull thing…

Debian sudo howto

August 6th, 2008 No Comments

Komanda sa kojom pocinjemo ovu operaciju je visudo, naravno kao root:

igor@igord:~$ su -
Password:
igord:~# visudo

Nakon čega se ulazi u poseban editor (Nano), koji zapravo edituje fajl /etc/sudoers.

Na primer, ukoliko hocemo da user “gost” koristi na primer skriptu /usr/sbin/skripta koja je vlasništvo root-a i niko drugi ne može da je izvrši, prvo ćemo definisati alias a zatim dati komandu da “gost” može da koristi taj isti alias:

Cmnd_Alias SKRIPTA = /usr/sbin/skripta

gost ALL = SKRIPTA

Ukoliko želimo da postavimo da prilikom pokretanja sudo-a ne želimo da “gost” kuca lozinku, potrebno je da dodamo:

gost ALL = NOPASSWD:SKRIPTA

Nakon ovoga, dovoljno je da user “gost” u konzoli kuca:

gost@igord:~$ sudo skripta

Debian logo

Ako treba da se postavi neka skripta koja će raditi nešto prilikom
startovanja računara gde je instaliran Debian ili neki od klonova (Ubuntu, Mint, Sidux..), na primer
dodavanje IP adrese, dodavanje rute i restartovanje ssh servera :


ifconfig 192.168.1.1 netmask 255.255.255.0 eth0 up
route add default gw 192.168.1.1
/etc/init.d/ssh start

ovo sve sačuvati u neki fajl tipa “/home/user/skripta”

zatim taj fajl (kao root) kopirati u direktorijum:

$ cp /home/user/skripta /etc/init.d/.

i posle dodati pravo izvršavanja:

$ chmod +x /etc/init.d/skripta

nakon ovoga, potrebno je uraditi komandu:

$ update-rc.d skripta defaults

Sa ovim smo dodali tu skriptu u startovanje Debiana.

Ako hoćemo da je izbrisemo iz startovanja, radimo:

$ update-rc.d -f skripta remove

Pre 3 dana je otkriven bug na Debian-based sistemima, jer je jedan od ljudi koji ima pristup paketima komentarisao liniju u kodu koja omogućava da se ključevi koji se generišu predvide, što dalje omogućava da se ovi ključevi zloupotrebe.

Sa Debian official sajta:

“LucianoBello discovered that the random number generator in Debian’s opensslpackage is predictable. This is caused by an incorrect Debian-specific change to the openssl package (CVE-2008-0166). As a result, cryptographic key material may be guessable.

This is a Debian-specific vulnerability which does not affect other operating systems which are not based on Debian. However, other systems can beindirectly affected if weak keys are imported into them.

It isstrongly recommended that all cryptographic key material which has been generated by OpenSSL versions starting with 0.9.8c-1 on Debian systems is recreated from scratch. Furthermore, all DSA keys ever used onaffected Debian systems for signing or authentication purposes shouldbe considered compromised; the Digital Signature Algorithm relies on asecret random value used during signature generation.”

Znači, ukoliko koristite nešto što podrazumeva korišćenje ključeva (na primer ssh server, tj. openssh-server), potrebno je da uradite:

~# apt-get update
~# apt-get install openssl openssh-server

Nakon ovoga, Debian package će reći:

The following NEW packages will be installed:
openssh-blacklist
The following packages will be upgraded:
libssl0.9.8 openssh-client openssh-server

Dalje, ponudiće vam prozor sa pitanjima gde želite da se koristi novi open-ssl, ako je u pitanju samo ssh server ukucajte ssh.
Posle toga, sledi generisanje novih ključeva:

Setting up openssh-server (4.3p2-9etch2) …
Creating SSH2 RSA key; this may take some time …
Creating SSH2 DSA key; this may take some time …
Restarting OpenBSD Secure Shell server: sshd.

Sa ovim smo uradili upgrade package-a openssl, generisali nove ključeve koji bi trebali biti bezbedni.

Proveru da li je to ipak tako možemo uraditi uz pomoć komande:

~$ ssh-keyscan -t rsa ime-hosta | ssh-vulnkey -

gde ovo ime-hosta zamenjujemo imenom servera.

Npr nakon što sam uradio sve ovo na jednom serveru, rezultat je:

~$ ssh-keyscan -t rsa localhost | ssh-vulnkey -
# localhost SSH-2.0-OpenSSH_4.3p2 Debian-9etch2
Not blacklisted: 2048 ***************************************** -

Dok na drugom serveru za koji još nije uradjen update daje:

~$ ssh-keyscan -t rsa ime-servera-sa-upgrade | ssh-vulnkey -
# ime-servera-bez-upgrade SSH-2.0-OpenSSH_4.3p2 Debian-9
COMPROMISED: *****************************************

(ključ sam, naravno, zamenio zvezdicama)

Na osnovu output-a komande:

~$ ssh-keyscan -t rsa ime-servera | ssh-vulnkey -

vidimo da li je ključ koji je instaliran na serveru dobar ili ne.

Nakon što se instalira novi ključ na ssh serveru, sledeće logovanje na taj server sa nekog računara koji se već logovao tamo, daće upozorenje (npr logovanje na lokalnu IP 192.168.2.169, na kojoj je instaliran ssh server):

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
*************************************
Please contact your system administrator.
Add correct host key in /home/igor/.ssh/known_hosts to get rid of this message.
Offending key in /home/igor/.ssh/known_hosts:5
RSA host key for 192.168.2.169 has changed and you have requested strict checking.
Host key verification failed.

Za ovo postoji više rešenja, ja ću predložiti 2:

1) Brisanje fajla /home/igor/.ssh/known_hosts
2) Generisanje novih informacija uz pomoć komande:

$ ssh-keygen -R 192.168.2.169

nakon čega se prilikom ponovnog logovanja na ssh server dobija pitanje:

$ ssh 192.168.2.169
The authenticity of host ‘192.168.2.169 (192.168.2.169)’ can’t be established.
RSA key fingerprint is ****************************************
Are you sure you want to continue connecting (yes/no)?

gde je potrebno prihvatiti konekciju sa yes, i dobijamo obaveštenje da je dati host sa svojim
ključem dodat u poznate hostove (kao i promtp za logovanje):

Warning: Permanently added ‘192.168.2.169′ (RSA) to the list of known hosts.
igor@192.168.2.169’s password:

Ako postoji još nešto što koristi openssl na vašem računaru a niste sigurni da li treba update, najbolje je uraditi

~$ apt-get upgrade

pošto se Debian tim potrudio da, iako je ovo stvarno veliki bug, ovo ispravi što je pre moguće…

Ovde možete naći vrlo korisne informacije za sve stvari u vezi SSL ključeva na Debian Linuxu

md5sum verification

April 16th, 2008 No Comments

Prilikom preuzimanja nekog fajla sa Interneta, postoji mogucnost da se pojavi neka greska - ako se preuzima veliki .ISO fajl, sanse za gresku se povecavaju. Na primer, skinuo sam CentOS 5.1, Linux distribucija poznata u hosting upotrebi. Fajl dolazi na 1 CD, velik je 625 MB.

Na sajtu za download stoji deo “MD5sum.txt”, i u njemu ima polje:

915c60a53ec0c96e5d076a5ac4e432d6    CentOS-5.1-i386-bin-1of6.iso

Ovo prvo oznacava md5sum broj, koji mora biti identican kao i na racunaru na koji se preuzme .iso fajl. Da bi smo uradili proveru da li je pravilno skinut fajl, napravicemo jedan fajl suma.md5 u koji cemo copy/paste ovo sto stoji na sajtu, tako da bude:



mail3:/home/igor/Desktop# cat suma.md5
915c60a53ec0c96e5d076a5ac4e432d6 CentOS-5.1-i386-bin-1of6.iso

Nakon toga, izvrsavamo komandu md5sum sa argumentom -c koja oznacava check:

mail3:/home/igor/Desktop# md5sum -c suma.md5
CentOS-5.1-i386-bin-1of6.iso: OK

koja ce verifikovati da li je dati fajl (CentOS….) skinut kako treba, kao sto u ovom slucaju i jeste. Jednostavno, zar ne? :)

Another Linux script

February 27th, 2008 No Comments

just another script :)

Yeah,

if you have some LAN and some strange situation :) (like I have) for example one computer don`t have monitor, and you need to find out it`s IP address… with this elementary Linux script, you can match if there is one…:

(I suppose that whole LAN is subnet 192.168.1.*)

It can be usefull in some situations where you can`t determine what IP address are active in LAN, and you know it`s subnet.

Često se desi da je neophodno slanje nekog e-maila bez upotrebe X-a u Linuxu, dakle nešto što će omogućiti da še mail pošalje direktno iz konzole (u ovom primeru koristiću bash shell).

Kako je za slanje e-maila direktno sa računara na neki udaljen domen potreban konfigurisan mail server koji će omogućiti da se mail isprocesuira do MX zapisa datog domena. Ukoliko nije instaliran i podešen mailserver na računaru, ovo može biti problem.

Pronašao sam zgodnu perl skriptu za slanje maila sa računara na kojem ne mora biti definisan nikakav mail server, jedino što je neophodno je da firewall ne blokira port 25 (što je i retko na Linux platformi).

Skripta je jednostavna za korišćenje, sintaksa je krajnje pojednostavljenja, npr da bi se poslao e-mail sa adrese pera@nekidomen.com na sima@nekidomen.com, potrebno je uraditi (iz direktorijuma gde se nalazi skripta):

~$ ./sendEmail -f pera@nekidomen.com -t sima@nekidomen.com -s adresa.odlaznog.servera:25 -m tekst-emaila

Postoji dosta opcija koje omogućavaju jednostavno slanje npr attachmenta, sve što je potrebno dodati je parametar -a ime_fajla, pa bi krajnji tekst izgledao:

~$ ./sendEmail -f pera@nekidomen.com -t sima@nekidomen.com -s adresa.odlaznog.servera:25 -m tekst-emaila -a ime_fajla

Dakle ovo je odlična alatka u situacijama nemogućnosti korišćenja nekog grafičkog alata za slanje mailova. Dobra stvar je što je program postao široko dostupan pa se tako npr na Debian-based sistemu instalira jednostavno uz pomoć komande:

~$ apt-get install sendemail

Sam fajl (koji je potrebno raspakovati uz pomoć komande tar -xvzf sendEmail-v1.55.tar.gz) možete skinuti ovde

Oficijelna adresa za ovaj program je ovde

Linux scripts

November 21st, 2007 No Comments

Pravljenje skripti u Linux shell-u može da olakša svakodnevni život administratora. Suština je da se mnogo stvari može automatizovati a samim tim i uštedeti vreme.

Evo npr skript koji će da proverava stanje na hard disku i da pošalje to stanje na e-mail koji se navede:

#!/bin/bash
echo “date:”$(date) >> fajl
echo “from:e-mailadresa-sa-koje-se-salje” >> fajl
echo “to:e-mail-adresa-na-koju-se-salje” >> fajl
echo “subject: izvestaj prostora sa te-i-te masine” >>fajl
echo “” >> fajl
echo “” >> fajl
df -h >> fajl
/usr/sbin/sendmail adresa-na-koju-se-salje < fajl
rm fajl

Skripta jednostavno upisuje sve ovo u textualni fajl “fajl” i zatim preko /usr/sbin/sendmail programa salje to na odredišnu adresu; pretpostavka je da se ovo šalje sa računara-servera na kojem je prethodno podešen mail sistem tako da može da šalje na udaljene domene. Nakon ove skripte, potrebno je uraditi u shell-u komandu “crontab -e” kako bi dodali cronjob kako bi se to izvršavalo u određeno doba dana, a o tome ćemo drugom prilikom :)
Dobar tutorijal je na OVOJ ADRESI

Linux na kojem je instalirano 2 mrežne kartice može da se ponaša kao default gateway; naime na jednoj eth kartici se podrazumeva operativan pristup ka Internetu (npr ako imamo pristup preko aDSL-a), dok će druga eth kartica biti spojena sa drugim računarom.

dakle topologija izgleda ovako (podrazumevano je da je podešen pristup Internetu preko eth0):

opis topologije

Na PC1 je potrebno odraditi kao root (komanda iz shell-a):

~$ ifconfig eth1 192.168.1.2 netmask 255.255.255.0 up

Da bi podesili da se PC1 ponaša kao default gateway za PC2, moramo na njemu da omogućimo forvardovanje paketa. Najbolje je da se sledeći skript podesi kao izvršni (sačuva u nekom fajlu i uradi chmod +x nad njim) i pokrene iz shell-a:

~$ iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
~$ iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
~$ iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

~$ echo 1 > /proc/sys/net/ipv4/ip_forward

Ovo omogućava pravljnje iptables pravila za forvardovanje paketa, dok ip_forward omogućava rutiranje.

Na PC2 računaru potrebno je u shell-u odraditi:

~$ ifconfig eth0 192.168.1.10 netmask 255.255.255.0 up

~$ route add default gw 192.168.1.2
Jasno je šta rade ove dve komande: prva će podići eth0 interfejs sa datim parametrima, dok će druga omogućiti kreiranje default rute ka IP adresi računara PC1, koji će odraditi posao forvardovanja paketa ka Internetu.

Dakle ono što postižemo ovom konfiguracijom je: jedan računar je povezan na Internet, a drugi su povezani na njega (npr preko switcha). Ovo ako se ukrsti sa firewall mogućnostima na Linuxu (iptables, ipchains) i ostalim servisima (squid, postfix, apache…) postaje moćna stvarčica.