sábado, 14 de mayo de 2016

public_html Habilitar directorio de usuarios para pagina web en CentOS 6 con SELinux

 https://www.barrahome.org/2016/02/10/habilitar-directorio-de-usuarios-para-pagina-web-en-centos-6-con-selinux/

Habilitar directorio de usuarios para pagina web en CentOS 6 con SELinux

By | 10 febrero, 2016
Este articulo va dedicado a mi estimado amigo Santiago Carnago que sufre muchas veces con Linux, en nuestra oficina utilizamos Xen Server, luego de una instalación de Centos 6 mínimo debemos efectuar las siguientes configuraciones:
  • Red
  • Actualizar
  • Instalar EPEL y WebTatic
  • Instalar LAMP
  • Generar esqueleto para futuros usuarios
  • Habilitar directorio de usuarios

La Red:

Apenas finalizamos la instalación de CentOS 6 minimal deberemos configurar la red de forma manual, por lo general esto se hace de la siguiente forma:
vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
 TYPE=Ethernet
 ONBOOT=yes
 BOOTPROTO=none
 IPADDR=192.168.1.68
 PREFIX=24
 GATEWAY=192.168.1.254
 IPV4_FAILURE_FATAL=yes
 NAME="System eth0"
Si vemos contenido en el archivo entonces simplemente agregamos las lineas faltantes, por lo general los valores mas importantes son IPADDR, PREFIX, GATEWAY y cambiar el valor de BOOTPROTO asi como el de ONBOOT y finalizamos la configuración con:
service network restart

Actualizar:

Ejecutamos el siguiente comando:
yum update -y
Y pasamos a la instalacion de EPEL y Webtatic la cual es bastante rapida, ejecutamos el siguiente comando:
yum install -y epel-release
Y luego instalamos Webtatic
rpm -Uvh https://mirror.webtatic.com/yum/el6/latest.rpm
Ahora vamos a hacer algo sucio, seguramente alguien podra corregirme aca, pero CentOS 6 trae MySQL 5.1 y quiero utilizar la version 5.5 de Webtatic, por ende antes remuevo el paquete viejo de mysql-libs para instalar el nuevo, esto me remueve varios paquetes los cuales arreglo a mano con los siguientes comandos (se de –nodeps).
yum remove -y mysql-libs
yum install cronie cronie-anacron crontabs postfix --exclude=mysql-libs
Esto me va a instalar la version 5.5 de mysql-libs y ahora estoy listo para ejecutar lo siguiente:
yum install php56w* mysql55w* --exclude=php56w-mysqlnd
Luego de finalizar esto agregaremos algunas características al esqueleto de usuarios:
mkdir /etc/skel/public_html
echo "Hello World" > /etc/skel/public_html/index.php
echo "<?php phpinfo(); ?>" > /etc/skel/public_html/test.php
Ahora habilitamos el UserDir de apache (me instale nano, odio vi):
nano /etc/httpd/conf/httpd.conf
Dentro buscamos (control +w UserDir disabled)
<IfModule mod_userdir.c>
    #
    # UserDir is disabled by default since it can confirm the presence
    # of a username on the system (depending on home directory
    # permissions).
    #
    #UserDir disabled

    #
    # To enable requests to /~user/ to serve the user's public_html
    # directory, remove the "UserDir disabled" line above, and uncomment
    # the following line instead:
    #
    UserDir public_html

</IfModule>

#
# Control access to UserDir directories.  The following is an example
# for a site where these directories are restricted to read-only.
#
<Directory /home/*/public_html>
    AllowOverride FileInfo AuthConfig Limit
    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
    <Limit GET POST OPTIONS>
        Order allow,deny
        Allow from all
    </Limit>
    <LimitExcept GET POST OPTIONS>
        Order deny,allow
        Deny from all
    </LimitExcept>
</Directory>
Y lo comentamos como ven en este ejemplo, le sacamos el comentario a la variable UserDir public_html y removemos el comentario de la directiva Directory que se encuentra un poco mas abajo. Y ahora reiniciamos apache y lo dejamos activo al inicio:
service httpd restart
chkconfig httpd on
Creamos nuestro usuario el cual contiene ya el esqueleto nuevo:
[root@localhost ~]# adduser alberto
[root@localhost ~]# passwd alberto
Cambiando la contraseña del usuario alberto.
Nueva contraseña:
Vuelva a escribir la nueva contraseña:
passwd: todos los tokens de autenticación se actualizaron exitosamente.
[root@localhost ~]# ls -lah /home/alberto/
total 24K
drwx------. 3 alberto alberto 4,0K ago 27 09:50 .
drwxr-xr-x. 4 root    root    4,0K ago 27 09:50 ..
-rw-r--r--. 1 alberto alberto   18 jul 23 13:55 .bash_logout
-rw-r--r--. 1 alberto alberto  176 jul 23 13:55 .bash_profile
-rw-r--r--. 1 alberto alberto  124 jul 23 13:55 .bashrc
drwxr-xr-x. 2 alberto alberto 4,0K ago 27 09:16 public_html
[root@localhost ~]#
Y establecemos los permisos del directorio public_html junto con los permisos generales de SELinux:
chmod 0711 /home/alberto/
chmod 0755 /home/alberto/public_html
setsebool -P httpd_enable_homedirs true
setsebool -P httpd_read_user_content true
chcon -R -t httpd_sys_content_t /home/alberto/public_html
chcon -t httpd_sys_content_t /home/alberto
chcon -t httpd_sys_content_t /home
Para finalizar, accedemos a http://192.168.1.68/~alberto/index.php y deberemos ver nuestro nuevo index y si ingresan a http://192.168.1.68/~alberto/test.php veran los detalles de php.

No hay comentarios:

Publicar un comentario