howto

Security Enhanced Linux

SELinux

Nunca te vas a la cama sin saber una cosa más. Hoy me encontraba en el trabajo con un problema en el apache en un Centos 5. Cuando cambiaba el DocumentRoot a otro diferente del por defecto me sacaba el siguiente error en el log:

Permission denied: access to /index.html denied

Me he vuelto loco con los permisos, le daba todos permisos posibles y el apache me seguía dando el mismo error. Cuando mi lógica ha dejado de funcionar me he puesto a buscar por internet y ahi me he encontrado que el problema era por culpa del SELinux.

¿Que es SELinux?

Security-Enhanced Linux (o SELinux) es una arquitectura de seguridad integrada en el kernel 2.6.x usando los módulos de seguridad linux (o linux security modules, LSM). Este es un proyecto de la Agencia de Seguridad Nacional (NSA) de los Estados Unidos y de la comunidad SELinux. La integración de SELinux en Red Hat Enterprise Linux fue un esfuerzo conjunto entre al NSA y Red Hat.

Todo apunta que es esto, otro sistema de seguridad que es el que niega el acceso del apache al nuevo DocumentRoot. Entonces me pongo a buscar como darle acceso.

Por ejemplo: Si queremos darle permisos al apache para que pueda acceder a una carpeta TU_CARPETA, primero veremos que no tiene los permisos para que pueda ser accedida por el apache con la siguiente orden:

    >> ls -Z TU_CARPETA
    drwxr-xr-x  root root system_u:object_r:home_root_t  TU_CARPETA

    Como no los tiene (no le sale httpd_sys_content_t) entonces le daremos los permisos con la siguiente orden:

    >> chcon -R -h -t httpd_sys_content_t TU_CARPETA

    Por último comprobaremos que ya tiene los permisos:

    >> ls -Z TU_CARPETA
    drwxrwxrwx  root root root:object_r:httpd_sys_content_t TU_CARPETA

    En teoría esto tendría que haber funcionado pero me encontre con otro problema, esta carpeta era una carpeta montada por cifs y no me dejaba darle estos permisos. Por esto tube que pasar al plan B: Deshabilitar el SELinux.

    Para saber si lo tenemos activado tendremos que ejecutar la siguiente orden (si esta off, significa que no esta activado lo que lo deshabilita, lo que quiere decir que esta activado):

    >> getsebool -a | grep httpd
    ...
    httpd_disable_trans --> off
    ...

    Activamos la opción de deshabilitar y comprobamos que se ha activado:

    >> setsebool -P httpd_disable_trans 1
    >> getsebool -a | grep httpd
    ...
    httpd_disable_trans --> on
    ...

    Por último reiniciamos el apache para que tenga efecto:

    >> sudo /etc/init.d/httpd restart
    Parando httpd:                                             [  OK  ]
    Iniciando httpd:                                           [  OK  ]

    Entonces ha funcionado. Asi que si os encontráis con este problema ya sabéis como solucionarlo.

    temas: 

    Conceptronic Loungen LooK flexcam

    Conceptronic Loungen LooK flexcam

    Mi prima nos regaló una webcam que no utilizaba, en concreto el modelo Conceptronic Lounge'n LooK flexcam. Instalarla en Ubuntu no ha sido tarea fácil, asi que aquí os pongo como podeis hacerlo vosotros. (Ojo!! la he instalado en un kernel 2.6.27-6-generic, no se si funcionara en los demás).

    Vamos ha instalar los drivers Microdia. Para ello nos bajaremos los fuentes y los compilaremos (Necesitaremos instalar unas dependencias para poder compilarlo: kernel-package linux-headers-`uname -r` build-essential). Las fuentes están en un repositorio Git (un tipo diferente de cvs o subversión) y necesitaremos instalar el cliente de git (git-core) para bajarlo. Tendremos que ejecutar las siguientes ordenes:

    >> sudo apt-get install git-core
    >> git clone http://repo.or.cz/r/microdia.git
    >> sudo apt-get install kernel-package linux-headers-`uname -r` build-essential
    >> cd microdia
    >> make
    >> sudo insmod ./microdia.ko

    Si todo ha funcionado bien tendremos que ver una salida parecida al ejecutar la siguiente orden:

    >> dmesg
    ...
    [ 4078.660030] microdia: Microdia USB 2.0 webcam driver loaded
    [ 4078.661417] microdia: Microdia USB 2.0 Webcam - 0C45:627B plugged-in.
    [ 4078.664689] microdia: Microdia USB 2.0 Webcam is now controlling video device /dev/video1
    [ 4078.665054] usbcore: registered new interface driver usb_microdia_driver
    [ 4078.665217] microdia: v2008.10 : Microdia USB 2.0 Webcam Driver

    Ahora probaremos la webcam, por ejemplo con mplayer. Tendréis que mirar que dispositivo es vuestra cámara (en mi caso tengo una tarjeta de televisión que es el /dev/video0 y mi webcam es el /dev/video1). Para ver que dispositivos tenéis ejecutar la siguiente orden:

    >> ls /dev/video*
    /dev/video0  /dev/video1

    Una vez sabemos que dispositivo es ejecutamos la siguiente orden (para mi caso la del /dev/video1):

    >> mplayer tv:// -tv driver=v4l2:width=640:height=480:fps=25:device=/dev/video1 -vo x11

    Si todo funciona bien lo instalamos:

    >> strip -g microdia.ko
    >> sudo cp microdia.ko /lib/modules/`uname -r`/kernel/drivers/media/video/usbvideo/
    >> sudo depmod -a

    Ya tenemos la webcam funcionando. Como siempre en mi wiki tendréis la forma correcta de instalarla si hay que hacerlo de otra forma.

    temas: 

    Actualizando a una Beta de ubuntu

    Ubuntu beta 8.10

    La versión de ubuntu Hardy Heron 8.04 no es que me gustara mucho. Pulse audio fue metido a medio hacer, el bluetooth me dejó de funcionar y varias cosas hacían que no me sintiera muy comodo con él.

    Hoy con la versión Intrepid Ibex 8.10 casi terminada (hoy faltan 26 días) y como para estas cosas soy un poco ansioso, ante mi situación y como falta menos de un mes, he decidido actualizarme a la beta de esta versión.

    Pero no sabía como hacerlo, así que he buscado por internet y he encontrado una manera de hacerlo. Abriremos una consola y ejecutamos la siguiente orden:

    >> update-manager -d

    Se abrirá la ventana de las actualizaciones y nos saldrá la posibilidad de actualizar a la nueva versión como si ya fuera final, solo hay que darle al botón y seguir las instrucciones.

    temas: 

    Montar automaticamente carpetas a petición

    Carpetas de nautilus

    Para hacer el automontado de carpetas samba usaremos el programa autofs. Para instalarlo ejecutaremos la siguiente orden:

    >> sudo aptitude install autofs

    Asegurarse de que se encuentran instalados los paquetes samba y smbfs

    >> sudo apt-get install samba smbfs

    Una vez instalado vamos a configurarlo. En autofs tienes que indicar una carpeta (por ejemplo /auto) en la que cuando se acceda a una subcarpeta de esta (por ejemplo /auto/compartido) buscará esta carpeta en el fichero de configuración y si no existe en el fichero dirá que no existe (aunque físicamente exista). Por esta razón es recomendable usar una carpeta solo para esto y no podremos usar /media aunque podremos hacer un apaño con unos enlaces.

    Primero iremos al fichero /etc/auto.master y añadiremos la siguiente línea (indicamos la carpeta que usara autofs para el fichero que modificaremos mas adelante):

    /auto /etc/auto.misc --timeout 3

    Vamos al fichero /etc/auto.misc y añadimos una línea por cada carpeta a la que le demos soporte. Por ejemplo, montamos la carpeta compartido del servidor 192.168.25.200:

    compartido -fstype=cifs,username=USUARIO,password=CLAVE,iocharset=utf8,uid=USUARIO_PC,gid=USUARIO_PC,file_mode=0777,dir_mode=0777  ://192.168.25.200/compartido

    Reiniciamos el programa para que coja la nueva configuración:

    >> sudo /etc/init.d/autofs restart

    Ya lo tenemos configurado y cuando accedamos a esta carpeta si aun no está montada se montará. Para ver que funciona ejecutaremos la siguiente orden y veremos que nos muestra los ficheros de la carpeta compartida:

    >> ls /auto/compartido

    Si queremos acceder a esta carpeta desde otra ruta (Por ejemplo /media) crearemos unos enlaces simbólicos:

    >> cd /media/ >> sudo ln -s /auto/compartido compartido

    Comprobaremos que el enlace funciona ejecutando la siguiente orden y comprobando que nos lista los ficheros de la carpeta compartida:

    >> ls /media/compartido

    Como siempre, podréis verlo actualizado siempre en mi wiki: Autofs.

    temas: 

    Abrir puertos al exterior en Virtualbox

    Virtualbox

      Puede darse el caso de que nos encontremos con la necesidad de tener que acceder a un puerto de nuestra máquina virtual desde el exterior (Por ejemplo, si queremos acceder por ssh a la máquina virtual el puerto 22 tendrá que ser accesible desde el exterior). Para configurar esto no hay de momento forma de hacerlo con la interfaz gráfica de Virtualbox, pero se puede hacer por línea de comandos. Para abrir un puerto al exterior de una máquina virtual (Por ejemplo de nombre windows) tendremos que crear una regla (Por ejemplo, de nombre apache) para abrir un puerto de la máquina virtual (Por ejemplo el 80) para un protocolo (Por ejemplo, TCP) en un puerto de la máquina donde esta instalado el virtualbox (Por ejemplo, el 20080). De esta manera cuando accedamos al puerto que le indiquemos de la máquina que tiene instalado el VirtualBox, estaremos accediendo al puerto indicado de la máquina virtual.

    Para hacer esto tendremos que apagar la máquina virtual (apagarlo, no pausarlo). Después ejecutaremos las siguientes ordenes:

    >> VBoxManage setextradata "windows" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/apache/Protocol" TCP
    >> VBoxManage setextradata "windows" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/apache/GuestPort" 80
    >> VBoxManage setextradata "windows" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/apache/HostPort" 20080

    Para comprobar que se ha introducido bien podemos listar todas propiedades de la maquina virtual (Por ejemplo para la máquina de nombre windows):

    >> VBoxManage getextradata windows enumerate
      VirtualBox Command Line Management Interface Version 1.5.6_OSE
      (C) 2005-2008 innotek GmbH
      All rights reserved.
     
      Key: GUI/LastWindowPostion, Value: 425,339,644,531,max
      Key: GUI/Fullscreen, Value: off
      Key: GUI/Seamless, Value: off
      Key: GUI/AutoresizeGuest, Value: on
      Key: GUI/LastCloseAction, Value: save
      Key: VBoxInternal/Devices/pcnet/0/LUN#0/Config/apache/Protocol, Value: TCP
      Key: VBoxInternal/Devices/pcnet/0/LUN#0/Config/apache/GuestPort, Value: 80
      Key: VBoxInternal/Devices/pcnet/0/LUN#0/Config/apache/HostPort, Value: 20080

    Como podemos observar aparecen las propiedades que hemos introducido. Ahora ya podremos acceder a la máquina virtual a través de nuestra ip y el puerto público.

    Como siempre, la última versión de como hacer esto estará actualizada en mi wiki.

    temas: 

    Sustituyendo Nautilus por PCMan

    PCMan

    Siempre que he usado GNOME me ha parecido que la rapidez no era lo suyo y no me explicaba porque no intentaban mejorarlo. Un día me puse a probar otro gestor de archivos en vez de nautilus (que es el gestor de archivos por defecto de gnome). Este nuevo gestor se llama PCMan y tengo que decir que me sorprendido muy gratamente. Es mucho más rápido que nautilus aunque no tiene todas las caracterÍsticas de nautilus (preview de sonido, video, samba, ...) solo le hecho en falta la posibilidad de acceder a carpetas compartidas. PCMan tiene soporte a preview de imagenes, pestañas, marcadores,

    Por lo tanto me voy a quedar con PCMan como mi navegador de archivos por defecto. Para que Gnome lo use por defecto (en vez de a nautilus) vamos a tener que hacer los siguientes cambios.

    Primero haremos las copias de seguridad de los ficheros que vamos a modificar:

    >> sudo cp /usr/share/applications/nautilus.desktop /usr/share/applications/nautilus.desktop.backup
    >> sudo cp /usr/share/applications/nautilus-folder-handler.desktop /usr/share/applications/nautilus-folder-handler.desktop.backup
    >> sudo cp /usr/share/gnome/default.session /usr/share/gnome/default.session.backup
    >> sudo cp /usr/bin/nautilus /usr/bin/nautilus.backup

    Una vez hechas las copias de seguridad tenemos que editar los archivos /usr/share/applications/nautilus-folder-handler.desktop y /usr/share/applications/nautilus.desktop y sustituir todas las apariciones de nautilus por pcmanfm quitando los parámetros que se le pase (porque PCMan no admite los parámetros de nautilus). Por ejemplo:

    Exec=nautilus --no-desktop --browser %U

    Quedaría así:

    Exec=pcmanfm

    Ahora iremos al fichero /usr/share/gnome/default.session y lo editaremos. Tenemos que eliminar las líneas que corresponden con la entrada de nautilus, luego renumerar los números para que queden consecutivos y por último cambiar el número de entradas que quedan al final.

    Por ejemplo, para el siguiente fichero:

    [Default]
    num_clients=4
    0,id=default0
    0,Priority=10
    0,RestartCommand=gnome-wm --sm-client-id default0
    1,id=default1
    1,Priority=40
    1,RestartCommand=gnome-panel --sm-client-id default1
    2,id=default2
    2,Priority=40
    2,RestartCommand=nautilus --no-default-window --sm-client-id default2
    3,id=default3
    3,Priority=60
    3,RestartCommand=gnome-cups-icon --sm-client-id default3

    Lo editaremos para que se quede de la siguiente manera:

    [Default]
    num_clients=3
    0,id=default0
    0,Priority=10
    0,RestartCommand=gnome-wm --sm-client-id default0
    1,id=default1
    1,Priority=40
    1,RestartCommand=gnome-panel --sm-client-id default1
    2,id=default3
    2,Priority=60
    2,RestartCommand=gnome-cups-icon --sm-client-id default3

    Por último cambiaremos el acceso directo de nautilus por el de PCMan:

    >> sudo rm /usr/bin/nautilus
    >> sudo ln -s /usr/bin/pcmanfm /usr/bin/nautilus

    Solo qeuda reiniciar las X. Y ya tenemos a PCMan como el navegador de archivos por defecto de Gnome.

    temas: 

    Digital Camcorder DV-2000 Euroconsumers en Ubuntu

    Digital Camcorder DV-2000 Euroconsumers

    Esta cámara me la regalaron la OCU (Organización de Consumidores y Usuarios). Es una cámara de vídeo y de fotos con la forma en la que la podéis ver en la imagen. Sus características son las siguientes:

    • Sensor de imagen: 300K CMOS
    • Resolución de imagen:
    •  - Alta 300K píxeles (640x480 px)
    •  - Baja 100K píxeles (352x288 px)
    • Vídeo clip: 320x240 px
    • Zoom digital: 4X
    • Pantalla: 1.5’’ TFT color LCD
    • Sin memoria interna (Acepta tarjetas SD)

    (Venía con un cable USB-miniUSB, cable de vídeo compuesto cdrom con los drivers y una cinta de mano)

    Al conectarla al ordenador en modo Cámara PC no me funcionaba nada. por lo que empecé a buscar datos de la cámara:

       >> lsusb
         ...
         Bus 002 Device 005: ID 04fc:5330 Sunplus Technology Co., Ltd
         ...

    Compruebo si tengo el driver gspca :

       >> lsmod | grep spca
        ...
        gspca 643920 0
        videodev 29440 2 gspca,saa7134
        usbcore 146028 7 gspca,rt2570,hci_usb,usbhid,ohci_hcd,ehci_hcd
        ...

    Según encontré en otras páginas web el driver gspca que viene con ubuntu no funciona con esta cámara. Hay que bajar este otro que funciona correctamente para nuestra cámara de ahi: http://mxhaard.free.fr/spca5xx.html . Como podemos ver en la tabla, el id 04fc:5330 (que nos devolvió el lsusb y que identifica la cámara) esta soportado por este driver. Procedemos a bajarlo dandole al botón download que aparece en los botones de arriba de la web. Luego nos bajamos la versión para kernels superiores al 2.6.11:

       NEWS support Vimicro vc0323, upto 260 webcams ,Happy Christmas :).
       until gspca v4l2 is finished, used:
       gspcav1 "Generic Softwares Package for Camera Adapters" version 1.00.20 date: 24/12/2007
       for kernel up from 2.6.11 : gspcav1-20071224.tar.gz
       for kernel below 2.6.11: spca5xx version 0.60.00-1:
       spca5xx-v4l1goodbye.tar.gz

    Una vez lo hemos bajado lo descomprimimos, compilamos, instalamos y lo cargamos:

       >> gzip -d gspcav1-20071224.tar.gz
       >> tar -xvf gspcav1-20071224.tar
       >> cd gspcav1-20071224/
       >> make clean
       >> make
       >> sudo make install
       >> sudo modprobe -r gspca
       >> sudo modprobe gspca

    Ahora vamos a probar la webcam. Para ello necesitaremos un programa que use la webcam, por ejemplo gqcam. Miramos que dispositivo representa la webcam (Cuando está desconectada no aparece el /dev/video1 y cuando la conectamos aparece /dev/video1). Así que instalamos el programa y lo ejecutamos para que muestre el vídeo que captura la cámara:

       >> sudo aptitude install gqcam
       >> gqcam -v /dev/video1

    Ya esta funcionando (aunque para mi gusto un poco oscura la imagen, pero seguro que se podrá modificar esto). Recordaros que la última versión de hacer esto estará aquí en mi wikipedia

    Silenciar el altavoz del PC en Ubuntu

    Speaker

    Todos días me pasan cosas como estas:

    • Darle al tabulador en la línea de comandos para autocompletar => bip
    • Darle al retroceso cuando o hay nada escrito en la consola => bip
    • Nos movemos con el cursos en la línea de comandos cuando no hay nada en esa dirección => bip
    • Escribimos un comando mal en vi => bip
    • ... => bip

    Cuando estoy solo, no es que te fijes mucho. Pero cuando estas en un área de trabajo con mas personas todo en silencio, puede ser mas sonoro de lo que en realidad es. Pero no estamos condenados al infierno sonoro del 'bip' del speaker. Se puede silenciar en Ubuntu.

    Para silenciarlo temporalmente tendremos que ejecutar la siguiente orden:

    >> sudo modprobe -r pcspkr

    De esta manera dejara de sonar hasta que reiniciemos o hasta que cargemos el módulo pcspkr. Si queremos que al arrancar el ordenador no suene, tendremos que añadir la siguiente línea al archivo /etc/modprobe.d/blacklist :

    blacklist pcspkr

    Si lo queremos volver a oir, ejecutaremos la siguiente línea:

    >> sudo modprobe pcspkr

     O si lo hemos inhabilitado para que no arranque con el ordenador, quitamos la linea que antes hemos añadido en el fichero /etc/modprobe.d/blacklist

    temas: