Red Hat 6.x / CentOS 6.x
Dzięki specjalnym opcjom mountowania możemy ograniczyć lub umożliwić pewne zachowania na systemie plików w naszym OS-ie. Część tych opcji, poza standardowym fstab-em może być zdefiniowana w metadanych naszego filesystemu.Opcje fstab / mount
Podczas mountowania filesystemu możemy wymusić na nim pewne zachowania. Zachowania te definiujemy przez podanie odpowiednich opcji mountowania (zarówno w komendzie mount jak i pliku fstab).Przytoczmy zatem przykładowy wpis fstaba
/dev/mapper/vg_centos-lv_root / ext4 defaults 1 1
* W pierwszej kolumnie umieszczony jest wskaźnik urządzenia, które chcemy zamountować - w naszym przykładzie to dysk /dev/mapper/vg_centos-lv_root.
* Druga kolumna to punkt mountowania w systemie - tutaj będzie to katalog /.
* Trzecia kolumna określa nam typ filesystemu jaki znajduje się na naszym urządzeniu.
* Czwarta kolumna wpisu to pozycja rozdzielonych przecinkami opcji z jakimi dany filesystem zostanie zamountowany.
* Piąta kolumna informuje system o konieczności zrzucania filesystemu przy okazji wykonywania dump - domyślnie filesystemy nie są zrzucane (backupowane), więc opcja przybiera wartość 0 - w przeciwnym wypadku powinno to być 1.
* Ostatnia kolumna określa kolejność sprawdzania dysku przez fsck podczas restartu maszyny. Root filesystem powinien być opatrzony wartością 1 i być sprawdzany jako pierwszy. Pozostałe punkty mountowania powinny być sprawdzane później (opcja 2), lub jeśli sprawdzanie nie jest konieczne wartość powinna wynieść 0.
Najczęściej spotykaną opcją w czwartej kolumnie pliku fstab jest chyba opcja default. W rzeczywistości opcja jest aliasem dla szeregu innych: rw, suid, dev, exec, auto, nouser, async, realtime. Oczywiście zestaw opcji domyślnych może się zmieniać w zależności od wersji kernela oraz typu filesystemu.
Krótkie wyjaśnienie poszczególnych:
* rw - filesystem zamountowany do odczytu i zapisu
* suid - obsługuje bity set-user-id i set-group-id
* dev - bloki specjalne znajdujące się na takim filesystemie mogą być traktowane jako urządzenia
* exec - zezwala na wykonywanie binariów z danego filesystemu
* auto - powoduje, że filesystem będzie mountowany przy wydaniu komendy mount -a
* nouser - ogranicza możliwość mountowania filesystemu jedynie dla root-a
* async - wszystkie operacje I/O będą prowadzone asynchronicznie
* realtime - zapewnia, że daty dostępu i modyfikacji plików będą odnotowywane w systemie.
Dla większości punktów mountowania opcja default będzie wystarczająca, ale możemy podnieść bezpieczeństwo naszego systemu stosując pewne ograniczenia dla specyficznych filesystemów.
Jak zwykle po pełną listę opcji odeślę do manuala (man mount), ale wymienię kilka, które zdarza mi się wykorzystywać najczęściej:
* noexec - spowoduje, że binaria czy skrypty znajdujące się na takiej partycji nie będą mogły być na niej uruchamiane
* _netdev - informuje system, że dany zasób jest urządzeniem sieciowym i spowoduje, że mountowanie odbędzie się dopiero po uzyskaniu przez system komunikacji sieciowej (podniesienia usługi sieci)
* nosuid - nie pozwoli na zadziałanie bitów setuid i setgid
* acl - dzięki niej będziemy mogli używać kontroli dostępu opartej o ACL-e
* remount - opcja przydatna w przypadku problemów z filesystemem - pozwala na przemountowanie filesystemu z innymi opcjami niż te zawarte w fstabie.
Opcja remount wymieniona powyżej używana jest z komendą mount, i działa w dwojaki sposób, zależnie od użytej składni. Pozwala ona przemountować już zamountowany filesystem z innymi opcjami, przy czym nie zmienia ani urządzenia ani punktu mountowania. Bardzo często używana jest do przywrócenia możliwości zapisu w punkcie mountowania, który np. w wyniku błędów system operacyjny przełączył w tryb ro.
[root@server ~]# mount -o remount,rw /tmp
Takie użycie opcji spowoduje, że mount pobierze opcje zawarte w fstabie (lub mtabie) i uzupełni je o rw, przemountowując filesystem.
Drugim sposobem użycia, o którym wspominałem jest:
[root@server ~]# mount -o remount,rw /dev/mapper/vg_centos-lv_tmp /tmp
Użycie w poleceniu zarówno ścieżki urządzenia jak i punktu mountowania spowoduje, że mount nie weźmie pod uwagę już zdefiniowanych opcji mountowania (z fstab lub mtab), a przemountuje filesystem jedynie z opcjami podanymi przez nas w komendzie.
Od linuxa 2.4.0 istnieje możliwość stosowania jeszcze jednej ciekawej i nieraz przydatnej opcji. Otóż mamy możliwość bindowania, czyli przemountowywania całości lub części już zamountowanego filesystemu w inne miejsce i z innymi opcjami. Np:
[root@server ~]# mount --bind /tmp /tmp_ro
[root@server ~]# mount | grep tmp
/tmp on /tmp_ro type none (rw,bind)
[root@server ~]# mount -o remount,ro /tmp_ro/
[root@server ~]# mount | grep tmp
/tmp on /tmp_ro type none (ro,bind)
[root@server ~]# mount | grep tmp
/tmp on /tmp_ro type none (rw,bind)
[root@server ~]# mount -o remount,ro /tmp_ro/
[root@server ~]# mount | grep tmp
/tmp on /tmp_ro type none (ro,bind)
Sposobem tym zawartość katalogu /tmp jest dostępna w systemie również w katalogu /tmp_ro, a dodatkowo ten punkt mountowania działa jedynie w trybie ro. Ten przykład jest może trochę abstrakcyjny, ale bindowanie możemy wykorzystać np: do mountowania katalogu znajdującego się w długiej ścieżce systemowej, do nowego punktu znajdującego się bezpośrednio w katalogu /.
Wpisanie bindowania w /etc/fstab wykonujemy następująco:
/katalog/bindowany /punkt/mountowania none bind 0 0
Niestety bindowanie samo w sobie nie zmienia opcji mountowania, i nowy punkt będzie miał takie same opcje jak ten bindowany. Jeśli dodamy taki wpis w fstabie będziemy musieli pamiętać, aby po restarcie przemountować opcje, lub oskryptować takie działania.
Opcje metadanych
Jak wspomniałem na początku, część opcji mountowania filesystemu znajduje się w jego metadanych. Możemy je podejrzeć poprzez:
[root@rsyslog-server tmp]# tune2fs -l /dev/mapper/vg_centos-lv_root | head
tune2fs 1.41.12 (17-May-2010)
Filesystem volume name: _CentOS-6.7-x86_
Last mounted on: /
Filesystem UUID: ec12b9d0-6f56-47cf-805f-a3fc5286fa12
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags: signed_directory_hash
Default mount options: user_xattr
Filesystem state: clean
tune2fs 1.41.12 (17-May-2010)
Filesystem volume name: _CentOS-6.7-x86_
Last mounted on: /
Filesystem UUID: ec12b9d0-6f56-47cf-805f-a3fc5286fa12
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags: signed_directory_hash
Default mount options: user_xattr
Filesystem state: clean
Nie będę się rozpisywał nad znaczeniem ich wszystkich, ponieważ (i o tym trzeba pamiętać) opcje te mogą być nadpisywane przez opcje podawane w fstab czy mount.
Jednak dla porządku, pokażę jak je dodawać i odejmować. (opisy dostępne oczywiście w manualu man tune2fs).
Dodawanie opcji zrealizujemy przez:
[root@rsyslog-server tmp]# tune2fs -o acl /dev/mapper/vg_centos-lv_root
tune2fs 1.41.12 (17-May-2010)
[root@rsyslog-server tmp]# tune2fs -l /dev/mapper/vg_centos-lv_root | grep options
Default mount options: user_xattr acl
tune2fs 1.41.12 (17-May-2010)
[root@rsyslog-server tmp]# tune2fs -l /dev/mapper/vg_centos-lv_root | grep options
Default mount options: user_xattr acl
Usuwanie odbywa się poprzez dodanie "daszka" przed opcją, którą chcemy usunąć:
[root@rsyslog-server tmp]# tune2fs -o ^acl /dev/mapper/vg_centos-lv_root
tune2fs 1.41.12 (17-May-2010)
[root@rsyslog-server tmp]# tune2fs -l /dev/mapper/vg_centos-lv_root | grep options
Default mount options: user_xattr
tune2fs 1.41.12 (17-May-2010)
[root@rsyslog-server tmp]# tune2fs -l /dev/mapper/vg_centos-lv_root | grep options
Default mount options: user_xattr
Brak komentarzy:
Prześlij komentarz