Быстрый способ восстановить или перезагрузить настройки / etc / fstab?


11

Я работаю с комплексом /etc/fstabна сервере на основе RHEL 6.x. Система имеет множество вариантов монтирования, используемых на восьми разделах, включая несколько монтируемых. Я тестирую варианты и их влияние на изображение, над которым я работаю.

например , такие опции , как nodev, nosuid, noexec, nobarrierи несколько XFS файловой системы параметров на месте.

Хотя я знаю, что можно перемонтировать с определенными параметрами, есть ли быстрый способ вернуть все крепления к постоянным настройкам, жестко заданным в настройках /etc/fstab?

Например, sysctl -pзагружает /etc/sysctl.confзначения и применяет их. Есть ли mountэквивалент?


Редактировать:

Пример конфигурации:

#
# /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

Конечно, разработчик просит выполнить разрешения на /tmpдля того , чтобы установить приложение ...

Я обнаружил, что эта remountопция не работает в этой системе без указания устройства и (пере) точки монтирования. Это сервер с усиленной безопасностью, поэтому проблемы, с которыми я сталкиваюсь, могут быть связаны с SElinux или из-за монтирования bind, или даже из-за наличия отрицательных опций (noexec и exec) ...


Пытается ли разработчик выполнить скрипт напрямую из оболочки или сети (через httpd)? какое сообщение об ошибке вы видите при попытке выполнить скрипт?
Даниил Т.

Думайте об этом как типичном установщике сторонних приложений , что отвалы бинарных или оболочке исполняемого файла в /tmp. Оракул, например.
13

Это может быть проблемой SELINUX, вы можете попытаться ausearch -m AVC,USER_AVC -sv noпросмотреть все tmpошибки.
Даниил Т.

Ответы:


9

Введите это в bash:

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

На моей системе это производит вывод как это:

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

Попробуйте это в вашей системе. Если вам нравится вывод, который он производит, используйте его или просто удалите echoдвойные кавычки и из команды выше.


Вы, вероятно, должны добавить $devтуда тоже ...
freiheit

4

Я бы просто использовал скрипт, чтобы сделать это для соответствующих файловых систем.

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

Вам может понадобиться добавить -fтуда тоже, если один или несколько fs могут быть заняты, например

mount -f -o remount "$fs"

3

Из mountсправочной страницы :

Функциональность remount следует стандартному способу работы команды mount с параметрами из fstab. Это означает, что команда mount не читает fstab (или mtab), только когда устройство и dir полностью указаны.

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

После этого вызова все старые параметры монтирования заменяются, и произвольный материал из fstab игнорируется, кроме параметра loop =, который генерируется и поддерживается командой mount.

  mount -o remount,rw  /dir

Поэтому mount -o remount /mountpointследует восстановить параметры в /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)

Это не сработало в моем случае, но может быть результатом других факторов в системе. Смотрите обновленный fstab выше.
13

@ewwhite Я не могу воспроизвести проблему, используя ваши опции fstab, так что происходит что-то еще.
mgorven

0

Вы изменяете динамику флагов монтирования, не проходя / etc / fstab и не перезагружаясь?

Вы не можете сделать следующее (например):

 mount -o remount /usr

восстановить исходные параметры из / etc / fstab? Вы можете проверить параметры монтирования, используя команду mount без аргументов.


0

Вам будет сложно перемонтировать файловые системы, такие как / usr и / var, когда система будет запущена и работает. Например, ленивый перемонтирование, вероятно, просто вернет успех, но никогда не получит возможность выполнить запрошенный перемонтирование, потому что будут файловые дескрипторы, которые остаются открытыми в течение всего срока службы системы.

Если это образ разработки, как это звучит, то я рекомендую просто чистить систему для каждого теста. Это утомительно, но, по крайней мере, тогда вы точно знаете, что система работает так, как будет работать, поэтому ваш тест надежен.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.