2007-11-10

Rozdíly v přiřazení objektů v php4 a php5

Napíšu si nějakou třídu a z ní vytvořím do proměnné objekt. Ten potom přiřadím jiné proměnné a nastavím objektu v ní nějakou hodnotu vlastnosti.

Výsledky vypíšu pomocí funkce print_r.

Php4 vypíše

tfoo Object
(
    [bar] => 1
)
tfoo Object
(
    [bar] => 2
)

Php5 vypíše

Tfoo Object
(
    [bar] => 2
)
Tfoo Object
(
    [bar] => 2
)

protože se přiřazením objektů vytvořila reference. Aby obojí fungovalo stejně musím k přiřazení v php5 přidat

$b = clone $a;

Zajímavé také je, že php5 vypíše správně velikost písmen v názvu třídy.

2007-10-30

Znemožnění uživateli opustit svou složku v proftpd.

Potřeboval jsem účtu hosta omezit na ftp přístup ke složkám, ke kterým má normálně v linuxu přístup z pozice svých práv. Host je ve skupině uživatelů, takže může číst z většiny složek v systému a tomu jsem chtěl zabránit. Chtěl jsem, aby se mohl pohybovat pouze ve své domovské složce /home/guest a aby v ní mohl dělat cokoli. Používám démona proftpd.

Nejdříve si otevřu konfigurační soubor /etc/proftpd.conf a do něj přidám řádky, které zamezí přístup uživateli guest do jakékoli složky skrz ftp na počítači.

<Directory /*>
<Limit ALL>
DenyUser guest
</Limit>
</Directory>

Tady si musím dát pozor na to, že pokud už mám v konfiguráku nějakou konfiguraci pro Directory /*, přidám její obsah do již existující. Tzn tag Limit vložím někam do tagu Directory /*.

Nyní pod to vložím řádky, které naopak povolí přístup, ale pouze v uživatelově složce.

<Directory /home/guest>
<Limit ALL>
AllowUser guest
</Limit>
</Directory>

A teď už jenom nastavím složku, do které bude defaultně po přihlášení přemístěn.

DefaultRoot /home/guest guest

Uložím konfigurační soubor a pomocí příkazu

/etc/init.d/proftpd restart

restartuji ftp démona. Na konci konfiguračního souboru je zakomentovaný řádek #DefaultRoot ~ , jeho odkomentování způsobí, že úplně všichni uživatelé budou uzamčeni ve svých domovských složkách.

Ještě zakážu uživateli guest možnost přihlášení do shellu, protože tam stále platí linuxová práva. Nejdříve si vytvořím kopii pseudo shellu /bin/false, pod novým názvem /bin/ftp, kvůli přehlednosti.

cp /bin/false /bin/ftp

A tento nový shell přidám mezi ostatní do seznamu použitelných shellů /etc/shells pomocí příkazu

echo "/bin/ftp" >> /etc/shells

Přidání do seznamu shellů nemusím provádět pomocí přesměrování výstupu, ale můžu ho zeditovat nějakým textovým editorem, podle chuti. A teď tento shell nastavím uživateli guest jako výchozí

usermod -s /bin/ftp guest

2007-10-28

Instalace jdk6 na debian etch

Protože oficiální linuxový instalátor javy nefunguje na debianu (hází hlášku error: Failed dependencies), je potřeba zvolit jiný postup.

Nejdříve si otestuju aktuální verzi javy nainstalovanou na mém systému, pomocí příkazu:

java -version

Mělo by se vypsat něco jako:

java version "1.4.2"
gij (GNU libgjc)...

Teď si stáhnu poslední verzi javy z http://java.sun.com, stáhnu soubor s koncovkou .bin. Teď tento soubor rozbalím do nějakého temp adresáře, pomocí příkazu:

./jdk-6u2-linux-i586-rpm.bin -x

Měl by se mi rozbalit jeden nebo více .rpm souborů.

Teď nainstaluji alien, pomocí:

apt-get install alien

a pustím ho na .rpm soubory:

alien --scripts --keep-version -d *.rpm

Chvilku to bude trvat, záleží na výkonnosti pc. Na mém celeronu 1400Mhz to trvalo asi 5 minut. V tmp adresáři by se měl/měly objevit instalační soubory debianu s koncovkou .deb. Ty nainstaluji pomocí příkazu:

dpkg -i *.deb

A voila, java byla nainstalována někam do /usr/java/. Nyní ještě vytvořím softlink na javu pomocí

ln -s /usr/java/latest /usr/lib/java

a do souboru /etc/profile přidám mezi původní řádky export systémové proměnné

PATH
umask 022

cestu k javě, tzn., soubor bude vypadat asi takhle:

export PATH
JAVA_HOME="/usr/lib/java"
export JAVA_HOME
umask 022

Namapuju binárky pro cestu k javě, aby se po zadání příkazu java do konzole volala správná verze:

update-alternatives --install /usr/bin/java java $JAVA_HOME/bin/java 200
update-alternatives --install /usr/bin/javac javac $JAVA_HOME/bin/javac 200
update-alternatives --install /usr/bin/jar jar $JAVA_HOME/bin/jar 200
update-alternatives --install /usr/bin/keytool keytool $JAVA_HOME/bin/keytool 200

Teď už jenom stačí restartovat PC. A znovu otestovat příkazem

java -version

Můžu si i přidat javu do firefoxu a to tak, že vytvořím symbolický link do složky plugins firefoxu na plugin v adresáři, kde mám nainstalovanou javu. Pod debianem se firefox jmenuje iceweasel, proto ta složka.

ln -s /usr/java/jdk1.6.0/jre/plugin/i386/ns7/libjavaplugin_oji.so /usr/lib/iceweasel/plugins/libjavaplugin_oji.so

Restartuju firefox a otestuju zadáním

about:plugins

a podívám se, jestli je java nainstalovaná.