Ponieważ dostęp do urządzenia bazowego jest domyślnie kontrolowany tylko przez uprawnienia do plików, więc jeśli pamięć USB zawiera system plików POSIX z zapisywalnym na świecie węzłem urządzenia odpowiadającym rzeczywistemu urządzeniu w systemie, możesz użyć tego węzła urządzenia, aby uzyskać dostęp do odpowiedniego urządzenie jako „zwykły” użytkownik. Wyobraź sobie urządzenie odpowiadające jednemu z urządzeń audio, twoją kamerę internetową /dev/sda
(która jest raczej urządzeniem blokowym niż urządzeniem znakowym, ale argument jest taki sam) ...
Oto przykład, aby wyjaśnić. Powiedz, że chcesz uzyskać dostęp /dev/sda
(wtedy możesz praktycznie zrobić wszystko, co chcesz z zawartością dysku, w tym posadzić program, który pozwoli ci się stać root
; jest to urządzenie blokowe, ale problem jest taki sam z urządzeniami znakowymi). W systemie docelowym ls -l /dev/sda
pokazuje
brw-rw---- 1 root disk 8, 0 Sep 8 11:25 sda
Oznacza to, że /dev/sda
jest to urządzenie blokowe ( b
na początku linii), z główną liczbą 8 i podrzędną liczbą 0 ( 8, 0
w środku linii). Urządzenie jest dostępne tylko dla root
(odczyt / zapis) i członków disk
grupy (również odczyt / zapis).
Teraz wyobraź sobie, że w tym systemie nie możesz się stać, root
ale z jakiegoś powodu możesz montować pamięci USB jako użytkownik bez nodev
. W innym systemie, w którym jesteś root
, możesz utworzyć odpowiedni specjalny plik na kluczu USB:
mknod -m 666 usersda b 8 0
Spowoduje to utworzenie specjalnego pliku o nazwie usersda
, do odczytu i zapisu przez wszystkich.
Zamontuj klucz w systemie docelowym i hej presto, możesz używać usersda
urządzenia w taki sam sposób /dev/sda
, ale bez ograniczeń dostępu ...
(Będzie to działać nawet w przypadku zaszyfrowanych systemów plików, o ile masz dostęp do odszyfrowanego urządzenia mapującego: utwórz urządzenie pasujące do odpowiedniego /dev/mapper
wpisu.)