4.10. Montando particiones de manera correcta
When mounting an
Ext
file system (
ext2
,
ext3
or
ext4
), there are several additional options you can apply to the mount call or to
/etc/fstab
. For instance, this is my fstab entry for the
/tmp
partition:
/dev/hda7 /tmp ext2 defaults,nosuid,noexec,nodev 0 2
usted ve la diferencia a las secciones de opciones . La opción
nosuid
ignora los bits setuid y setgid completamente , mientras que
noexec
prohibe la ejecución de programas en ese punto de montaje, y
nodev
, ignora los dispositivos.Esto suena grandioso , pero esto
La opción
noexec
previene los binarios de ejecutarse directamente, pero se engaña fácilmente:
alex@joker:/tmp# mount | grep tmp
/dev/hda7 on /tmp type ext2 (rw,noexec,nosuid,nodev)
alex@joker:/tmp# ./date
bash: ./date: Permission denied
alex@joker:/tmp# /lib/ld-linux.so.2 ./date
Sun Dec 3 17:49:23 CET 2000
Newer versions of the kernel do however handle the
noexec
flag properly:
angrist:/tmp# mount | grep /tmp
/dev/hda3 on /tmp type ext3 (rw,noexec,nosuid,nodev)
angrist:/tmp# ./date
bash: ./tmp: Permission denied
angrist:/tmp# /lib/ld-linux.so.2 ./date
./date: error while loading shared libraries: ./date: failed to map segment
from shared object: Operation not permitted
Sin embargo, muchos "script kiddies" cuentan con "xploits" que intentan crear y ejecutar los archivos en /tmp
.Si ellos no tienen una pista, ellos entrarán en esta trampa. En otros términos, un usuario no puede engañarse en ejecutar un binario troyanizado en /tmp
e.g. por ejemplo cuando él agrega a propósito /tmp
dentro de su PATH.
También se previene de algún programa que podría depender en que
/tmp
sea ejecutable. Más notablemente, Debconf tiene (¿tenía?) algunos problemas que consideran esto, para más información vea Bug
http://bugs.debian.org/116448.
The following is a more thorough example. A note, though:
/var
could be set noexec, but some software
keeps its programs under in
/var
. The same applies to the nosuid option.
/dev/sda6 /usr ext2 defaults,ro,nodev 0 2
/dev/sda12 /usr/share ext2 defaults,ro,nodev,nosuid 0 2
/dev/sda7 /var ext2 defaults,nodev,usrquota,grpquota 0 2
/dev/sda8 /tmp ext2 defaults,nodev,nosuid,noexec,usrquota,grpquota 0 2
/dev/sda9 /var/tmp ext2 defaults,nodev,nosuid,noexec,usrquota,grpquota 0 2
/dev/sda10 /var/log ext2 defaults,nodev,nosuid,noexec 0 2
/dev/sda11 /var/account ext2 defaults,nodev,nosuid,noexec 0 2
/dev/sda13 /home ext2 rw,nosuid,nodev,exec,auto,nouser,async,usrquota,grpquota 0 2
/dev/fd0 /mnt/fd0 ext2 defaults,users,nodev,nosuid,noexec 0 0
/dev/fd0 /mnt/floppy vfat defaults,users,nodev.nosuid,noexec 0 0
/dev/hda /mnt/cdrom iso9660 ro,users,nodev.nosuid,noexec 0 0
4.10.1. Setting /tmp
noexec
Tenga cuidado si esta poniendo
/tmp
y usted quiere instalar el nuevo software, desde que alguno podría usarlo para la instalación. Apt es uno de esos programas (vea
http://bugs.debian.org/116448) si no configuró propiamente
APT::ExtractTemplates::TempDir
(vea
apt-extracttemplates(1)). Usted puede poner esta variable en
/etc/apt/apt.conf
a otro directorio con privilegios exec que no sea
/tmp
4.10.2. Serie /usr leer-únicamente
Si usted pusiera /usr
leer - únicamente usted no podrá instalar los nuevos paquetes en su Debian GNU / sistema Linux. Usted tendrá, primero que remontar leer -escribir, instale los paquetes y entonces remóntelo leer-únicamente. La última versión apt (en Debian 3.0ŽwoodyŽ) puede configurarse para ejecutar las órdenes antes y después de instalar los paquetes, para que usted pueda propiamente querer configurarlo.
Hacer esto modifica
/etc/apt/apt.conf
y agrega:
DPkg
{
Pre-Invoke { "mount /usr -o remount,rw" };
Post-Invoke { "mount /usr -o remount,ro" };
};
Note that the Post-Invoke may fail with a "/usr busy" error message. This happens mainly when you are using files during the update that got updated. You can find these programs by running
# lsof +L1
Stop or restart these programs and run the Post-Invoke manually.
Beware! This means you'll likely need to restart your X session (if you're running one) every time you do a major upgrade of your system. You might want to reconsider whether a read-only
/usr
is suitable for your system. See also this
discussion on debian-devel about read-only.