Zawsze pracuję na koncie innym niż administrator na moim komputerze z systemem Windows. Czasami muszę zainstalować programy, które wymagają dostępu administratora. Ponieważ najczęściej używam wiersza polecenia systemu Windows, czy istnieje polecenie systemu Windows służące do zwiększania uprawnień, podobnie jak polecenie terminalu systemu Linux sudo
?
windows
command-line
privileges
ukanth
źródło
źródło
doskey sudo= runas /user:Administrator "cmd /k cd \"%cd%\" & $*"
wsudo
, Asudo
-jak narzędzie dla Windows dostępny jako pakiet Chocolatey.Odpowiedzi:
Komenda runas .
Po prostu biegnij:
aby uruchomić powłokę poleceń jako administrator
źródło
/noprofile
.Runas
po prostu uruchamia polecenia z innym zestawem poświadczeń. Mimo że twoje poświadczenia mają uprawnienia administratora, nie oznacza to, że wszystkie procesy z poświadczeniami działają jako administrator.Odkryłem dzisiaj Elevate, która „wykonuje polecenie z podniesieniem uprawnień UAC. Jest to przydatne do pracy w wierszach poleceń lub w plikach wsadowych”. To nie to samo
sudo
, co zmienia wykonującego użytkownika na Administratora, ale jego składnia jest o wiele prostsza w użyciu niżrunas
i może zachować bieżący katalog, umożliwiając korzystanie ze ścieżek względnych.Celem Elevate nie jest obejście lub obejście UAC (Kontrola konta użytkownika), ale praca z nim. Tak długo, jak UAC jest włączony, w pewnym momencie procesu musi być jakiś monit . Jeśli chcesz całkowicie pozbyć się monitowania, musisz wyłączyć UAC .
Podwyższenie punktu bólu łagodzi eskalację konkretnego procesu z nieuprzywilejowanej powłoki, a następnie kontynuuje jak zwykle. Bez tego musisz uruchomić uprzywilejowany wiersz polecenia, klikając prawym przyciskiem myszy> „Uruchom jako administrator” , którego nie można łatwo wykonać skryptem, zanim spróbujesz wykonać uprzywilejowane polecenie.
źródło
%wheel ALL=(ALL) NOPASSWD: ALL
w sudo.@elevate %*
=> zysk!Możesz użyć polecenia runas, które jest podobne, lub możesz sprawdzić projekt sudo dla Windows w SourceForge, który dodaje polecenie sudo.
Różnica jest subtelna:
Załóżmy, że masz dwóch użytkowników. Bob jest normalnym użytkownikiem, a James jest administratorem.
Jeśli zalogujesz się jako Bob i użyjesz polecenia „runas james acommand”, polecenie zostanie uruchomione tak, jakby zostało uruchomione przez Jamesa, więc uzyskuje dostęp do ustawień użytkownika Jamesa, a wszelkie zmiany użytkownika przechodzą do folderów James My Documents i ustawień itp. Więc jeśli instalują aplikację, powiedzmy, zostanie ona zainstalowana jako James, a nie jako Bob.
Z drugiej strony, jeśli Bob wykona polecenie „sudo acommand”, polecenie jest nadal uruchamiane jako Bob, ale z podwyższonymi uprawnieniami - podobnie jak polecenie sudo w systemie Linux. Aby uniemożliwić dowolnemu użytkownikowi możliwość sudo, musisz zdefiniować grupę użytkowników sudoers, która zawiera listę zwykłych użytkowników, którzy mają uprawnienia do podniesienia uprawnień przy użyciu sudo. Użytkownicy nadal muszą podać poświadczenia przed podniesieniem uprawnień.
Czasami różnica nie jest ważna, czasem jest i uważam, że oba polecenia mogą być przydatne.
źródło
~/.themes
wówczas aplikacja sudo nie będzie mogła uzyskać dostępu do tego motywu, ponieważ go nie ma/home/root/.themes
i użyje domyślnego brzydkiego motywu GTK.Możesz także użyć narzędzia PowerToys do skryptu .
źródło
Jeśli jesteś gotowy, aby przejść na alternatywne konsole, jest ConEmu (jestem autorem). Jedna z jego funkcji - możliwość uruchamiania zarówno podwyższonych, jak i niewniesionych zakładek w jednym oknie ConEmu. Karty można również uruchamiać przy użyciu różnych danych uwierzytelniających.
Dla wygody użytkownika dostępny jest plik wsadowy csudo.cmd (który można łatwo dostosować do bash). Przeczytaj pełny opis na wiki projektu . W skrócie, na przykład po uruchomieniu polecenia z istniejącej niewniesionej karty
ConEmu uruchomi się
dism
w nowej podwyższonej konsoli / karcie (z poprzedzającym monitem UAC w Vista lub polem logowania w XP).Domyślnie
csudo
uruchamia nową konsolę w podziale (mogą być zmiany poprzez edycjęcsudo.cmd
zawartości).Oczywiście możesz zmienić jego nazwę,
sudo.cmd
jeśli lubiszsudo
słowo „klasyczne” .źródło
press enter or esc to exit
wiadomość.sudo
polecenia! Idziesz w złym kierunku.Szybka metoda:
Trzy kroki, aby dodać sudo.
Otwórz PowerShell.
Skopiuj następujący skrypt (Ctrl + C) i wklej go w PowerShell (Alt + Spacja + E + P):
To na stałe włączy
sudo
polecenie w PowerShell.Stosowanie:
Przykłady:
Długa metoda nauki:
Uwaga: Zmiksowałem skrypt z obu artykułów, aby utworzyć wyżej wspomniany skrypt. Zamiast wkleić ręcznie skrypt w notatniku dodałem
Out-File
instrukcje do zapisaniaps1
i$profile
pliki ze skryptu.Wskazówka: jeśli nie jesteś wielkim fanem wyskakujących okienek UAC (takich jak ja), zapisz następujące w pliku * .reg i uruchom go:
źródło
. : File C:\Users\User\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1 cannot be loaded because running scripts is disabled on this system.
set-executionpolicy remotesigned
. Inne opcjeremotesigned
są opisane w oficjalnych dokumentach .powershell -c start -verb runas program.exe
funkcjonalności. Pamiętaj również, że nie możesz podwyższyć w ten sposób za pomocą monitu cmd (natywnie). Powershell to najlepsza opcja natywna.Jeśli robisz to w systemie Windows, oprócz polecenia Uruchom jako, jak wspomniano w kilku innych odpowiedziach, istnieją również sposoby wykonania tego za pomocą myszy.
Jeśli przytrzymasz Shiftklawisz i klikniesz prawym przyciskiem myszy większość plików wykonywalnych w systemie Windows, powinieneś zauważyć kilka bardziej zaawansowanych opcji. Jedną z nich jest
Run As...
opcja „ ” (myślę, że nazywa się „Run As Administrator
” od wersji Vista).Możesz również pobrać bardziej zaawansowaną wersję RunAs od Microsoft, o nazwie ShellRunAs , która ma ulepszenia w stosunku do wbudowanego polecenia RunAs, zarówno w trybie wiersza poleceń, jak i w trybie graficznym, w tym umożliwia zapisywanie poświadczeń konta
źródło
Jest do tego czekoladowy pakiet z wygodną nazwą sudo . Możesz zainstalować pakiet z Chocolatey za pomocą tego polecenia:
Następnie w dowolnej powłoce Windows / MS, której musisz użyć, możesz używać
sudo
zgodnie z oczekiwaniami.źródło
Surun to darmowa aplikacja typu open source, która pozwala niektórym programom działać z prawami administracyjnymi, bez podawania hasła bez zmiany rejestru użytkowników lub modyfikacji zmiennych środowiskowych.
Kiedy korzystałem z systemu Windows XP, ta aplikacja bardzo mi pomaga. Beta działa pod Windows 7.
źródło
Jak zapewne odkryłeś, runy pozwolą ci działać jako inny użytkownik, ale nie mogą wykonywać podniesienia uprawnień i nie przechodzą przez bieżące katalogi, zmienne środowiskowe ani długie wiersze poleceń.
Powłoka Hamilton C rozwiązuje to dzięki oryginalnemu su i sudo. su pozwala uruchomić polecenie jako inny użytkownik; sudo (właściwie alias do su) pozwala uruchomić polecenie podniesione. Możesz także zrobić jedno i drugie, mając podniesione uprawnienia jako inny użytkownik. Bieżące katalogi, zmienne środowiskowe i długie wiersze poleceń są przekazywane przez uzgadnianie pamięci współużytkowanej między su działającym w kontekście dzwoniącego a jego kopią działającą jako interludium z nowymi poświadczeniami, które następnie uruchamiają dziecko. Pełne ujawnienie: jestem autorem.
źródło
Działającym
sudo
zamiennikiemmintty
terminala Cygwin byłoby umieszczenie następującego skryptu w ścieżce użytkownika:Dla mnie jest to jedyna możliwa alternatywa, która podnosi uprawnienia programów takich jak
vim
lubcygrunsrv
podczas pracy w terminalu w systemie Windows.źródło
Ten skrypt wykonuje zadanie:
Zapisz go, a
sudo.cmd
następnie dodaj do ŚCIEŻKIUwaga:
runas
w tym kontekście oznacza „Uruchom jako administrator”, a nie „Uruchom jako inny użytkownik”Wykonano stąd i poddano nieznacznej edycji w celu usunięcia nagłówka cscript.exe z wyjścia
źródło
Moim zdaniem najprostszym rozwiązaniem jest wykorzystanie PowerShell do wykonania pracy, która jest przenośna i zachęci użytkownika do korzystania z UAC.
Możesz po prostu uruchomić to w dowolnej powłoce (cmd lub PowerShell)
źródło
Poniższy skrypt VBS załatwia sprawę. Zakładam to
C:\Windows\System32
Przykład użycia w wierszu polecenia
sudo net start service
źródło