============================================
Debian GNU/Linux per a les aules de l'ETSEIB
============================================
:Autor: Antoni Soto i Riera
:Data: 20 de setembre de 2006
:Llicència: Aquest document es distribueix sota la llicència
`Reconeixement-Compartirigual
`_ de
`Creative Commons `_.
:Codi font: El fitxer `DebianETSEIB.txt`_ conté el codi font d'aquest
document en sintaxi reStructuredText_.
:Resum: Aquest document descriu la configuració experimental d'un
ordinador per tal que funcioni a les aules informàtiques de
l'ETSEIB_.
.. _ETSEIB: http://www.etseib.upc.edu/
.. _DebianETSEIB.txt: DebianETSEIB.txt
.. _reStructuredText: http://docutils.sourceforge.net/rst.html
.. contents:: Índex
Objectius
---------
1. Aconseguir una instal·lació estable, minimalista i lleugera de
`Debian GNU/Linux`_ per a ser utilitzada en la docència de
l'assignatura Informàtica_ en les aules de l'ETSEIB_.
2. Aconseguir que el usuaris vegin un entorn GNU_/Linux_ normal malgrat
que l'autenticació es fa contra un PDC_ i l'espai de disc d'usuari
és un recurs exportat pel mateix PDC_.
Per tal d'assolir aquest objectius s'han pres les decisions següents:
1. Instal·lar la versió estable actual de `Debian GNU/Linux`_: 3.1
(sarge).
2. Instal·lar exclusivament programari necessari per a l'assignatura
d'Informàtica_: editor, compilador, make, TeX, navegador,
visualitzadors de pdf i ps, full de càlcul, ...
3. Instal·lar només un gestor de finestres [1]_ i no instal·lar cap
escriptori.
4. Usar winbind_ per a l'obtenció de UID_/GID_ a partir de SID_ i per
a l'autenticació contra el PDC_.
5. Usar pam_mount_ per al muntatge del l'espai de disc de l'usuari en
el moment d'entrar [2]_ al sistema.
.. _Debian GNU/Linux: http://www.debian.org/
.. _Informàtica: http://www.lsi.upc.edu/~inf/
.. _GNU: http://www.gnu.org/
.. _Linux: http://www.linux.org/
.. _PDC: http://us4.samba.org/samba/docs/man/Samba-HOWTO-Collection/samba-pdc.html
.. _winbind: http://us4.samba.org/samba/docs/man/Samba-HOWTO-Collection/winbind.html
.. _pam_mount: http://pam-mount.sourceforge.net/
.. _PAM: http://www.kernel.org/pub/linux/libs/pam/
.. _UID: http://en.wikipedia.org/wiki/User_identifier_%28Unix%29
.. _GID: http://en.wikipedia.org/wiki/Group_identifier_%28Unix%29
.. _SID: http://en.wikipedia.org/wiki/Security_Identifier
Instal·lació de Debian GNU/Linux
---------------------------------
Instal·lació per xarxa
~~~~~~~~~~~~~~~~~~~~~~~
La instal·lació de `Debian GNU/Linux`_ s'ha fet mitjançant la
xarxa. Només han estat necessaris tres disquets: boot, root i
net-drivers. Veieu la `Guia d'instal·lació de Debian GNU/Linux`_.
La instal·lació per xarxa, un cop configurada la targeta de xarxa,
intenta obtenir l'`adreça IP`_ de la màquina mitjançant DHCP_. En el
tram de xarxa on s'ha fet l'experiment no hi havia cap servidor de
DHCP_ i va caldre configurar la xarxa amb una `adreça IP`_ fixa. Un
cop fet això, el procés d'instal·lació continuà sense problemes. Cal
destacar que les aules de l'ETSEIB_ disposen d'un servidor de DHCP_ i
que, per tant, no caldrà assignar-los-hi una `adreça IP`_ fixa.
Llista de paquets instal·lats
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
La llista de paquets instal·lats en la màquina experimental s'obté
executant la comanda següent::
dpkg --get-selections > dpkg_get-selections.txt
Podeu consultar la llista mirant el fitxer `dpkg_get-selections.txt`_.
Per tal d'aconseguir que una altra màquina instal·li aquests paquets
caldrà executar::
dkpg --set-selections < dpkg_get-selections.txt
.. _dpkg_get-selections.txt: dpkg_get-selections.txt
Configuració de la xarxa per DHCP
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Un cop acabat el procés d'instal·lació s'ha configurat un servidor de
DHCP_ per tal d'experimentar l'assignació dinàmica d'una `adreça
IP`_. La configuració actual de ``/etc/network/interfaces`` és la
següent:
::
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet dhcp
Amb aquesta configuració la màquina obté correctament l'`adreça IP`_
del servidor de DHCP_.
.. _Guia d'instal·lació de Debian GNU/Linux: http://www.debian.org/releases/stable/i386/
.. _adreça IP: http://en.wikipedia.org/wiki/IP_address
.. _DHCP: http://en.wikipedia.org/wiki/DHCP
Configuració de winbind
-----------------------
Essencialment s'ha seguit la documentació sobre winbind_ que podem
trobar al projecte samba_:
1. Configurar el servei de resolució de noms [3]_ de manera que usi
també winbind_. Així, el fitxer ``/etc/nsswitch.conf`` queda com
següeix::
# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.
passwd: compat winbind
group: compat winbind
shadow: compat
hosts: files dns
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
2. Configurar ``/etc/samba/smb.conf`` amb els paràmetres necessaris
per winbind::
[global]
# general options
workgroup = EST-ETSEIB
# use uids from 10000 to 20000 for domain users
idmap uid = 10000-20000
# use gids from 10000 to 20000 for domain groups
idmap gid = 10000-20000
# allow enumeration of winbind users and groups
winbind enum users = yes
winbind enum groups = yes
# give winbind users a real shell (only needed if they have telnet access)
template homedir = /home/%U
template shell = /bin/bash
winbind use default domain = yes
3. Donar d'alta la màquina com a membre del domini que serveix el
PDC_. Com que el PDC_ de l'ETSEIB_ usa ADS_ cal seguir les
instruccions sobre `com esdevenir membre d'un domini gestionat per
un PDC amb ADS
`_.
a. Caldrà afegir al fitxer de configuració de samba_
``/etc/samba/smb.conf`` informació sobre Kerberos_ de manera que
el fitxer quedarà com segueix::
[global]
# general options
workgroup = EST-ETSEIB
# use uids from 10000 to 20000 for domain users
idmap uid = 10000-20000
# use gids from 10000 to 20000 for domain groups
idmap gid = 10000-20000
# allow enumeration of winbind users and groups
winbind enum users = yes
winbind enum groups = yes
# give winbind users a real shell (only needed if they have telnet access)
template homedir = /home/%U
template shell = /bin/bash
winbind use default domain = yes
# Active directory joining
# "ads server" is only necessary if your kdc
# can't be located using /etc/krb5.conf -- JamesSpooner
#
# Note that more recent Samba versions have renamed "ads server"
# to "password server", so if /var/log/messages reports
# 'Unknown parameter encountered: "ads server"' on restart,
# change 'ads' to 'password' -- ChetHosey
#
# ads server = test1.thinclient.test.org
security = ads
# encrypt passwords = yes is now default in Samba3 -- Enigma
encrypt passwords = yes
realm = EST-ETSEIB.LOCAL
# this handles the "ads server = " directive as well -- Enigma
password server = yang.upc.es
b. També cal modificar el fitxer de configuració de Kerberos_,
``/etc/krb5.conf``, que quedarà com segueix::
[libdefaults]
default_realm = EST-ETSEIB.LOCAL
[realms]
EST-ETSEIB.LOCAL = {
kdc = yang.upc.es
}
[domain_realms]
.kerberos.server = EST-ETSEIB.LOCAL
c. Finalment, per tal de donar d'alta la màquina al domini cal
executar les comandes següents::
kinit administrador@EST-ETSEIB.LOCAL
net ads join -U administrador
on ``administrador`` s'ha de substituir per un compte en el PDC_
que tingui permisos per donar d'alta màquines al domini.
4. Cal re-iniciar el dimoni [4]_ de winbind_ fent
::
/etc/init.d/winbind restart
A partir d'aquest moment podem consultar informació sobre els
usuaris i els grups del domini que serveix el PDC_ amb les comandes
``wbinfo`` i ``getent``.
5. Configurar PAM_ modificant els fitxers del directori ``/etc/pam.d``
de manera que el seu contingut sigui:
a. ``/etc/pam.d/common-account``::
#
# /etc/pam.d/common-account - authorization settings common to all services
#
# This file is included from other service-specific PAM config files,
# and should contain a list of the authorization modules that define
# the central access policy for use on the system. The default is to
# only deny service to users whose accounts are expired in /etc/shadow.
#
account sufficient pam_winbind.so
account required pam_unix.so
b. ``/etc/pam.d/common-auth``::
#
# /etc/pam.d/common-auth - authentication settings common to all services
#
# This file is included from other service-specific PAM config files,
# and should contain a list of the authentication modules that define
# the central authentication scheme for use on the system
# (e.g., /etc/shadow, LDAP, Kerberos, etc.). The default is to use the
# traditional Unix authentication mechanisms.
#
auth required pam_mount.so
auth sufficient pam_winbind.so use_first_pass
auth required pam_unix.so nullok_secure use_first_pass
c. ``/etc/pam.d/common-session``::
#
# /etc/pam.d/common-session - session-related modules common to all services
#
# This file is included from other service-specific PAM config files,
# and should contain a list of modules that define tasks to be performed
# at the start and end of sessions of *any* kind (both interactive and
# non-interactive). The default is pam_unix.
#
session required pam_unix.so
session optional pam_mount.so use_first_pass
Aquesta configuració inclou també la de pam_mount_ que afecta al
directori ``/etc/pam.d``. Veieu la secció `Configuració de
pam_mount`_.
.. _samba: http://www.samba.org/
.. _Name Service Switch: http://en.wikipedia.org/wiki/Name_Service_Switch
.. _ADS: http://en.wikipedia.org/wiki/Active_Directory_Service
.. _Kerberos: http://en.wikipedia.org/wiki/Kerberos_protocol
.. _Daemon: http://en.wikipedia.org/wiki/Daemon_%28computer_software%29
Configuració de pam_mount
-------------------------
A més de la configuració dels fitxers del directori ``/etc/pam.d/``
descrita al punt 5 de la secció `Configuració de winbind`_, cal
modificar els fitxers següents com s'indica al document
``/usr/share/doc/libpam-mount/README.Debian.gz``:
1. En el fitxer ``/etc/login.defs`` cal substituir la línia 298
::
CLOSE_SESSIONS no
per la següent::
CLOSE_SESSIONS yes
2. En el fitxer ``/etc/security/pam_mount.conf`` cal substituir la
línia 197
::
# volume * smb viper & /home/& uid=&,gid=&,dmask=0750,workgroup=WINDOWS_DOMAIN - -
per la següent::
volume * smb yang.upc.es &$ /home/& uid=&,gid=&,dmask=0750,workgroup=EST-ETSEIB - -
Conclusions
-----------
Configurant un sistema operatiu Debian GNU/Linux, versió 3.1 (sarge),
com s'indica en aquest document hem aconseguit que qualsevol usuari
d'un domini servit per un PDC_ pugui entrar en el sistema [2]_ com si
es tractés d'un usuari nadiu UNIX_. Això implica que l'autenticació de
l'usuari es fa contra el PDC_ i un cop autenticat es munta en el
`directori home`_ de l'usuari el recurs corresponent exportat pel
PDC_. En sortir del sistema [5]_ el recurs es desmunta automàticament.
Val a dir que s'ha procurat minimitzar els canvis respecte a la
configuració per defecte de Debian. Això facilitarà les
actualitzacions posteriors del sistema.
Una altra característica interessant d'aquesta configuració és la seva
genericitat, en el sentit que no hi cap paràmetre específic de la
màquina concreta en la qual s'ha fet la instal·lació
experimental. Això té com a conseqüència que la imatge de la
instal·lació provisional hauria de ser igualment vàlida per a
qualsevol altra màquina.
.. _UNIX: http://en.wikipedia.org/wiki/UNIX
.. _directori home: http://en.wikipedia.org/wiki/Home_directory
.. _Logout: http://en.wikipedia.org/wiki/Logout
Treball Futur
-------------
* Estudiar si és possible canviar la contrasenya en el PDC_ usant
``passwd``. De moment cal fer-ho amb la comanda següent::
smbpasswd -r yang.upc.es
* Estudiar per què xdm avorta l'execució amb la configuració de PAM_
descrita al punt 5 de la secció `Configuració de winbind`_. Ara per
ara s'usa wdm com a `display manager`_.
.. _display manager: http://en.wikipedia.org/wiki/Display_manager
.. _Login: http://en.wikipedia.org/wiki/Login
.. _Window manager: http://en.wikipedia.org/wiki/Window_manager
.. [1] `Window manager`_.
.. [2] Login_.
.. [3] `Name Service Switch`_.
.. [4] Daemon_.
.. [5] Logout_.