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


11

Estou trabalhando com um complexo /etc/fstabem um servidor baseado no RHEL 6.x. O sistema possui 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 seus efeitos na imagem em que estou trabalhando.

por exemplo, opções como nodev, nosuid, noexec, nobarriere vários parâmetros XFS filesystem estão no lugar.

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 /etc/fstab?

Por exemplo, sysctl -pcarrega os /etc/sysctl.confvalores e os aplica. Existe um mountequivalente?


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

Obviamente, um desenvolvedor solicita permissões de execução/tmp para instalar um aplicativo ...

Estou achando que a remountopção não funciona neste sistema sem especificar o dispositivo e o (re) ponto de montagem. Este é um servidor com proteção de segurança, portanto, os problemas que eu estou vendo podem estar relacionados ao SElinux ou resultado das montagens de ligação, ou talvez até a presença de opções negadas (noexec versus exec) ...


O desenvolvedor está tentando executar o script diretamente de um shell ou web (por meio de httpd)? que mensagem de erro você vê quando tenta executar um script?
— Daniel t.

Pense nisso como um instalador típico de aplicativo de terceiros que executa um executável binário ou shell /tmp. Oracle, por exemplo.
— ewwhite

Este pode ser um problema do SELINUX, você pode tentar pesquisar ausearch -m AVC,USER_AVC -sv nona saída por tmperros.
— Daniel t.

Respostas:


9

Digite isso 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 como esta:

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 da saída que ela produz, use-a ou remova as echoaspas duplas e do comando acima.


Você provavelmente precisará adicionar $devlá também ... #
— freiheit

4

Eu usaria apenas um script para fazer isso nos sistemas de arquivos relevantes

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

Você pode precisar colocar um -ftambém se um ou mais fs estiverem ocupados, por exemplo

mount -f -o remount "$fs"

3

Na página de mountmanual :

A funcionalidade remontar segue a maneira padrão como o comando mount funciona com as opções do fstab. Isso significa que o comando mount não lê fstab (ou mtab) somente quando um dispositivo e dir são totalmente especificados.

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

Após esta chamada, todas as opções antigas de montagem são substituídas e as coisas arbitrárias do fstab são ignoradas, exceto a opção loop =, que é gerada e mantida internamente pelo comando mount.

  mount -o remount,rw  /dir

Portanto, mount -o remount /mountpointdeve 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)

Isso não funcionou no meu caso, mas pode ser resultado de outros fatores no sistema. Veja fstab atualizado acima.
— ewwhite

@whwhite Não consigo reproduzir o problema usando as opções do fstab, então há outra coisa acontecendo.
— mgorven

0

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

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

 mount -o remount /usr

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


0

Você terá dificuldade em remontar sistemas de arquivos como / usr e / var quando o sistema estiver em funcionamento. A remontagem lenta, por exemplo, provavelmente retornará com êxito, mas nunca terá a oportunidade de executar a remontagem solicitada, pois haverá identificadores de arquivo mantidos abertos durante toda a vida útil do sistema.

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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.