IMPORTANT: Per accedir als fitxer de subversion: http://acacha.org/svn (sense password). Poc a poc s'aniran migrant els enllaços. Encara però funciona el subversion de la farga però no se sap fins quan... (usuari: prova i la paraula de pas 123456)

Skeleton

Repositoris

Instal·lació

Baixem el skeleton del repositori GitHub:

$ cd /usr/share
$ sudo git clone https://github.com/acacha/skeleton

Configurem l'apache per tal de publicar el skeleton:

$ sudo cp 000-default.conf 001-skeleton.conf

S'edita el fitxer i s'afegeix l'alias al final que indiqui al directori skeleton correcte:

$ sudo nano 001-skeleton.conf 
Alias /skeleton /usr/share/skeleton

S'activa el nou fitxer de codeigniter afegit a l'apache2 i reiniciem el servei.

$ sudo a2ensite 001-codeigniter.conf 
$ sudo /etc/init.d/apache2 restart

Ara cal configurar l'aplicació. Comencem per l'accés a bases de dades, primer SQL:

Creem la base de dades. Per crear la base de dades i l'usuari d'accés, primer obtenim una clau aleatòria:

$ mkpasswd

Per l'exemple suposem que ens dona:

6RqN5CCc1zuVE

Ara entrem al servidor de MySQL, hem de saber la paraula de pas de l'usuari root o d'un usuari amb permisos (a Debian per exemple es pot utilitzar l'usuari debian-sys-maint del fitxer /etc/mysql/debian.cnf )

$ sudo mysql -u root -p

Les comandes per crear la base de dades són:

IMPORTANT: Hem de canviar el nom de la base de dades per tal d'adoptar-se al vostre cas!

mysql> CREATE DATABASE skeleton;
mysql> CREATE USER 'skeleton'@'localhost' IDENTIFIED BY '6RqN5CCc1zuVE';
mysql> GRANT ALL PRIVILEGES ON skeleton.* TO 'skeleton'@'%' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
mysql> exit;

NOTA: Si ens equivoquem al establir la paraula de pas o simplement la volem canviar:

SET PASSWORD FOR 'skeleton'@'localhost' = PASSWORD('6RqN5CCc1zuVE')

A l'arrel del projecte trobarem un fitxer mysql amb l'estructura:

$ cd /usr/share/skeleton 
$ sudo mysql -p skeleton < skeleton_only_structure.sql

Se us proporciona un fitxer de base de dades exemple, fem una còpia:

$ sudo cp application/config/database.php.example application/config/database.php

Ara posem les dades de connexió al fitxer:

$ sudo nano application/config/database.php

Canviem les dades:

$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'skeleton';
$db['default']['password'] = '6RqN5CCc1zuVE';
$db['default']['database'] = 'skeleton';
$db['default']['dbdriver'] = 'mysql';

Configurem els permisos dels fitxers:

$ sudo chown -R www-data:www-data application/logs/

I també el upload de fitxers:

$ sudo mkdir -p assets/uploads/
$ sudo chown www-data:www-data -R assets/uploads/

Ara cal configurar l'accés per Ldap. Fitxer d'exemple:

$ sudo cp application/config/auth_ldap.php.example application/config/auth_ldap.php

Si volem utilitzar el reialme d'autenticació Ldap editem el fitxer i posem les nostres dades de connexió al servidor Ldap:

$ sudo joe application/config/auth_ldap.php

Posem els valors del nostre server Ldap'. Per exemple:

$config['hosts'] =array('10.140.128.22');
$config['ports'] = array(389);
$config['basedn'] = 'dc=augute,dc=org';
$config['login_attribute'] = 'uid';
$config['proxy_user'] = 'cn=admin,dc=augute,dc=org';
$config['proxy_pass'] = 'PASSWORD';

canviem les dades de l'exemple pel que us pertoqui.

IMPORTANT: Si tenim Gosa instal·lat podem obtenir les dades de configuració del fitxer /etc/gosa/gosa.conf

$ sudo nano .git/info/exclude

I afegim les línies:

application/config/auth_ldap.php
application/config/database.php
application/logs/audit.log

NOTA: audit.log és un fitxer que guarda un registre dels accessos al sistema. No cal pujar-lo al repositori és informació diferent a cada instal·lació i a més no cal fer-la pública

Ara cal instal·lar les apps de tercers:

$ cd /usr/share/skeleton/application/third_party
$ sudo git clone https://github.com/acacha/grocery-crud
$ sudo git clone https://github.com/scoumbourdis/image-crud

Configurem l'aplicació:

$ sudo cp /usr/share/skeleton/application/config/skeleton_auth.php.example /usr/share/skeleton/application/config/skeleton_auth.php

Editem el fitxer:

$ sudo joe /usr/share/skeleton/application/config/skeleton_auth.php

NOTA: Podem deixar la configuració per defecte...


Ara podem consultar l'aplicació a:

http://localhost/skeleton

Autenticació

Bàsica.htpasswd

Els mòduls d'Apache encarregats del control d'accés són:

  • mod_auth: Control d'accés per usuaris.
  • mod_access: Directives Allow, Deny i Access.

NOTA: Aquests mòduls normalment estant activats per defecte.

Per a poder utilitzar l'autenticació bàsica farem servir el mòdul auth_basic.load:

$ ls -la /etc/apache2/mods-enabled/ | grep auth_basic
lrwxrwxrwx 1 root root   33 oct  9 12:14 auth_basic.load -> ../mods-available/auth_basic.load

La prova de l'autenticació bàsica se realitzarà sobre una copia del skeleton.

$ cp /usr/share/skeleton /usr/share/skeleton_basic

Creem un usuari i contrasenya mitjançant la comanda gtpasswd que se guardarà en el fitxer .auth_basic.

$ sudo htpasswd -c ~/passwords/.auth_basic nicolae
New password: 
Re-type new password: 
Adding password for user nicolae

Se pot visualitzar el fitxer generat:

$ cat .auth_basic 
nicolae:$apr1$jXK3QE2H$2566F9XxDvizX4GXDrk34/


Al directori /etc/apache2/sites-enabled ja hauriem de tindre un fitxer dedicat al skeleton, l'editem i afegim el següent al final:

$ nano /etc/apache2/sites-enabled/002-skeleton.conf
Alias /skeleton_basic "/usr/share/skeleton_basic"
<Directory /usr/share/skeleton_basic>
AuthType Basic
	AuthName "Restricted Files"
	AuthUserFile /home/nicolae/passwords/.auth_basic
	Require valid-user
</Directory>

Després de les modificacions caldrà reiniciar l'apache2.

$ sudo /etc/init.d/apache2 restart
 * Restarting web server apache2  

Ara ja se pot accedir a skeleton_basic.

http://localhost/skeleton_basic
Autenticació bàsica.

Comprovació dels fitxers de log:

  • Access permès.
$ sudo tail -f /var/log/apache2/access.log
127.0.0.1 - nicolae [30/Oct/2014:14:04:33 +0100] "GET /skeleton_basic HTTP/1.1" 301 584 "-" "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:33.0) Gecko/20100101 Firefox/33.0"
127.0.0.1 - nicolae [30/Oct/2014:14:04:33 +0100] "GET /skeleton_basic/ HTTP/1.1" 200 801 "-" "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:33.0) Gecko/20100101 Firefox/33.0"
127.0.0.1 - nicolae [30/Oct/2014:14:04:33 +0100] "GET /skeleton/index.php/skeleton_auth/auth/login HTTP/1.1" 200 1786 "-" "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:33.0) Gecko/20100101 Firefox/33.0"
  • Access denegat.
[Thu Oct 30 14:31:29.771179 2014] [auth_basic:error] [pid 13666] [client 127.0.0.1:42009] AH01617: user nicolae: authentication failure for "/skeleton_basic/": Password Mismatch

Digest.htpasswd

Per a poder utilitzar l'autenticació bàsica farem servir el mòdul auth_digest que al contrari que el auth_basic no està activat per defecte:

/etc/apache2/mods-enabled$ sudo a2enmod auth_digest

Se reinicia l'apache2.

$ sudo /etc/init.d/apache2 restart

Se comprova que el auth_digest s'hagi activat.

ls -la | grep auth_digest
lrwxrwxrwx 1 root root   34 oct 30 14:16 auth_digest.load -> ../mods-available/auth_digest.load


La prova de l'autenticació digest se realitzarà sobre un altra copia del skeleton.

$ cp /usr/share/skeleton /usr/share/skeleton_digest

Creem un usuari i contrasenya mitjançant la comanda htdigest que se guardarà en el fitxer .auth_digest.

$ sudo htdigest -c ~/passwords/.auth_digest Digest nicolae
Adding password for nicolae in realm Digest.
New password: 
Re-type new password: 

Se comprova el fitxer generat:

$ cat .auth_digest 
nicolae:Digest:122461e71dbf093f7743bfab06e23ca8


S'edita el fitxer 002-skeleton.conf un altre cop i se configura l'autenticació digest.

$ nano /etc/apache2/sites-enabled/002-skeleton.conf
Alias /skeleton_digest "/usr/share/skeleton_digest"
<Directory /usr/share/skeleton_digest>
AuthType Digest
	AuthName "Digest"
	AuthUserFile /home/nicolae/passwords/.auth_digest
	Require valid-user
</Directory>

Se reinicia l'apache2.

$ sudo /etc/init.d/apache2 restart


Ara ja se pot accedir a skeleton_basic.

http://localhost/skeleton_digest
Autenticació digest.
  • Access permès.
127.0.0.1 - nicolae [30/Oct/2014:14:46:14 +0100] "GET /skeleton_digest HTTP/1.1" 301 586 "-" "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:33.0) Gecko/20100101 Firefox/33.0"
127.0.0.1 - nicolae [30/Oct/2014:14:46:14 +0100] "GET /skeleton_digest/ HTTP/1.1" 200 873 "-" "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:33.0) Gecko/20100101 Firefox/33.0"
  • Access denegat.
[Thu Oct 30 14:47:30.024647 2014] [auth_digest:error] [pid 14092] [client 127.0.0.1:42145] AH01790: user `blabla' in realm `Digest' not found: /skeleton_digest/