Skip to Content

linux

Podešavanje suEXEC za PHP na Virtualminu GPL

Napomena pre početka, ovako se radi u Debianu, veoma slično je i za ostale GNU/Linux distribucije.

Prvo, napraviti skel za nove hostove, kao root:

cd /etc/skel
mkdir -p etc/php5
cp /etc/php5/apache2/php.ini /etc/skel/etc/php5/php.ini
mkdir fcgi-bin
vi fcgi-bin/php5.fcgi

U fajl php5.fcgi upišite ovo:

#!/bin/bash

export PHPRC=$PWD/../etc/php5
umask 022
export SCRIPT_FILENAME=$PATH_TRANSLATED
exec /usr/bin/php-cgi

Promenite dozvole ovom fajlu:

chmod 744 fcgi-bin/php5.fcgi

Dalje, ulogujte se u Virtualmin, pa idite na System Settings -> Server Templates -> Default Settings -> Apache website i u polje Directives and settings ubacite sledeće:

ServerName ${DOM}
ServerAlias www.${DOM}
DocumentRoot ${HOME}/public_html
ErrorLog /var/log/virtualmin/${DOM}_error_log
CustomLog /var/log/virtualmin/${DOM}_access_log combined
DirectoryIndex index.html index.htm index.php index.php4 index.php5

<Directory ${HOME}/public_html>
Options -Indexes IncludesNOEXEC FollowSymLinks ExecCGI
allow from all
AllowOverride All
AddHandler fcgid-script .php
FCGIWrapper ${HOME}/fcgi-bin/php5.fcgi .php
</Directory>

<Directory ${HOME}/cgi-bin>
AddHandler cgi-script cgi
allow from all
</Directory>

Pa kliknite na Save.

I to je to. Sada će se PHP fajlovi izvršavati preko suEXEC što znači da fajlovi koje uplodujete preko PHP skripti unutar nekog CMS-a, recimo, moći biti promenjeni ili obrisani ukoliko se ulogujete preko FTP ili SSH.

Važno je samo zapamtiti da PHP fajlovi i wrapper skripta ne smeju biti world/grou writable. Ukoliko nešto ne bude u redu, pogledati u /var/log/apache2/suexec.log.

Open Source Day 0.1

Nikola KoturU subotu 13. marta je bio prvi Open Source Day skup predavanja na PMF-u Novom Sadu.

Skup je organizovala eKomuna, više o svemu možete saznati na sajtu eKomune. Jedan od predavača je bila i moja malenkost, a tema o kojoj sam pričao je opšta GNU/Linux priča koju su svi čuli već milion puta, plus specifičnosti što se tiče programiranja.

Ostala predavanja su držali Dejan Marić, poznatiji kao gosp. Maks, na temu Drupal CMS-a kao razvojnog okruženja, i Dejan Injac, čovek sa previše nadimaka, koji je načeo temu Joomla CMS-a. Tokom predavanja o Joomli moglo se čuti dosta interesantnih paralela između ova dva CMS-a, koji je bolji za koju svrhu, kao i pratkični primeri šta se gde može brže i lakše uraditi. Izvukao se zaključak da je Drupal bolji CMS za programere i za fleksibilno prilagođavanje i modifikaciju, dok Joomla caruje na većini korisničkih scenarija.

Kao što napomenuh gore, ja sam započeo opštom GNU/Linux pričom, pošto je ovo moje prvo predavanje na Open Source Danima zamišljeno kao prvo u seriji sve specifičnijih i interesantnijih predavanja na temu programiranja u GNU/Linux operativnom sistemu.

Prezentacija koja je išla u pozadini nalazi se zakačena za ovaj post, nema šta mnogo da se vidi, ali ipak je u duhu otvorenosti stavljam ovde. Nažalost, nisam snimao sve što sam kucao na računaru, te ne mogu i to da postavim.

Takođe, nekoliko slika sa OS Dana 0.1 možete videti u mojoj galeriji.

Nadam se da neće proći mnogo vremena pre nego što organizujemo verziju 0.2 predavanja pošto već imam nekoliko dobrih ideja za teme koje treba obraditi. I obećavam, sledeći put će biti mnogo više primera, a mnogo manje pričanja.

OpenSSL za priručnu enkripciju

Brzo i jednostavno enkriptovanje fajlova (ukoliko pri ruci nije GPG ili nešto slično) se može postići pomoću OpenSSL paketa koji je instaliran podrazumevano na skoro svim mogućim računarima sa GNU/Linuxom.

Enkriptovanje fajla fajl.txt se vrši na sledeći način:

openssl enc -aes-256-cbc -salt -in fajl.txt -out fajl.enc

Fajl kasnije možete vratiti u normalno stanje sledećom komandom:

openssl enc -d -aes-256-cbc -in fajl.enc

U ovim gore primerima smo koristili AES algoritam za enkripciju, ukoliko želite neki drugi pomoću sledeće komande možete videti koje OpenSSL podržava:

openssl -h

I to je to.

Earcandy - jer imamo i uši

Ovo je jedan od onih programa koje morate da probate da biste se uverili koliko je koristan. Na prvo čitanje, možda ne zvuči da je u pitanju nešto revolucionarno, Earcandy prati koje aplikacije puštaju zvuk na vašem računaru, i odlučuje kojoj će da da prioritet u glasnoći.

Ali, instalirajte ovaj program i koristite ga nekoliko dana, shvatićete da je pun pogodak i nikada ga nećete propustiti kroz apt-get remove :)

Da vidimo o čemu se radi... Slušate muziku, i u Firefoxu otvorite on-line video da pogledate, Earcandy to odmah primeti i muziku utiša sve dok se video ne završi, i odmah nakon toga je ponovo pojača. Aha... Ili, dok gledate film, zazvoni vam VoIP telefon! Nema potrebe za pauziranjem, traženjem dugmeta za utišavanje jerbo Earcandy odmah utiša sve pošto ste postavili VoIP kao najprioritetniju aplikaciju. Ukratko, ukoliko ste vizuelan tip, pogledajte video fajl snimka Earcandy u akciji.

Sve ovo je moguće zato što se Earcandy oslanja na zvučni sistem pod imenom Pulse Audio (o kome pisah prošle godine). A ja jedva čekam da vidim šta će nam još pokloniti mogućnost kontrole koju PA pruža.

Okej, sada kada vam zvuči primamljivo, evo copy-paste uputstva kako da ga instlirate u vaš Ubuntu GNU/Linux sistem.

Prvo ćemo da dodamo javni ključ Launchpad PPA repozitorije:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 6E73CA45

Onda, na kraj fajla /etc/apt/sources.list dodati gde se paketići nalaze:

deb http://ppa.launchpad.net/flimm/ppa/ubuntu jaunty main
deb-src http://ppa.launchpad.net/flimm/ppa/ubuntu jaunty main

Earcandy je dostupan i za starije verzije Ubuntu-a. I sada, na kraju, instalirajte program:

sudo apt-get update
sudo apt-get install earcandy

To je to. Pritisnite Alt i F2, pokrenite ear_candy i neka čarolija uradi svoje...

Instaliranje PHP-GTK na Ubuntu 9.04

PHP-GTK je ekstenzija za PHP programski jezik koja implementira GTK toolkit. Ukratko, služi da u PHP-u pravimo samostalne grafičke aplikacije.

Ovde je opisana instalacije PHP-GTK 2.0.1 na Ubuntu 9.04 operativni sistem. Paket se ne nalazi u repozitoriji koja bi omogućila brzo i jednostavno instaliranje, već se mora kompajlirati iz izvornog koda.

Prvo instalirajte sve pakete potrebne za kompajliranje:

sudo apt-get install m4 gawk build-essential

PHP-GTK se može skinuti ovde, zatim raspakujte skinutu arhivu:

tar xzf php-gtk-2.0.1.tar.gz

PHP paket trenutno ima bag, te se pre kompajliranja mora napraviti ovaj trik:

cd /usr/share/aclocal
cp libtool.m4 libtool-orig.m4
cat lt~obsolete.m4 ltoptions.m4 ltsugar.m4 ltversion.m4 >> libtool.m4

Dalje ste spremni za kompajliranje po uputstvu sa PHP-GTK sajta. Ukratko:

./buildconf
./configure
make
sudo make install

I ne zaboravite da dodate sledeću liniju u /etc/php5/cli/php.ini:

extension=php_gtk2.so

To je to.

Volkswagen Amarok

Evo ga, Volkswagen Amarok:

Volkswagen Amarok

VW je neko vreme davao imena automobilima po vetrovima (jetta, corrado, santana...), a sada su se bacili na GNU/Linux audio plejere :) Baš me interesuje kako će izgledati VW Rhythmbox...

Instaliranje Samba servera na Ubuntu GNU/Linuxu

Ukoliko želite da na lak način delite fajlove između GNU/Linux i Windows računara Samba nudi pravo rešenje za to. Ovde ću opisati instaliranje i podešavanje Samba servera na Ubuntu operativnom sistemu.

Prvo ćemo instalirati Sambu:

sudo apt-get install samba smbfs

Sada kada je Samba instalirana podesićemo konfiguracioni fajl. Postoje programi pomoću kojih možete podešavati Sambu unutar grafičkog okruženja, ali najbrže je to uraditi direktno u konfiguracionom fajlu:

sudo gedit /etc/samba/smb.conf

U konfiguracionom fajlu pronaći deo za autentifikaciju koji izgleda ovako:

####### Authentication #######

# "security = user" is always a good idea. This will require a Unix account
# in this server for every user accessing the server. See
# /usr/share/doc/samba-doc/htmldocs/Samba3-HOWTO/ServerType.html
# in the samba-doc package for details.
;   security = user

Odkomentarisati liniju "security = user" i dodati još jednu linuju da na kraju taj deo fajla izgleda ovako:

####### Authentication #######

# "security = user" is always a good idea. This will require a Unix account
# in this server for every user accessing the server. See
# /usr/share/doc/samba-doc/htmldocs/Samba3-HOWTO/ServerType.html
# in the samba-doc package for details.
   security = user
   username map = /etc/samba/smbusers

Odlično! Kad smo već u konfiguracionom fajlu, podesićemo da home direktorijum bude vidljiv na mreži. Pronađite, pri kraju fajla, deo koji izgleda ovako:

#======================= Share Definitions =======================

# Un-comment the following (and tweak the other settings below to suit)
# to enable the default home directory shares.  This will share each
# user's home directory as \\server\username

I onda, napravite da početak tog dela ([home] odeljak) izgleda ovako:

[homes]
   comment = Home Directories
   browseable = yes
   read only = yes
   create mask = 0700
   directory mask = 0700

Izbacio sam komentare (sve linije koje počinju sa # ili ;) kako bih izvukao najbitnije. Sada kada je sve podešeno vreme je da dodamo korisnike. Jedna napomena pre dodavanja korisnika: možete da dodajete samo korisnike koji već postoje u sistemu. Tako da ukoliko neko korisničko ime ne postoji, prvo ga dodajte na klasičan način (sudo adduser ImeKorisnika). Dakle, dodajmo jednog korisnika:

sudo smbpasswd -a <ime korisnika>

Ukucajte lozinku dva puta i to je to. Zatim dodajte korisnika u fajl za koji smo Sambi rekli da mapira korisnike:

sudo gedit /etc/samba/smbusers

Format za mapiranje korisnika je vrlo jednostavan: (ubuntu korisničko ime) = "(samba korisničko ime)". Imena ne moraju biti ista, ali pojednostavljuje stvari ako ih držimo istim. Dakle u ovaj fajl stavite:

<korisnik> = "<samba korisnik>"

I to je to. Ostalo je samo da restartujemo Sambu:

/etc/init.d/samba restart

Gotovo. Sada ćete moći pristupiti svojim fajlovima na GNU/Linux računaru iz Windowsa.

 

Tar i ja

Aha! Suočen s velikim direktorijumom sa velikim brojem malih fajlova, odlučio sam ga iskopirati na drugi mašinu. Prvo što mi je palo na pamet je da iskopiram pomoću OpenSSH alata za kopiranje: scp. I to je super, ali ogroman broj fajlova znači da bi se dosta vremena i bandwidtha potrošilo bez potrebe. Treba to nekako streamovati, a kao rešenje se nametnuo tar. Evo komande:

tar -cf - /neki/direktorijum | ssh udaljeni.host tar -xf - -C /odredišni/direktorijum

Način funkcionisanja ove linije je prilično jednostavan. Parametrom -c kažemo taru da počne praviti arhivu (bez bespotrebne kompresije), a -f - govori da arhivu izbacuje na stdout (standardni izlaz). S druge strane, na udaljenom računaru, isto pokrećem tar ali sa obrnutim parametrima: -x znači raspakuj arhivu, a -f - govori taru da je čeka na stdin. I ide. Nažalost, nema nikakvog statusa ili predviđenog vremena za završetak, i rsync bi ovaj posao mnogo lepše odradio, pogotovo ukoliko se isto stablo nalazi i sa druge strane, ali ovaj način je brz, jednostavan i radi posao.

Audio konverzija

Mplayer, video i audio plejer koji podržava ogroman broj formata, se vrlo lako može iskoristiti za konverziju audio fajlova. Na primer, našao sam m4r audio fajl (iPhone ringtone) koji mi se jako sviđa, ali moj telefon ne podržava vlasnički AAC format, te sam morao da fajl prebacim u MP3. Prvo sam uz pomoć Mplayera napravio WAV fajl:

mplayer -ao pcm Muppets.m4r -ao pcm:file="Muppets.wav"

Nakon toga, MP3:

lame --preset standard Muppets.wav Muppets.mp3

Divno.

Synergy - kratko uputstvo

Synergy logoSynergy je zgodan program pomoću kojeg je moguće deliti jednog miša i jednu tastaturu između više računara, od kojih svako ima svoj monitor. Nije potreban nikakav dodatni hardver (tipa KVM uređaja), namenjen je onim korisnicima koji imaju više računara na svom stolu od kojih svaki ima svoj monitor. A ja sam takav :) Dalje, Synergy podržava Unix, GNU/Linux, Windows 95/NT familiju i OS X operativne sisteme. Što znači da je skoro sve pokriveno :)

Prebacivanje na drugi ekran se postiže jednostavnim pomeranjem miša preko ivice ekrana. Synergy takođe spaja clipboard-e svih sistema u jedan, tako da je copy/paste između sistema moguće. Ali to nije sve - sinhronizuju se i screensaver-i tako da svi staju i kreću kao jedan, a ako je uključeno zaključavanje ekrana (ne znam da li je ovo podržano u Windows operativnim sistemima), u samo jedan ekran treba uneti lozinku da bi se svi otključali.

To je kao neki opis. Lično, meni je počela smetati dodatna tastatura i miš na stolu, pa sam instalirao Synergy i produktivnost mi je povećana iz jednostavnog razloga što više ne pomeram ruke na drugu tastaturu kada želim nešto da uradim na drugom računaru. Ovde ću opisati koliko je jednostavno instalirati i početi koristiti Synergy na setupu od dva računara (jedan Debian Sid, drugi Ubuntu server).

Prvo sam instalirao Synergy na oba računara identičnom komandom:

apt-get install synergy

Vrlo jednostavno. Zatim je potrebno odlučiti koji će računar biti server, a koji klijent. S tim da je server onaj računar na kojem se nalaze tastatura i miš koji će se koristiti. Onda je potrebno podesiti server računar tako što će se napraviti jednostavan konfiguracioni fajl u $HOME direktorijumu pod imenom .synergy.conf. Evo kako taj fajl izgleda kod mene:

section: screens
        amiga:
        exitserver:
end
section: links
        amiga:
                right = exitserver
        exitserver:
                left = amiga

end

Dakle, amiga je server, a exitserver je klijent računar. Kada smo napravili konfiguracioni fajl za server, startovaćemo server sledećom komandom:

synergys -f

Parametar -f sprečava synergy da ode u pozadinu, već ga primorava da ostane u terminalu i da ispisuje šta mu se dešava. To će pomoći kod prvog podešavanja, da bi se uklonili problemi. Nakon što je sve podešeno, može se izbaciti ovaj parametar da bi se oslobodila konzola.

Zatim, treba startovati synergy na klijentskom računaru, što je vrlo jednostavno pošto nema potrebe za ikakvih konfiguracionim fajlovima. Startuje se sa:

synergyc -f ADRESA_SERVER_RAČUNARA

Dakle, potrebno je samo navesti adresu server računara.

Nakon svega ovoga probati da li jedan miš i tastatura kontrolišu oba desktopa, i ako je sve u redu, dalje se može koristiti bez -f parametra. Za načine da se Synergy pokrene pri startovanju računara pogledajte uputstva na sajtu projekta ili na ovom zgodnom Ubuntu wikiju. Što se tiče sigurnosti, Synergy ne implementira nikakav sistem zaštite informacija koje se razmenjuju niti bilo kakav način autentifikacije, stoga oprez. Na sajtu projekta možete pronaći i način kako da načinite vezu sigurnom, pa možete koristiti Synergy i na nesigurnim mrežama.

U svakom slučaju, posetite sajt, ima dosta zanimljivih informacija i ideja za implementaciju.

Adios ;)

Syndicate content