Cara cepat untuk mengembalikan atau memuat kembali pengaturan / etc / fstab?

11

Saya bekerja dengan kompleks /etc/fstabpada server berbasis RHEL 6.x. Sistem ini memiliki berbagai opsi pemasangan yang digunakan di delapan partisi, termasuk beberapa pemasangan mengikat. Saya menguji opsi dan pengaruhnya pada gambar yang saya kerjakan.

misalnya pilihan seperti nodev, nosuid, noexec, nobarrierdan beberapa parameter XFS filesystem berada di tempat.

Meskipun saya tahu mungkin untuk melakukan remount dengan opsi tertentu, apakah ada cara cepat untuk mengembalikan semua mount ke pengaturan persisten yang di-hardcode /etc/fstab?

Misalnya sysctl -pmemuat /etc/sysctl.confnilai dan menerapkannya. Apakah ada yang mountsetara?


Edit:

Contoh konfigurasi:

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

Tentu saja, pengembang meminta izin eksekusi/tmp untuk menginstal aplikasi ...

Saya menemukan bahwa remountopsi tidak bekerja pada sistem ini tanpa menentukan perangkat dan (kembali) mountpoint. Ini adalah server yang diperketat keamanan, jadi masalah yang saya lihat mungkin terkait SElinux atau hasil dari bind mounts, atau bahkan mungkin kehadiran opsi yang dinegasikan (noexec versus exec) ...

putih
sumber
Apakah pengembang mencoba mengeksekusi skrip langsung dari shell atau web (melalui httpd)? pesan kesalahan apa yang Anda lihat ketika Anda mencoba menjalankan skrip?
Daniel t.
Anggap saja sebagai penginstal aplikasi pihak ketiga yang biasanya mengeksekusi biner atau shell /tmp. Oracle, misalnya.
ewwhite
Ini bisa menjadi masalah SELINUX, Anda mungkin mencoba ausearch -m AVC,USER_AVC -sv nodan melihat output untuk setiap tmpkesalahan.
Daniel t.

Jawaban:

9

Ketikkan ini ke dalam bash:

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

Di sistem saya, ini menghasilkan output seperti ini:

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

Cobalah di sistem Anda. Jika Anda menyukainya, ia menghasilkan, gunakan, atau cukup hapus echotanda kutip ganda dari perintah di atas.

kehancuran
sumber
Anda mungkin perlu menambahkan $devdi sana juga ...
freiheit
4

Saya hanya akan menggunakan skrip untuk melakukannya untuk sistem file yang relevan

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

Anda mungkin perlu meletakkan -fdi sana juga jika satu atau lebih fs mungkin sibuk misalnya

mount -f -o remount "$fs"
user9517
sumber
3

Dari halaman mountmanual :

Fungsi remount mengikuti cara standar bagaimana perintah mount bekerja dengan opsi dari fstab. Itu berarti perintah mount tidak membaca fstab (atau mtab) hanya ketika perangkat dan dir sepenuhnya ditentukan.

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

Setelah panggilan ini, semua opsi pemasangan lama diganti dan barang sewenang-wenang dari fstab diabaikan, kecuali opsi perulangan = yang dibuat secara internal dan dikelola oleh perintah pemasangan.

  mount -o remount,rw  /dir

Jadi mount -o remount /mountpointharus mengembalikan opsi di /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)
Mgorven
sumber
Ini tidak berfungsi dalam kasus saya, tetapi mungkin merupakan akibat dari faktor lain pada sistem. Lihat fstab yang diperbarui di atas.
ewwhite
@ewwhite Saya tidak bisa mereproduksi masalah menggunakan opsi fstab Anda, jadi ada hal lain yang terjadi.
mgorven
0

Apakah Anda mengubah dinamika flag mount tanpa melalui / etc / fstab dan reboot?

Tidak bisakah Anda melakukan yang berikut ini (misalnya):

 mount -o remount /usr

mengembalikan opsi asli dari / etc / fstab? Anda dapat memeriksa opsi yang dipasang menggunakan perintah mount tanpa argumen.

mdpc
sumber
0

Anda akan kesulitan membuat ulang sistem file seperti / usr dan / var begitu sistem berjalan dan berjalan. Malas remounting, misalnya, mungkin hanya akan mengembalikan kesuksesan tetapi tidak pernah benar-benar mendapatkan kesempatan untuk melakukan remount yang diminta karena akan ada file menangani terus terbuka sepanjang kehidupan sistem berjalan.

Jika ini adalah gambar pengembangan, seperti yang terdengar, maka saya sarankan hanya mem-boot sistem bersih untuk setiap tes. Itu membosankan, tetapi setidaknya Anda tahu pasti bahwa sistem berjalan seperti yang akan di produksi, sehingga pengujian Anda dapat diandalkan.

Jeff Albert
sumber