Zaloguj się na maszynę wirtualną i przeanalizuj działanie komendy lspci
. W
szczególności sprawdź jakim dyskom odpowiadają urządzenia:
00:06.0 SCSI storage controller: Red Hat, Inc. Virtio block device
00:07.0 SCSI storage controller: Red Hat, Inc. Virtio block device
Porównaj wyniki działania komendy lspci
z ls -l /dev/disk/by-path
.
Pobierz skrypt pcictl (wget http://jkob.fizyka.umk.pl/labul/scripts/pcictl
) i
zapoznaj się z jego działaniem (pcictl -h
). Przy pomocy tej komendy usuń i dodaj
drugi dysk. Przy pomocy drugiej konsoli obserwuj komunikaty podsystemu udev (udevadm
monitor
).
Powtórz poprzednie ćwiczenie obserwując działanie podsystemu udev przy pomocy komendy
journalctl -xb -f -u systemd-udevd
. Jak zmienia się gadatliwość podsystemu, jeśli
zmieniać priorytet rejestrowanych zdarzeń (udevadm
control --log-priority=debug|info
)?
Przy pomocy skryptu pcictl
usuń i dodaj trzeci z interfejsów ethernetowych
(eth2). Przy pomocy drugiej konsoli obserwuj komunikaty podsystemu udev (udevadm
monitor
).
Pobierz skrypt udevctl (wget http://jkob.fizyka.umk.pl/labul/scripts/udevctl
) i
zapoznaj się z jego działaniem (udevctl -h
). Przy pomocy tej komendy zapoznaj się z
rodzajem i sposobem gromadzenia przez podsystem udev informacji o urządzeniach
blokowych i interfejsach sieciowych.
Pracując w trybie konsolowym, tj. via folavirt7, wykonaj komendę modprobe -r
virtio-net
i wykorzystaj komendę udevctl
do ponownego zainicjowania
wybranych urządzeń obserwując jednocześnie działanie podsystemu udev (udevadm
monitor
).
Utwórz plik /etc/udev/rules.d/20-block.rules i umieść w nim regułę, która spowoduje, że
drugi z dysków (/dev/vdb) będzie dostępny pod nazwą /dev/scratch (wykorzystaj
udevctl
do utworzenia odpowiedniej reguły).
Zmodyfikuj regułę z poprzedniego zadania w taki sposób, aby po dodaniu urządzenia był automatycznie wykonywany skrypt 20-block.sh, który wykonuje następujące czynności:
zakłada tablicę msdos
tworzy jedną partycję obejmującą cały dysk
zakłada na niej system plików ext4
montuje ten system plików w /mnt/scratch i tworzy w tym katalogu kopię katalogu /etc
Zob. także zad. 8-10 w sekcji mount.
Utwórz plik /etc/udev/rules.d/70-net.rules i umieść w nim regułę, która spowoduje, że trzeci z interfejsów ethernetowych będzie dostępny pod nazwą em3.
W celu sprawdzenia, czy reguła zadziałała trzeba wyładować i ponownie załadować moduł obsługujący interfejsy ethernetowe. Dla maszyn wirtualnych trzeba to zrobić przy pomocy komendy:
# (modprobe -r virtio_net; modprobe virtio_net) &
Jak ulega zmianie działanie podsystemu udev, jeśli w regule zmieniającej nazwę interfejsu, NAME=”em3” zastąpić przez NAME:=”em3”? Umieść w 70-net.rules dwie reguły dotyczące zmiany nazwy tego samego interfejsu
... NAME="em4"
... NAME="em5"
i spraw ich działanie, a następnie zamień je na
... NAME:="em4"
... NAME:="em5"
i ponownie sprawdź ich działanie.
Utwórz partycję /dev/vdb1, załóż na niej system plików ext4, utwórz podkatalog
labul i uczyń użytkownika labul właścicielem (także grupowym) tego
katalogu. Zaloguj się jako użytkownik labul i zapoznaj się z działaniem komendy
udisksctl
. Spróbuj przy pomocy tej komendy uzyskać dostęp do utworzonego
wcześniej na urządzeniu /dev/vdb1 katalogu labul. Jakie prawa dostępu ma
użytkownik labul do tego katalogu? Gdzie ten katalog się znajduje?
Pobierz plik http://jkob.fizyka.umk.pl/labul/scripts/50-udisks.rules, umieść go w katalogu /etc/polkit-1/rules.d./ i zrestartuj usługę polkit. Czy użytkownik labul może teraz zamontować przygotowany dla niego zasób dyskowy?
Utwórz partycję /dev/vdb1, załóż na niej system plików vfat. Zaloguj się jako
użytkownik labul i użyj komendy udisksctl
, żeby uzyskać dostęp do tego
zasobu dyskowego. Jakie prawa dostępu ma użytkownik labul do tego katalogu?
Czy te prawa zależą od konfiguracji usługi polkit, tj. obecności pliku reguł
50-udisks.rules?
Skrypt http://jkob.fizyka.umk.pl/labul/scripts/backup2usbctl ilustruje w jaki sposób zwykły użytkownik może automatyczne wykonywać kopię wskazanych zasobów na odpowiedni dysk USB. Przeanalizuj działanie tego skryptu.
W jaki sposób można pozbyć się konieczności podawania hasła przy każdorazowym użyciu tego skryptu?