Archivo

Archivo para la categoría ‘Linux’

SSHcomoRoot

Miércoles, 26 de Octubre de 2016

Ejecución de comandos remotos como root mediante SSH

En algunas situaciones es necesario ejecutar de forma remota comandos como root por SSH. Aunque es posible activar el acceso como root por SSH de forma remota, no es recomendable hacerlo por motivos de seguridad. Para mejorar esta seguridad podemos hacer que el acceso como root solo esté permitido autenticándose con clave pública (no mediante password).

Sin embargo, todavía podemos mejorar un poco más la seguridad, si restringimos los comandos que se pueden ejecutar de forma remota. Para ello, SSHD dispone de la opción forced-commands-only. Con esta opción activa, la autenticación solo se puede realizar mediante clave pública y además, para cada pública se asigna el único comando que se puede ejecutar con ella. Tendremos que crear tantas claves públicas como comandos diferentes queramos ejecutar, lo que puede ser un problema si el número de comandos es elevado.

Para utilizar esta opción procederemos de la siguiente forma:

  • En los clientes crearemos tantos pares de claves públicas/privadas como comandos diferentes vayamos a ejecutar. Lo podemos hacer con le comando ssh-keygen -t rsa -b 2048 (el algoritmo a utilizar en las claves y al longitud de las mismas las fijaremos según nuestras políticas). Cada una de estas claves deberá guardarse en un fichero diferente.
  • En el servidor, en la configuración de SSH (/etc/ssh/sshd_config) configuraremos el parámetro PermitRootLogin con el valor forced-commands-only y reiniciaremos el servicio sshd.
PermitRootLogin forced-commands-only
  • En el servidor, en el fichero de autorización de claves (/root/.ssh/authorized_keys) añadiremos una línea por comando con el siguiente formato:
from="%IP_CLIENTE%",command="%COMANDO%" ssh-rsa %CLAVE_PUBLICA%

Con esta línea, le decimos al servidor, que cuando un cliente se conecte desde %IP_CLIENTE% identificándose con el par de claves cuya clave publica es %CLAVE_PUBLICA% se ejecuta el comando %COMANDO% como root y se finalice la conexión.

  • Para ejecutar el comando desde el cliente escribiremos simplemente: ssh root@servidor -i %CLAVE_PRIVADA%. Mediante el parámetro -i hemos de especificar el fichero que contiene la clave privada correspondiente al fichero que queremos ejecutar.

Linux ,

Modulo OCI8 para PHP 5.5 Software Collections en Red Hat 7

Lunes, 22 de Febrero de 2016

En el servidor web que administro, ha surgido la necesidad de actualizar a PHP 5.5 para dar soporte a las nuevas versiones de productos como phpMyAdmin, Piwik y similares.

Para facilitar las tareas de mantenimiento del servidor utilizamos la versión de PHP distribuida con el sistema operativo Red Hat. En este caso, hemos decidido aprovechar esta actualización para también actualizar el SO a Red Hat 7 Enterprise Linux (en adelante RH7).

Sin embargo, la versión de PHP que viene con RH7 es la 5.4 y no nos sirve. Para resolver este problema Red Hat proporciona las Software Collections que incluyen la versión 5.5 y 5.6 de PHP. De momento vamos a optar por actualizar a la versión 5.5, ya que actualmente tenemos PHP 5.3 y el cambio a la 5.5 va a ser más sencillo que actualizar directamente a la 5.6 (más adelante ya abordaremos la actualización a PHP 5.6).

Aunque con las Software Collections se incluyen muchos módulos de PHP, no están todos los que utilizamos, en este caso concreto no está el modulo OCI8 para acceder a BBDD Oracle.

Por este motivo vamos a generarnos un nuevo paquete RPM compatible con el PHP 5.5 de las Software Collections que nos añada el modulo OCI8.

Este paquete lo vamos a generar en un servidor con RH7 que tenga la herramienta rpmbuild instalada.

En primer lugar hemos de instalarnos el Instant Client de Oracle para Linux. Necesitamos los paquetes RPM *-devel y *-basic de este cliente. He utilizado la versión 12 de Oracle y estos paquetes se pueden descargar desde la web de Oracle.

Ahora buscamos un RPM source del modulo OCI8 para PHP 5.5. Oracle nos proporciona uno para Red Hat 6 en la dirección: https://oss.oracle.com/projects/php/files/EL6/. Nos lo descargamos y lo descomprimimos en /root/rpmbuild/SOURCES con el siguiente comando:

# rpm2cpio php55-oci8-5.5.10-2.el6.src.rpm | cpio -idmv

Este paquete utiliza la versión 2.0.8 del OCI8 para PHP y existe la 2.0.10. Descargamos esta última versión y ubicamos el fichero en /root/rpmbuild/SOURCES.

Ahora hemos de adaptar el fichero SPEC (php55oci8.spec)  para generar los RPMs que necesitamos.  Modificamos lo siguiente:

1,2d0
< %{?scl:%scl_package php-oci8}
<
4c2
< # Builds the latest DTrace disabled PHP OCI8 extension on top of PHP 5.5
---
> # Builds the latest DTrace enabled PHP OCI8 extension on top of PHP 5.5
7,8c5,6
< %global apiver %{php55_php_core_api}
< %global zendver %{php55_php_zend_api}
---
> %global apiver 20121113
> %global zendver 20121212
12c10
< %define oci8peclver 2.0.10
---
> %define oci8peclver 2.0.8
24c22
< Name: %{?scl_prefix}php-oci8
---
> Name: php55-oci8
26,27c24,25
< Version: 5.5.21
< Release: 1%{?dist}
---
> Version: 5.5.10
> Release: 2%{?dist}
44a43
> Obsoletes: php53-oci8-11gR1 php53-oci8-12cR1
48c47
< Requires: %{?scl_prefix}php-common >= %{version}, oracle-instantclient12.1-basic >= %{oci12cR1ver}
---
> Requires: php55-common >= %{version}, oracle-instantclient12.1-basic >= %{oci12cR1ver}
50,53d48
<
< Requires: %{?scl_prefix}php(zend-abi) = %{php55_php_zend_api}
< Requires: %{?scl_prefix}php(api) = %{php55_php_core_api}
<
55c50,51
< BuildRequires: %{?scl_prefix}php-devel >= %{version}
---
> BuildRequires: dtrace-utils >= 0.4.0-5
> BuildRequires: php55-devel >= %{version}
57c53
< Provides: %{?scl_prefix}php-oci
---
> Provides: php55_database, php55-oci, mod_php = %{version}-%{phprelease}
68d63
< %setup -q -c -T -n %{pkg_name}-%{version}
71a67,82
> # Safety check for API version change.
> vapi=`phpize -v | sed -n '/PHP Api Version:/{s/.* //;p}'`
> if test "x${vapi}" != "x%{apiver}"; then
> : Error: Upstream API version is now ${vapi}, expecting %{apiver}.
> : Update the apiver macro and rebuild.
> exit 1
> fi
>
> # Safety check for Zend API version change.
> vzend=`phpize -v | sed -n '/Zend Module Api No:/{s/^[^0-9]*//;p;}'`
> if test "x${vzend}" != "x%{zendver}"; then
> : Error: Upstream Zend module ABI version is now ${vzend}, expecting %{zendver}.
> : Update the zendver macro and rebuild.
> exit 1
> fi
>
74c85
< %{_bindir}/phpize
---
> phpize
80c91
< PHP_DTRACE=no
---
> PHP_DTRACE=yes
86c97
< %configure --with-php-config=%{_bindir}/php-config --with-oci8=shared,instantclient,/usr/lib/oracle/$VER/client64/lib
---
> %configure --with-oci8=shared,instantclient,/usr/lib/oracle/$VER/client64/lib
164,168d174
< * Fri Feb 19 2016 David Fernandez <david.fernandez@ehu.eus> 5.5.21
< - Use Red Hat Enterprise Linux 7
< - Use PHP 5.5.21
< - Use OCI8 2.0.10
<
209c215
< * Sun Nov 1 2009 Christopher Jones <christopher.jones@oracle.com> 5.2.11
---
> * Mon Nov 1 2009 Christopher Jones <christopher.jones@oracle.com> 5.2.11
215c221
< * Tue Apr 28 2009 Christopher Jones <christopher.jones@oracle.com> 5.2.9
---
> * Wed Apr 28 2009 Christopher Jones <christopher.jones@oracle.com> 5.2.9
227,228c233,235
< * Fri Aug 8 2008 Srinivas Maturi <srinivas.maturi@oracle.com> 5.1.6-20.el5_2.1
< - Update BuildRequires for oracle-instantclient-devel and Conflicts for oracle-instantclient-basic
---
> * Tue Aug 08 2008 Srinivas Maturi <srinivas.maturi@oracle.com> 5.1.6-20.el5_2.1
> - Update BuildRequires for oracle-instantclient-devel and Conflicts for
> oracle-instantclient-basic
230c237
< * Tue Aug 5 2008 Srinivas Maturi <srinivas.maturi@oracle.com> 5.1.6-20.el5_2.1
---
> * Tue Aug 05 2008 Srinivas Maturi <srinivas.maturi@oracle.com> 5.1.6-20.el5_2.1
233c240
< * Mon Jul 21 2008 Srinivas Maturi <srinivas.maturi@oracle.com> 5.1.6-20.el5_2.1
---
> * Fri Jul 21 2008 Srinivas Maturi <srinivas.maturi@oracle.com> 5.1.6-20.el5_2.1
237c244,245
< - Update rpm name, add libaio as runtime dependency, remove code to run tests at build time
---
> - Update rpm name, add libaio as runtime dependency, remove code to run
> tests at build time

Una vez que ya tenemos el fichero spec, generamos los ficheros RPMs con el siguiente comando:

# rpmbuild -ba php55oci8.spec --define "scl php55"

Si todo ha ido bien, los RPMs estarán en /root/rpmbuild/RPMS y ya los podremos instalar con YUM.

Linux , , , , , ,

Yum Shell

Lunes, 10 de Noviembre de 2014

En algunos casos nos puede surgir la necesidad de sustituir un paquete por otro que proporcione la misma funcionalidad. Para complicar el asunto, se da la circunstancia de que no es posible tener instalados los dos paquetes simultáneamente (porque generan un conflicto al instalar el segundo de ellos) y además no es práctico desinstalar uno para instalar el otro, ya que es un paquete del que dependen muchos otros y la desintalación de ese paquete implicaría la desintalación de muchos otros. Este es el caso que se da al intentar sustituir el paquete rsyslog por el nuevo rsyslog7 en un Red Hat Enterprise Linux 6.

Para resolver esta situación podemos utilizar el Yum Shell, con el que podremos crear una transacción básica Yum que nos permitirá sustituir el paquete deseado sin modificar los otros.

La secuencia de comandos que utilizaríamos para sustituir el paquete rsyslog por rsyslog7 con el yum shell sería la siguiente:

# yum shell
> remove rsyslog
> install rsyslog
> run
> exit
# service rsyslog start
# chkconfig rsyslog on

Linux , ,

formatolsrh6

Jueves, 4 de Abril de 2013

Cambios en el formato largo del comando ls en Red Hat 6

Al revisar los contenidos de un directorio en un servidor con Red Hat 6, me ha llamado la atención que en algunos ficheros o directorios, a continuación de los permisos, en algunos de ellos aparecía un punto (carácter ‘.’).

# ls -l /etc/sysconfig

-rw-r–r–  1 root root 2440 Dec  6 17:11 raid-check
-rw-r–r–. 1 root root  551 Mar 24  2010 readahead
-rw-r–r–  1 root root  659 Mar  7 16:37 readonly-root
drwxr-xr-x. 4 root root 4096 Feb 26 08:28 rhn
-rw-r—–  1 root root   41 Dec  2  2011 rngd
-rw-r–r–. 1 root root  196 Apr  4 10:08 rsyslog

En anteriores versiones del SO, no había visto este carácter. Revisando documentación por internet he visto que después de los permisos existe un carácter que específica métodos alternativos de acceso. Cuando este carácter es imprimible entonces está definido alguno de estos métodos.  En el caso de que este carácter sea ‘.’ indica que el fichero tiene establecido un contexto de seguridad SELinux. Otro carácter que suele aparecer es ‘+’ para indicar que el fichero tiene otro método de acceso como una ACL,…

http://www.gnu.org/software/coreutils/manual/coreutils.html#ls-invocation

Linux ,

CalcularSemanaMes

Martes, 17 de Julio de 2012

Calcular el número de semana dentro del mes en Bash

Para calcular el número de semana dentro de un mes (por ejemplo para saber si un día es el tercer martes de un determinado mes) podemos usar el siguiente comando:

# cal -m $MES $YEAR | sed -n "3,$ p" | sed -n "/$DAY/{=;q;}"

Este comando calcula partiendo de la base de que el primer día de la semana es lunes. Para calcular partiendo del domingo como primer día de la semana, quitaríamos el flag “-m” del comando cal o añadiríamos el flag “-s”.

Linux ,

LDAPSearchWrapLines

Viernes, 28 de Octubre de 2011

Corte de líneas largas en LDAPSearch

Si en el LDIF que se devuelve como resultado de una consulta al LDAP con el comando ldapsearch hay líneas más largas de 76 caracteres, estas lineas son cortadas y los caracteres sobrantes se escriben en la línea siguiente (esta línea comienza por un espacio en blanco):

dn: cn=UN_NOMBRE_LARGO_MUY_LARGO,cn=portal.080827.121025.144000000,cn=groups,d
 c=username,dc=local

Para volver a concatenar estas líneas podemos usar el siguiente script escrito en Perl:

#!/usr/bin/perl

$cnt=0;
while ($line = <>) {
 chomp($line);
 if ( $line =~ /^authpassword/ ) {
 next;
 } elsif ( $line =~ /^\S+/) { ### this line is a "normal" or starting line
 $results[$cnt++] = $line;
 } elsif ( $line =~ /^$/ ) {  ### this line is blank
 $results[$cnt++] = "";
 } elsif ( $line =~ /^ \S+/ ) {  ### this line is a continuation
 $results[$cnt-1] = $results[$cnt-1] . substr($line,1);
 }
}

for $i (0 .. $cnt) {
 print "$results[$i]\n";
}

Este script se ha obtenido de la dirección: http://www.dannorris.com/2008/09/08/concatenating-lines-in-ldapsearch-results/

Linux , ,

RPMBinario

Lunes, 23 de Mayo de 2011

Creación de RPMs binarios

El propósito de este documento es detallar los pasos que se han seguido para crearnos nuestro primer RPM. Como es el primero seguramente el proceso es notoriamente mejorable, pero por algo hay que empezar.

Necesitamos instalarlos la herramienta rpmbuild

# yum install rpm-build

Nos creamos un directorio donde crearemos los ficheros:

# mkdir /root/misrpms

Dentro de este directorio nos cremos otros: SPECS, BUILD, RPMS, SRPMS, SOURCES

# cd /root/misrpms
# mkdir SPECS BUILD RPMS SRPMS SOURCES

Nos cremos un fichero ~/.rpmmacros con el siguiente contenido:

%_topdir /root/misrpms
%_builddir %{_topdir}/BUILD
%_rpmdir %{_topdir}/RPMS
%_sourcedir %{_topdir}/SOURCES
%_specdir %{_topdir}/SPECS
%_srcrpmdir %{_topdir}/SRPMS

Ahora nos creamos el fichero spec del RPM a construir que contiene los datos necesarios para construir el RPM ~/misrpms/SPECS/aspell-eu.spec:

Name:           aspell-eu
Version:        20081029
Release:        1%{?dist}.el5
Summary:        Basque dictionary for aspell
Group:          Applications/Text
License:        GPL

%description
Basque dictionary for aspell 0.60. Files obtained from .deb package.

%prep

%build

%install

%clean

%files
%defattr(-,root,root,-)
/usr/lib/aspell-0.60/eu.multi
/usr/lib/aspell-0.60/eu.rws
/usr/lib/aspell-0.60/eu.dat
/usr/lib/aspell-0.60/euskera.alias
/usr/lib/aspell-0.60/eu_affix.dat

%doc

%changelog
* Mon Nov  8 2010  David Fernanez <david.fernandez@ehu.es>
- Initial version

Una vez creado este fichero ya procedemos a generar el RPM:

# rpmbuild -bb SPECS/aspell-eu.spec

En este comando podemos especificar la arquitectura para la que se crea el paquete con –target (pe. noarch, i386,…). Si no se específica se usará la del servidor donde se construye el paquete.

Y ya tenemos nuestro RPM en ~/misrpms/RPMS/noarch/aspell-eu-20081029-1.el5.noarch.rpm

Linux ,

Rsyslog5enRH5

Lunes, 14 de Marzo de 2011

Instalar Rsyslog 5.6.x en Red Hat 5

Red Hat 5 a partir de la versión 5.2 incluye el software rsyslog. Rsyslog es un sustituto del syslog tradicional de los sistemas Unix que incorpora funcionalidad nueva (envio de logs mediante TCP, a una BBDD,…). Sin embargo, la versión que se incluye con la distribución (3.22.x) es bastante antigua y tiene limitaciones.

En mi caso concreto me encontré con un error en el módulo imfile (módulo de rsyslogpara la lectura de fichros de logs). Este error ocasionaba que bajo determinadas circunstancias, en ficheros grandes, rsyslog perdiera el punto donde se encontraba leyendo el fichero y volviera a empezar desde el principio, con la consiguiente duplicación de mensajes.

Por este motivo decidí proceder a la instalación de una versión más reciente de rsyslog (la rama estable a fecha de este documento 5.6.x). Dado que esto lo debía hacer en varios servidores, en lugar de compilar en software en cada uno de ellos, me decidí por la opción de generar un RPM binario para luego instalar el software en los diferentes servidores.

Generar un RPM binario con la nueva versión de RSYSLOG para RH5

En primer lugar nos descargamos el SourceRPM del paquete rsyslog del RawHide de Fedora (a fecha de este documento este source era para la versión 5.6.2 de rsyslog). También nos descargamos el código fuente de Rsyslog.

En principio a partir de un Source RPM es fácil generar los RPMS binarios, pero en este caso a partir de Fedora 11 se ha cambiado el algoritmo resumen a la hora de generar los RPMs por lo que no podemos usar directamente ese Source RPM, tenemos que volver a generarlo.

Para volver a generar el Source RPM en primer lugar extraemos los ficheros del mismo:

# rpm2cpio rsyslog-5.6.2-2.fc15.src.rpm | cpio -idmv
cpio: rsyslog-5.6.2.tar.gz not created: newer or same age version exists
rsyslog-5.6.2.tar.gz
rsyslog.conf
rsyslog.init
rsyslog.log
rsyslog.spec
rsyslog.sysconfig
4451 blocks

Además de regenerar el source RPM vamos a actualizar la versión del paquete RPM. Para eso copiamos los ficheros rsyslog.conf, rsyslog.init, rsyslog.log y rsyslog.sysconfig extraidos anteriormente a la carpeta ~/SOURCES del rpmbuild (ver creación de un RPM binario). También copiamos a esta carpeta el fichero con el código fuente de RSYSLOG que nos hemos descargado (rsyslog-5.6.4.tar.gz).

Modificamos el fichero ~/SOURCES/rsyslog.log y lo dejamos como sigue (si no hacemos esto, al instalar el RPM se producirá un conflicto en el fichero /etc/logrotate.d/syslog con el paquete sysklogd de la distribución de Red Hat y eso nos complicará – aunque no de forma insalvable – la instalación de la nueva versión de rsyslog):

/var/log/messages /var/log/secure /var/log/maillog /var/log/spooler /var/log/boot.log /var/log/cron {
 sharedscripts
 postrotate
 /bin/kill -HUP catvarrunsyslogd.πd2>devνll 2> /dev/null || true
 /bin/kill -HUP catvarrunrsyslogd.πd2>devνll 2> /dev/null || true
 endscript
}

A continuación editamos el fichero rsyslog.spec y cambiamos las líneas 8 y 9:

Version: 5.6.2
Release: 2%{?dist}

por

Version: 5.6.4
Release: 1%{?dist}

Para generar el RPM binario necesitamos instalar una serie de dependencias. Para ello instalamos los siguientes paquetes:

# yum install mysql-devel postgresql-devel krb5-devel librelp-devel gnutls-devel net-snmp-devel

El paquete librelp-devel lo encontraremos en el repositorio EPEL.

Ahora procedemos a reconstruir el source RPM con:

# rpmbuild -bs rsyslog.spec

Una vez regenerado el source RPM procedemos a compilarlo para generar los binarios (vamos a necesitar el gcc). Lo hacemos con:

# rpmbuild --rebuild ~/SRPMS/rsyslog-5.6.4-1.src.rpm

Si todo va bien se nos habrán creado los RPMs binarios en ~/RPMS. Estos binarios son dependientes de la arquitectura por lo que habrá que generarlos en un servidor de 32 bits para las maquinas de 32 bits y en un servidor de 64 bits para las maquinas de 64 bits.

Estos RPMs ya están listos para ser instalados. Para facilitar este proceso se han movido al repositorio EHURepo.

Linux , , , ,

TimeoutComandoBash

Miércoles, 2 de Febrero de 2011

Timeout para un comando en Bash

En algunas ocasiones nos puede interesar lanzar un comando con un timeout para acabar el comando en caso de que se demore más de un tiempo deseado.

Para hacer esto he encontrado un script que nos permite invocar un comando con un timeout. Si el timeout se supera, se termina la ejecución del comando, aunque éste no haya acabado.

La sintaxis es:

# ./timeout3 -t 5 comando parámetros-comando

Parece que en las últimas versiones del paquete coreutils (versión 7) ya se incluirá un comando timeout. Sin embargo, la versión que viene instalada en RH 5 es la 5.97.

Linux ,

AmpliarVolumenLVM

Jueves, 20 de Enero de 2011

Ampliación de una partición sobre LVM

Para ampliar un volumen LVM desde la línea de comandos haríamos lo siguiente:

En primer lugar necesitamos obtener el nombre del volumen lógico de la partición a ampliar

# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-root 3.8G  2.9G  770M  80% /
/dev/mapper/VolGroup00-home 1.5G  1.4G  1.9M 100% /home
/dev/mapper/VolGroup00-tmp 485M   11M  449M   3% /tmp
/dev/mapper/VolGroup00-var 1.9G  1.1G  753M  60% /var
/dev/sda1              99M   25M   70M  27% /boot
tmpfs                1002M     0 1002M   0% /dev/shm

Ahora necesitamos conocer el nombre del volume group donde esta creado nuestra partición.

# lvdisplay /dev/mapper/VolGroup00-home
--- Logical volume ---
 LV Name                /dev/VolGroup00/home
 VG Name                VolGroup00
 LV UUID                pzBSAL-dvH9-2hv5-sfnM-YGES-3pWC-JGk9mq
 LV Write Access        read/write
 LV Status              available
 # open                 1
 LV Size                2.49 GB
 Current LE             637
 Segments               3
 Allocation             inherit
 Read ahead sectors     auto
 - currently set to     256
 Block device           253:1

Ahora hemos de comprobar que hay espacio disponible para la ampliación. Si no fuera así deberíamos dar más espacio a esto volume group.

 # vgdisplay VolGroup00
--- Volume group ---
 VG Name               VolGroup00
 System ID
 Format                lvm2
 Metadata Areas        3
 Metadata Sequence No  12
 VG Access             read/write
 VG Status             resizable
 MAX LV                0
 Cur LV                4
 Open LV               4
 Max PV                0
 Cur PV                3
 Act PV                3
 VG Size               19.39 GB
 PE Size               4.00 MB
 Total PE              4964
 Alloc PE / Size       2262 / 8.84 GB
 Free  PE / Size       2702 / 10.55 GB
 VG UUID               zqOdUf-3Y0b-78Gv-RUzO-8Ji3-ujpa-I0DaXw

Como tenemos espacio libre podemos ampliar la partición. Lo hacemos con el comando (en el ejemplo la ampliamos en 1 GB):

# lvresize -L +1GB /dev/mapper/VolGroup00-home
Extending logical volume home to 2.49 GB
Logical volume home successfully resized

Ahora tenemos que extender el sistema de ficheros. Lo hacemos con el comando resize2fs:

# resize2fs -p /dev/mapper/VolGroup00-home
resize2fs 1.39 (29-May-2006)
Filesystem at /dev/mapper/VolGroup00-home is mounted on /home; on-line resizing required
Performing an on-line resize of /dev/mapper/VolGroup00-home to 2609152 (1k) blocks.
The filesystem on /dev/mapper/VolGroup00-home is now 2609152 blocks long.

Los dos comandos anteriores los podríamos ejecutar con uno solo si añadimos el flag -r al comando lvresize. El comando quedaría como sigue:

# lvresize -r -L +1GB /dev/mapper/VolGroup00-home

Ahora ya podemos ver el resultado:

#  df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-root 3.8G  2.9G  770M  80% /
/dev/mapper/VolGroup00-home 2.5G  1.4G  943M  60% /home
/dev/mapper/VolGroup00-tmp 485M   11M  449M   3% /tmp
/dev/mapper/VolGroup00-var 1.9G  1.1G  753M  60% /var
/dev/sda1              99M   25M   70M  27% /boot
tmpfs                1002M     0 1002M   0% /dev/shm

Si en lugar de querer ampliar la partición en una cantidad determinada, lo que quisieramos es aprovechar todo el espacio disponible en el volumen podríamos usar el siguiente comando:

# lvresize -r -l +100%FREE /dev/mapper/VolGroup00-home

Linux