Maneira rápida de restaurar ou recarregar as configurações do / etc / fstab?

11

Estou trabalhando com um complexo /etc/fstab em um servidor baseado em RHEL 6.x. O sistema tem uma variedade de opções de montagem em uso em oito partições, incluindo várias montagens de ligação. Estou testando opções e seu efeito na imagem em que estou trabalhando.

por exemplo. opções como nodev , nosuid , noexec , nobarrier e várias parâmetros do sistema de arquivos XFS estão em vigor.

Embora eu saiba que é possível remontar com opções específicas, existe uma maneira rápida de reverter todas as montagens para as configurações persistentes codificadas em /etc/fstab ?

Por exemplo, sysctl -p carrega os valores de /etc/sysctl.conf e os aplica. Existe um mount equivalente?

Editar:

Um exemplo de configuração:

#
# /etc/fstab
#
UUID=e6ca80cd    /                       ext4    noatime,nobarrier        1 1
UUID=a327d315    /boot                   ext4    defaults                 1 2
UUID=333ada18    /home                   ext4    noatime,nobarrier,nodev  1 2
UUID=7835718b    /tmp                    ext4    nodev,nosuid,noexec      1 2
UUID=4dd2e9d4    /usr                    ext4    defaults                 1 2
UUID=c274f65f    /var                    ext4    noatime,nobarrier        1 2
UUID=5b5941e0    /var/log                ext4    defaults                 1 2
UUID=3645951a    /var/log/audit          ext4    defaults                 1 2
UUID=3213123c    /vol1                   xfs     noatime,logbufs=8,nobarrier 1 2
UUID=1ee1c070    swap                    swap    defaults                 0 0
# Bind mount for /tmp
/tmp             /var/tmp                none    bind                     0 0
tmpfs            /dev/shm                tmpfs   nodev,nosuid,noexec      0 0
devpts           /dev/pts                devpts  gid=5,mode=620           0 0
sysfs            /sys                    sysfs   defaults                 0 0
proc             /proc                   proc    defaults                 0 0

É claro que um desenvolvedor pede permissões executar em /tmp para instalar um aplicativo ...

Eu estou achando que a opção remount não funciona neste sistema sem especificar o (re) ponto de montagem do dispositivo e . Este é um servidor de segurança reforçada, então os problemas que estou vendo podem ser relacionados ao SElinux ou um resultado das montagens de bind, ou talvez até mesmo a presença de opções negadas (noexec versus exec) ...

    
por ewwhite 07.02.2013 / 19:12

5 respostas

9

Digite isto no bash:

egrep -v '^#' /etc/fstab | while read dev dir type opts dump pass ; do
    echo "mount -o remount,${opts} ${dir}";
done

No meu sistema, isso produz uma saída assim:

mount -o remount,nodev,noexec,nosuid /proc
mount -o remount,relatime,errors=remount-ro /
mount -o remount,defaults /misc

Experimente no seu sistema. Se você gosta, ele produz, usa, ou apenas remove o echo e as aspas duplas do comando acima.

    
por 07.02.2013 / 19:23
4

Gostaria apenas de usar um script para fazer isso para os sistemas de arquivos relevantes

for fs in /home /var /whatever
do
    mount -o remount "$fs"
done

Talvez seja necessário colocar um -f também se um ou mais fs estiverem ocupados, por exemplo,

mount -f -o remount "$fs"
    
por 07.02.2013 / 19:26
3

Na mount manpage :

The remount functionality follows the standard way how the mount command works with options from fstab. It means the mount command doesn't read fstab (or mtab) only when a device and dir are fully specified.

  mount -o remount,rw /dev/foo /dir

After this call all old mount options are replaced and arbitrary stuff from fstab is ignored, except the loop= option which is internally generated and maintained by the mount command.

  mount -o remount,rw  /dir

Portanto, mount -o remount /mountpoint deve restaurar as opções em /etc/fstab :

mgorven@mamma:~% grep boot /etc/fstab
UUID=823c73dc-8f64-4f76-a120-968106ffdf5a /boot           ext4    relatime        0       2
mgorven@mamma:~% sudo mount -o remount,ro /boot
mgorven@mamma:~% mount | grep boot
/dev/sda4 on /boot type ext4 (ro,relatime)
mgorven@mamma:~% sudo mount -o remount /boot
mgorven@mamma:~% mount | grep boot
/dev/sda4 on /boot type ext4 (rw,relatime)
    
por 07.02.2013 / 19:26
0

Você está mudando a dinâmica dos flags de montagem sem passar pelo / etc / fstab e reinicializar?

Você não pode fazer o seguinte (por exemplo):

 mount -o remount /usr

para restaurar as opções originais do / etc / fstab? Você pode verificar as opções montadas usando o comando mount sem argumentos.

    
por 07.02.2013 / 19:23
0

Você terá dificuldades em remontar sistemas de arquivos como / usr e / var assim que o sistema estiver em funcionamento. A remontagem preguiçosa, por exemplo, provavelmente retornará um sucesso, mas nunca terá a oportunidade de realizar a remontagem solicitada, pois haverá alças de arquivos que manterão aberta toda a vida útil do sistema.

Se esta é uma imagem de desenvolvimento, como parece, então eu recomendo apenas inicializar o sistema para cada teste. É tedioso, mas pelo menos você tem certeza de que o sistema está funcionando como seria na produção, então seu teste é confiável.

    
por 07.02.2013 / 19:28