============================================ 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_.