Dlaczego Python dla Windows nie jest zainstalowany w% PROGRAMFILES% („C: \ Program Files”)?

Odpowiedzi:

22

Najwyraźniej jest to przyczyną 7-letniej dyskusji między programistami Python.

Autorzy podali następujące uzasadnienie:

Autor: Tim Peters (tim.peters) * (osoba odpowiedzialna za Python) Data: 22.03.2006, 20:27

Dawno temu Python instalował się (domyślnie) w „Program Files”. Zmieniłem to, z powodu niekończących się problemów tworzonych przez cholernie osadzoną przestrzeń i rzadszych, ale subtelniejszych problemów, ponieważ „Program Files” nie są nazwami DOSish 8.3. Ogólnie nadal uważam, że to dobra zmiana.

Zauważ, że w przeciwieństwie do większości aplikacji Windows (opartych na GUI), języki programowania są przeznaczone do intensywnego używania z linii poleceń, wywoływane przez skrypty i tak dalej. To sprawia, że ​​przestrzeń na ścieżce jest nieskończenie podatna na błędy. W WinXP Pro zauważyłem, że MS nadal ostrożnie umieszcza własne narzędzia wiersza polecenia / skryptu (sort.exe, ipconfig.exe, cscript.exe, ..., nawet notepad.exe) pod czystym DOSish 8.3 bez miejsca ścieżki ;-)


Poza tym : Ze względu na możliwość eskalacji uprawnień, użycie C: \ zamiast C: \ Program Files \ może stanowić zagrożenie bezpieczeństwa:

Autor: Mika Eloranta (mel) Data: 2005-09-07 21:34

Domyślny katalog docelowy instalacji, w którym Python instaluje się w systemie Windows, znajduje się bezpośrednio w katalogu głównym dysku systemowego (np. „C: \ python24”). Uprawnienia do plików i katalogów dziedziczone przez katalog python24 z katalogu głównego nie są wystarczająco bezpieczne do przechowywania plików binarnych aplikacji.

W swojej nieskończonej mądrości Microsoft zdecydował, że katalog główny dysku systemowego powinien umożliwiać zwykłym użytkownikom (niebędącym administratorami) tworzenie katalogów i plików. Ten zestaw uprawnień jest dziedziczony przez katalog python, gdy jest tworzony w domyślnej lokalizacji (tj. „C: \ python24” lub cokolwiek innego).

Jeśli chcesz zmodyfikować katalog Python, aby uniknąć omawianego ataku związanego z eskalacją uprawnień, powinna istnieć możliwość modyfikacji katalogu \ Python za pomocą icacls .

Chris
źródło
prawie nikt nie woła Pythona z pełną ścieżką. Prawidłowym sposobem jest umieszczenie jej w binfolderze %PATH%i nie będziesz już musiał zajmować się spacjami. I nie jest prawdą, że XP Pro ma swoje pliki wykonywalne z linii poleceń w ścieżkach DOS 8.3. Chociaż ich ścieżki na ogół nie mają spacji, wiele plików ma długość dłuższą niż 8 znaków, np.
Systeminfo.exe