Pochodząc z Linuksa / Uniksa, nie rozumiem, jak UAC działa w systemie Windows.
Słyszałem, że UAC działa jak sudo
. Moja aplikacja Linux może wykonać inną pracę przed wywołaniem sudo
.
Ale w systemie Windows wydaje się, że wszystkie aplikacje, które wymagają potwierdzenia UAC, muszą uzyskać UAC, zanim w ogóle wykonają jakąkolwiek pracę! Uruchamiam aplikację, prosi mnie o potwierdzenie UAC i odmawiam - aplikacja po prostu się nie uruchomi.
Czy UAC tak działa?
sudo su
./run_app
Zamiast:
./do_work1
sudo su
./du_work2
Dzięki za świetną odpowiedź dla wszystkich!
W systemie Windows monit UAC jest uruchamiany, gdy próbujesz uruchomić plik wykonywalny oznaczony jako wymagający podniesienia uprawnień w manifeście osadzonym w pliku i nie masz jeszcze podniesionego poziomu. Zachowanie jest bardziej podobne do setuid niż su, ponieważ jest to plik, a nie polecenie informujące system operacyjny, że plik wykonywalny ma być uruchamiany z różnymi poświadczeniami.
źródło
To dlatego, że są różne, jasne i proste. UAC mógł być wdrożony jak
sudo
, ale tak nie było.Można to traktować jako analogię do ochrony sieci.
sudo
przypomina to, gdy program żąda dostępu do sieci, a zapora wyświetla monit o jego przyznanie lub nie. Możesz powiedzieć tak, a program otworzy gniazdo lub możesz powiedzieć nie i narzeka na brak połączenia i robi wszystko, co może zrobić bez dostępu do sieci (niektóre źle zaprojektowane programy faktycznie ulegają awarii). Na przykład:Kontrola konta użytkownika przypomina ostrzeżenie, które pojawia się podczas próby otwarcia pliku pobranego na wolumin NTFS. Windows ostrzega przed potencjalnym złem i pyta, czy chcesz go uruchomić (w ogóle), czy nie. To operacja „wszystko albo nic”; nie możesz ufać tylko części programu, a nie innym. Na przykład:
Musisz pamiętać, że w przeciwieństwie do Linuksa, który jest bardziej ukierunkowany na zaawansowanych użytkowników i aplikacje, system Windows został zaprojektowany tak, aby był przyjazny dla jak największej liczby różnych użytkowników, więc uproszczenie bezpieczeństwa jest najważniejsze. Co więcej, ze względu na dużą powierzchnię narażenia, jest często celem szkodliwego oprogramowania, więc bardziej sensowne jest albo całkowicie zaufać programowi, albo wcale.
źródło
Nie znam do końca architektury linux, więc wybacz mi, jeśli popełniam błąd, ale rozumiem, że Linux i Windows wcale nie różnią się pod tym względem ...
Przykład ... Skrypt kopiujący, który wykonuje kopię normalnego pliku do niezabezpieczonej lokalizacji oraz plik próbujący skopiować do chronionej lokalizacji, a następnie normalną kopię ponownie.
Rozumiem, że w Linuksie aplikacja po prostu działa i próbuje wykonać akcję - jeśli nie ma uprawnień do wykonania tej akcji - zawiedzie tę akcję, ale będzie kontynuować. W powyższym przykładzie - podczas uruchamiania skryptu kopiowania w systemie Linux jako zwykły użytkownik, skopiuje zwykły plik, wyda pozwolenie i skopiuje drugi plik - jeśli zostanie uruchomiony z sudo, zrobi wszystkie trzy kopie.
Windows pod tym względem jest dokładnie taki sam - uruchomienie skryptu jako użytkownik nieadministracyjny po prostu skopiuje jeden, wyda pozwolenie na drugi i skopiuje następny. Z UAC będzie działać wszystkie trzy.
Różnica polega na tym, że wiele aplikacji Windows ma po prostu zestaw konfiguracji, aby domyślnie prosiły o podniesienie UAC i kończą / kończą się niepowodzeniem, jeśli go nie mają ... ale to staje się o wiele mniejsze.
źródło