Łącza NTFS — NTFS links

System plików NTFS definiuje różne sposoby przekierowywania plików i folderów, np. aby plik wskazywał inny plik lub jego zawartość. Wskazywany obiekt nazywany jest celem. Istnieją trzy klasy linków:

  • Twarde dowiązania , które mają pliki współdzielą ten sam wpis MFT ( i- węzeł ), w tym samym systemie plików.
  • Punkty połączenia , które są podobne do twardych łączy, ale są zdefiniowane dla folderów. Akceptuje tylko lokalne, bezwzględne ścieżki.
  • Dowiązania symboliczne , które rejestrują ścieżkę do innego pliku, który powinna pokazywać zawartość łącza. Może akceptować ścieżki względne. W NTFS 3.1 dodanoobsługę katalogów i ścieżek UNC .

Wszystkie łącza NTFS są zaprojektowane tak, aby były przezroczyste dla aplikacji. Oznacza to, że aplikacja uzyskująca dostęp do łącza zostanie bezproblemowo przekierowana przez sterownik systemu plików i nie jest wymagana żadna specjalna obsługa. Dla użytkowników są one widoczne jako zwykłe katalogi lub pliki. Prowadzi to również do efektu aliasingu : zapisy do łącza przekażą zapis do bazowego, połączonego pliku lub wpisu MFT.

Łącza symboliczne i punkty węzłowe, które muszą przenosić dodatkowe dane, w tym ścieżkę, na którą wskazują, są oparte na punktach ponownej analizy NTFS . Ich charakter nagrywania ścieżek oznacza, że ​​mogą łączyć się z plikami na innych woluminach, a nawet plikami zdalnymi. Z drugiej strony, dowiązania twarde są tworzone po prostu przez nadanie wpisowi w MFT nowej nazwy pliku do przejęcia, więc jest ono ograniczone do plików w tym samym systemie plików.

Dowiązanie symboliczne NTFS to nie to samo, co plik skrótu systemu Windows , który jest zwykłym plikiem. Ten ostatni może być utworzony na dowolnym systemie plików (takim jak wcześniejszy FAT32 ), może zawierać metadane (takie jak ikona wyświetlana podczas przeglądania skrótu w Eksploratorze Windows ) i nie jest przezroczysty dla aplikacji.

Historia

Dowiązania symboliczne do katalogów lub woluminów, zwane punktami połączeń i punktami montowania, zostały wprowadzone w systemie NTFS 3.0, który jest dostarczany z systemem Windows 2000. Od NTFS 3.1 można tworzyć dowiązania symboliczne dla dowolnego rodzaju obiektu systemu plików. NTFS 3.1 został wprowadzony wraz z Windows XP , ale funkcjonalność nie została udostępniona (poprzez ntfs.sys) aplikacjom trybu użytkownika. Sterowniki filtrów innych firm – takie jak senablesterownik open source Masatoshi Kimury – można jednak zainstalować, aby funkcja była dostępna również w trybie użytkownika. Plik ntfs.sys wydany w systemie Windows Vista domyślnie udostępnia tę funkcję aplikacjom trybu użytkownika.

Od NTFS 3.1 dowiązanie symboliczne może również wskazywać na plik lub zdalną ścieżkę sieciową SMB . Podczas gdy punkty połączenia NTFS obsługują tylko ścieżki bezwzględne na dyskach lokalnych, dowiązania symboliczne NTFS umożliwiają łączenie przy użyciu ścieżek względnych. Ponadto implementacja dowiązania symbolicznego NTFS zapewnia pełną obsługę dowiązań między systemami plików. Jednak funkcja umożliwiająca dowiązania symboliczne między hostami wymaga, aby system zdalny również je obsługiwał, co skutecznie ogranicza ich obsługę do systemu Windows Vista i nowszych systemów operacyjnych Windows.

Ograniczenia i wady

Domyślne ustawienia zabezpieczeń w systemie Windows Vista/ Windows 7 uniemożliwiają administratorom bez wyższych uprawnień i wszystkim osobom niebędącym administratorami tworzenie dowiązań symbolicznych, ale nie połączeń. To zachowanie można zmienić, uruchamiając plik „secpol.msc” w konsoli zarządzania zasadami zabezpieczeń lokalnych (w: Ustawienia zabezpieczeń\Zasady lokalne\Przypisywanie praw użytkownika\Utwórz dowiązania symboliczne). Można to obejść, uruchamiając cmd.exe z opcją Uruchom jako administrator lub runaspoleceniem. Począwszy od wersji 14972 Insiders systemu Windows 10, wymóg dotyczący podwyższonych uprawnień administratora został usunięty w „Trybie programisty” systemu Windows, umożliwiając tworzenie dowiązań symbolicznych bez konieczności podnoszenia poziomu konsoli jako administrator. Na poziomie API SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATEw tym celu dostarczana jest flaga.

Pliki bez łączenia

Ani proces uruchamiania systemu Windows NT, ani proces uruchamiania systemu Windows Vista nie obsługują punktów połączenia, więc niemożliwe jest przekierowanie niektórych folderów systemowych:

  • \Windows
  • \Windows\System32
  • \Windows\Config

Możliwe jest jednak przekierowanie niekrytycznych folderów:

  • \Użytkownicy
  • \Dokumenty i ustawienia
  • \Pliki programów
  • \Pliki programów (x86)

Tworzenie skrzyżowań dla \Users i \ProgramData wskazujące na inny dysk nie jest zalecane, ponieważ przerywa aktualizacje i aplikacje Windows Store.

Tworzenie połączeń dla \Users, \ProgramData, „\Program Files” lub „\Program Files (x86)” wskazujące na inne lokalizacje przerywa instalację lub aktualizację systemu Windows.

Tworzenie połączeń dla „\Program Files” lub „\Program Files (x86)” wskazujących na inny dysk powoduje przerwanie obsługi opartej na komponentach systemu Windows, która łączy pliki ze swojego repozytorium \Windows\SxS do ich katalogu instalacyjnego.

Przykłady użycia

Wbudowane zastosowania

  • Windows Component Store ( WinSxS ) używa twardych łączy do śledzenia różnych wersji bibliotek DLL przechowywanych na dysku twardym.
  • Dowiązania symboliczne znajdują się w systemie Windows Server 2008 do \Users\All Users\ -> \ProgramData\przekierowania (w instalacji podstawowej).

Przekierowanie programu

Ustawiając punkt węzłowy, który wskazuje na katalog zawierający konkretną wersję oprogramowania, może być możliwe dodanie kolejnej wersji oprogramowania i przekierowanie punktu węzłowego do żądanej wersji.

Oszczędzanie miejsca na dysku

Zawartość połączenia prawie nie zajmuje miejsca na dysku (wskazuje po prostu na oryginalny katalog). Jeśli potrzebujesz mieć wiele punktów wejścia do dużego katalogu, punkty węzłowe będą dobrze służyć temu celowi. Punktów skrzyżowań nie należy mylić z kopią czegoś, ponieważ skrzyżowania po prostu wskazują na oryginał. Jeśli katalogi muszą być modyfikowane oddzielnie, nie można użyć przyłączenia, ponieważ nie zapewnia ono odrębnej kopii katalogu lub znajdujących się w nich plików.

Podobnie dowiązania symboliczne i dowiązania twarde są przydatne do łączenia zawartości poszczególnych plików.

Omijanie predefiniowanych ścieżek

Ponieważ ponowna instalacja systemu Windows (lub instalacja nowej wersji) często wymaga usunięcia zawartości dysku C:, korzystne jest utworzenie wielu partycji, aby podczas instalacji wystarczyło usunąć tylko jedną partycję. Jednak niektóre programy nie pozwalają użytkownikowi wybrać katalogu instalacyjnego lub zainstalować niektórych swoich plików na dysku C:, nawet jeśli są zainstalowane na innym dysku. Tworząc punkt połączenia, można nakłonić program do zainstalowania w innym katalogu.

Zagrożenia odroczonego unieważnienia celu

Poważne zagrożenia czają się w korzystaniu ze schematów łączy twardych, które:

  • zawierać łącza odwołujące się do ich własnych folderów nadrzędnych, takie jak tworzenie stałego łącza, X:\path\to\parentktóre wskazuje albo X:\path\lub X:\path\to\, albo
  • określić cele, używając liter dysków woluminów, takich jak X:, in X:\some\path\.

Problem w pierwszym przypadku polega na tym, że tworzy ścieżki rekurencyjne, co dodatkowo implikuje nieskończoną rekurencję w strukturze katalogów. Wprowadzając reentrancję, obecność jednego lub więcej połączeń katalogów zmienia strukturę systemu plików z prostego drzewa właściwego na graf skierowany , ale łączenie rekurencyjne dodatkowo komplikuje teoretyczny charakter grafu z acyklicznego na cykliczny. Ponieważ te same pliki i katalogi można teraz napotkać wieloma ścieżkami, aplikacje, które naiwnie przechodzą przez struktury rekurencyjne lub rekurencyjne, mogą dawać nieprawidłowe lub niespójne wyniki lub mogą nigdy się nie kończyć. Co gorsza, jeśli rekursywnie usuwają , takie programy mogą próbować usunąć rodzica katalogu, przez który aktualnie przechodzą.

Należy zauważyć, że oba wymienione powyżej warunki występują w systemie łączy twardych utworzonych na C:dysku w domyślnej konfiguracji systemu Windows. Na przykład każda instalacja systemu Windows 10 definiuje ścieżkę rekurencyjną:

C:\ProgramData\
C:\ProgramData\Application Data\
C:\ProgramData\Application Data\Application Data\
C:\ProgramData\Application Data\Application Data\Application Data\
C:\ProgramData\Application Data\Application Data\Application Data\Application Data\
C:\ProgramData\Application Data\Application Data\Application Data\Application Data\Application Data\ ...

Każda dodatkowa nazwa ścieżki w tym pozornie nieskończonym zestawie jest rzeczywistą prawidłową ścieżką Windows, która odnosi się do tej samej lokalizacji. W praktyce nazwy ścieżek są ograniczone przez limit ścieżki DOS wynoszący 260 znaków (lub nowszy limit 32 767 znaków), ale obcięcie może spowodować niekompletne lub nieprawidłowe nazwy ścieżek i plików. Za każdym razem, gdy kopia instalacji systemu Windows jest archiwizowana z nienaruszonymi połączeniami katalogów na innym woluminie na tym samym lub co gorsza innym komputerze, zarchiwizowana kopia może nadal zawierać aktywne foldery z uruchomionej instalacji. Na przykład, w zależności od metody użytej do kopiowania, kopia zapasowa dysku Windows X:\archive\...będzie zawierać twardy link, X:\archive\Users\USERNAME\My Documentsktóry nadal wskazuje folder C:\Users\USERNAME\Documents\w bieżącej, aktywnej instalacji.

Druga forma odroczonego błędnego skierowania do celu, choć koncepcyjnie prostsza, może mieć poważniejsze konsekwencje. Kiedy samospójny wolumin lub struktura katalogów zawierająca twarde łącza, które używają nazw ścieżek opartych na literach dysku, jest kopiowana lub przenoszona do innego woluminu (lub gdy litera dysku woluminu jest ponownie przypisywana w inny sposób), takie łącza mogą już nie wskazywać do odpowiedniego celu w skopiowanej strukturze . Ponownie wyniki zależą od oprogramowania użytego do kopiowania; podczas gdy niektóre programy mogą interweniować, modyfikując wszelkie w pełni zaklasyfikowane dowiązania twarde w kopii w celu zachowania spójności strukturalnej, inne mogą ignorować, kopiować dokładnie, a nawet przechodzić do dowiązań twardych, kopiując ich zawartość.

Poważne problemy pojawiają się, gdy dowiązania twarde są kopiowane dokładnie w taki sposób, że w nowej kopii stają się dowiązaniami twardymi między woluminami, które nadal wskazują oryginalne pliki i foldery na woluminie źródłowym. Niezamierzone dowiązania twarde między woluminami, takie jak dowiązania twarde w folderze „archiwum”, które nadal wskazują lokalizacje na oryginalnym woluminie (zgodnie z literą dysku), to katastrofa, która może się wydarzyć. Na przykład usunięcie tego, co znacznie później zostanie uznane za nieużywany katalog archiwum na nieużywanym woluminie kopii zapasowej, może spowodować usunięcie bieżących, aktywnych danych użytkownika lub plików systemowych.

Środkiem zapobiegającym zagrożeniu literą dysku jest użycie składni ścieżki identyfikatora GUID woluminu zamiast ścieżek zawierających litery dysków woluminu podczas określania ścieżki docelowej dla przyłączenia katalogów. Rozważ na przykład utworzenie aliasu dla X:\Some\Other\Pathat X:\Some\Path\Foo:

X:\Some\Path>linkd Foo X:\Some\Other\Path

Jak opisano powyżej, jeśli struktura folderów zawierająca wynikowe łącze zostanie przeniesiona na dysk z literą dysku inną niż X:, lub jeśli litera zostanie zmieniona na X:samym dysku , zawartość danych w lokalizacji docelowej jest podatna na przypadkowe uszkodzenie lub złośliwe nadużycie . Bardziej odporna wersja tego łącza może częściowo zmniejszyć to ryzyko, odwołując się do woluminu docelowego za pomocą jego wartości identyfikatora GUID (którą można wykryć, uruchamiając fsutil volume listpolecenie).

X:\Some\Path>linkd Foo \\?\Volume{12345678-abcd-1234--abcdefghijkl}\Some\Other\Path

Dzięki temu połączenie pozostanie ważne, jeśli litera dysku X:zostanie w jakikolwiek sposób zmieniona.

Jeśli chodzi o proaktywny sposób unikania awarii połączeń katalogów, polecenie to dir /AL /S /B "X:\Some\Path"może być użyte do uzyskania, w celu dokładnej analizy przed dokonaniem jakichkolwiek nieodwracalnych zmian w systemie plików, listy wszystkich dowiązań twardych „poniżej” określonej lokalizacji systemu plików. Chociaż z definicji każde dowiązanie na liście wynikowej ma nazwę ścieżki, która zaczyna się od X:\Some\Path\, jeśli którykolwiek z tych dowiązań twardych zawiera cel, który nie jest objęty przez X:\Some\Path, to określony zakres został zmieniony, a podany katalog początkowy nie jest w pełni- podsumowanie. W takim przypadku może być wskazana dodatkowa ostrożność, ponieważ określony katalog zawiera pliki i katalogi, które znajdują się na innych woluminach fizycznych lub których własne przejście nadrzędne do katalogu głównego nie zawiera określonego katalogu.

Narzędzia wiersza poleceń

System Windows zawiera kilka narzędzi zdolnych do tworzenia i manipulowania łączami NTFS.

  • PowerShell :New-Item cmdlet z Windows PowerShell , które można utworzyć puste pliki, foldery, skrzyżowań i dowiązania twarde. W PowerShell 5.0 i nowszych może również tworzyć dowiązania symboliczne. PoleceniacmdletGet-ItemiGet-ChildItemmogą być używane do odpytywania obiektów systemu plików, a jeśli są to łącza NTFS, do znajdowania informacji na ich temat. PolecenieRemove-Itemcmdlet może usunąć wymienione elementy, chociaż odnotowano błąd uniemożliwiający prawidłowe działanie tego polecenia cmdlet.
  • Wiersz polecenia systemu Windows : począwszy od systemu Windows Vista i Windows Server 2008,mklinkpolecenie wewnętrzne może tworzyć połączenia, dowiązania twarde i dowiązania symboliczne. To polecenie jest również dostępne w ReactOS . Ponadto czcigodnedirpolecenie może wyświetlać i filtrować punkty połączeń za pomocą/aLprzełącznika. Na koniecrdpolecenie (znane również jakormdir) może usuwać punkty węzłowe.
  • fsutil.exe: narzędzie wiersza polecenia wprowadzone w systemie Windows 2000 . Jego hardlinkpodkomenda może tworzyć dowiązania twarde lub wyświetlać dowiązania twarde skojarzone z plikiem. Inne polecenie podrzędne, reparsepoint, może wysyłać zapytania lub usuwać punkty ponownej analizy , obiekty systemu plików, które tworzą punkty połączenia, dowiązania stałe i dowiązania symboliczne.

Ponadto poniższe narzędzia mogą tworzyć łącza NTFS, nawet jeśli nie są dostarczane z systemem Windows.

  • z łączem: Jest to składnik zestawu Resource Kit dla systemów Windows 2000 i Windows Server 2003 . Może tworzyć punkty węzłowe.
  • złącze: bezpłatne narzędzie wiersza polecenia firmy Microsoft, które może tworzyć lub usuwać złącza.
  • PowerShell Community Extensions (PSCX): Hostowany w Microsoft PowerShell Gallery, ten moduł dodaje kilka poleceń cmdlet do obsługi łączy NTFS, w tym: New-Hardlink, New-Junction, Get-ReparsePoint, Remove-ReparsePoint i New-Symlink.

Pszczoła

Aby utworzyć dowiązania twarde, aplikacje mogą używać CreateHardLink () funkcji Windows API . Wszystkie wersje rodziny Windows NT mogą używać GetFileInformationByHandle()do określania liczby twardych łączy skojarzonych z plikiem. Z wpisem MFT może być powiązanych do 1024 łączy. Podobnie funkcja CreateSymbolicLink() może tworzyć dowiązania symboliczne. Połączenia są bardziej złożone w tworzeniu. Wymagają ręcznego uzupełnienia informacji o punkcie naprawy . Przykładowy kod znajduje się w libuv . Połączenia są definiowane tylko dla katalogów: chociaż interfejs API nie zawodzi, gdy tworzy się połączenie wskazujące na plik, połączenie nie zostanie pomyślnie zinterpretowane, gdy zostanie użyte później.

Połączenia i dowiązania symboliczne, nawet te wskazujące na katalogi, można usunąć za pomocą pNtSetInformationFile. Implementacja Libuv w unlinksystemie Windows demonstruje to zastosowanie. Alternatywnie System.IO.Directory.Delete()działa na nich również metoda .NET .

Inne właściwości

Dowiązania symboliczne mogą wskazywać na nieistniejące cele, ponieważ system operacyjny nie sprawdza, czy cel istnieje.

Ograniczenia

Dowiązania symboliczne nie działają przy starcie, więc niemożliwe jest przekierowanie np.:

  • hiberfil.sys
  • \Windows
  • \Windows\system32
  • \Windows\system32\Config

Instalator Windows nie obsługuje w pełni dowiązań symbolicznych. Przekierowany \Windows\Installer spowoduje, że większość instalatorów systemu Windows opartych na msi zakończy się niepowodzeniem z błędem 2755 i/lub błędem 1632.

Niemniej jednak możliwe jest przekierowanie:

  • \Dokumenty i ustawienia
  • \Dane programu
  • \Pliki programów
  • \Pliki programów (x86)
  • \Użytkownicy

Tworzenie dowiązań symbolicznych dla \Users i \ProgramData wskazujących na inny dysk nie jest zalecane, ponieważ przerywa aktualizacje i aplikacje Windows Store.

Tworzenie dowiązań symbolicznych dla \Users, \ProgramData, "\Program Files" lub "\Program Files (x86)" wskazujących na inne lokalizacje przerywa instalację lub. aktualizacja systemu Windows.

Tworzenie dowiązań symbolicznych dla „\Program Files” lub „\Program Files (x86)” wskazujących na inny dysk powoduje przerwanie obsługi opartej na komponentach systemu Windows, która powoduje trwałe dowiązanie plików ze swojego repozytorium \Windows\WinSxS do ich katalogu instalacyjnego.

Obsługa dowiązań symbolicznych w systemie Windows XP

Ponieważ system Windows XP używa tej samej wersji formatu NTFS, co nowsze wydania, możliwe jest włączenie w nim obsługi dowiązań symbolicznych. Do korzystania z dowiązań symbolicznych NTFS w systemach Windows 2000 i XP istnieje sterownik innej firmy, który instaluje się jako filtr systemu plików.

Zobacz też

Bibliografia

Linki zewnętrzne