Komut İstemi'ni yerinde yükselten bir komut var mı?


61

* Nix sistemlerinde şöyle bir kök kabuğu elde edebilirsiniz:

$ su # or 'sudo -s'
#

Kök kabuğu aynı terminal içinde yerine yerleştirilir.

Windows Komut İstemi'nde benzer, yerinde bir yükseltme yapan bir şey bulmaya çalışıyorum. Başka bir deyişle, yeni bir pencere açmamalı veya UAC istemlerini görüntülememelidir. Şimdiye kadar, UAC'yi atlayan zamanlanmış bir görev yapmayı başardım, ancak yükseltilmiş Komut İstemi penceresi yerinde görünmüyor.

Windows için yeni bir pencere oluşturmadan yerinde yükseltme yapan benzer bir komut var mı?


31
su / sudo -s'nin aslında yeni bir kabuk işlemi başlattığını unutmayın. Sadece yükseltilmiş işlemler aynı terminale bağlı, bu yüzden yerinde yükselmiş gibi görünüyorlar.
Lie Ryan,

“Yeni bir pencere açmamalı veya UAC bilgi istemlerini göstermemelidir” Sadece grafiksel etkileşim gerektirmemesi gerektiğini mi söylüyorsunuz? Yoksa sorulmasını istemeyen hiç ? Örneğin, sudobazen bir parola sorar, ancak bunu bir metin arabirimiyle yapar. Nano sunucularının ( Uzak Masaüstü için varsayılan olarak bir GUI sunduğunu bile sanmıyorum) nasıl kullandığını merak ediyorum .
jpmc26

2
@ jpmc26 Metin arayüzündeki etkileşim tamam.
user2064000

@ jpmc26 Nano sunucuda UAC olup olmadığını merak ediyorum. Konteynırlar için optimize edilmiş olduğu göz önüne alındığında, çok kullanışlı gelmiyor. Sunucu Çekirdeği sürümlerinde de IIRC devre dışı bırakıldı. Yanlışlıkla etkinleştirdiyseniz, bir sürü sorun
yaşamaya başladınız

2
@ user2064000 UAC istemi, kullanıcının mevcut masaüstünde değil, Güvenli Masaüstünde (en azından Windows olmayan ikili dosyalar için varsayılan olarak) başlatılır. Biraz can sıkıcı olmasının yanı sıra, bu, UAC istemine müdahale eden diğer işlemlerin önlenmesi için tasarlanmıştır. Ayrıca, kimlik doğrulaması gerekliyse, bunun Güvenli Masaüstü'nde olması gerekir ve bazı yöneticiler, Windows'un parolayı istemediğini belirten başka bir işlem değil, parolayı aldığını kanıtlamak için bir Ctrl-Alt-Del dizisi de isteyebilir. Bu yüzden cmd penceresine bir şifre girmek muhtemelen Microsoft güvenlik perspektifinden uçmayacaktır.
Calchas

Yanıtlar:


65

TL; DR - Tek seçenek başka bir süreci ortaya çıkarmak. (Yeni cmd.exe.) Komut İstemi durumunda , daha yüksek izinlere sahip bir erişim belirteci ile yeni bir örnek başlatmak , her zaman yeni bir pencerenin oluşturulmasına neden olur.


Halen çalışan bir işleme ek izinler vermek mümkün değildir .

Yönetici haklarına sahip bir kullanıcı, Kullanıcı Hesabı Denetimi (UAC) etkin olan bir Windows makinesinde oturum açtığında, iki ayrı erişim simgesi oluşturulur :

  1. Tam yönetici erişimine sahip bir ve
  2. Standart kullanıcı erişimine sahip ikinci bir "filtre uygulanmış jeton"

Bir işlem (örneğin CMD.EXE) yaratıldığı sırada, bu iki erişim belirteçinden birine atanır . İşlem Yönetici olarak "yükseltilmiş" olarak çalıştırılırsa, filtrelenmemiş erişim belirteci kullanılır. İşlem yönetici haklarına sahip değilse, filtrelenmiş, standart kullanıcı belirteci kullanılır.

Bir işlem oluşturulduktan sonra erişim kartını değiştirmek mümkün değildir . 1 Windows Masaüstü için bu MSDN Application Security iş parçasında , kendisini Windows Çekirdek Ekibinin bir üyesi olarak tanımlayan bir poster:

NT çekirdeği, bir işlem başladığında bir kez token anahtarlamaya izin vermek için tasarlanmamıştır. Bunun nedeni, tutamaçların, vb. Eski bir güvenlik bağlamında açılmış olmasının, uçak içi işlemlerin tutarsız güvenlik bağlamları vb. Kullanabilmeleridir. Ancak, bu Vista kadar zorlanmadı . [vurgu madeni] (Kaynak sayesinde için @Ben N )

Not: Kullanıcı Hesabı Denetimi, Windows Vista'nın piyasaya sürülmesiyle tanıtıldı .

Bu Süper Kullanıcı cevabı , aynı şeyi doğrulayan iki ek kaynağı gösterir:

Bu nedenle, Komut İstemi'ni veya başka bir işlemi yerinde yükseltmek mümkün değildir. Tek seçenek, yeni bir erişim belirteciyle başka bir işlemi başlatmaktır (istenirse orijinal sürecin başka bir örneği olabilir). Komut İstemi durumunda, daha yüksek izinlere sahip bir erişim belirteci ile yeni bir örnek başlatmak her zaman yeni bir pencerenin oluşmasına neden olur ve UAC istemleri sistemde etkinleştirilmişse, bunlar da tetiklenir.


1 Mevcut bir erişim belirtecindeki yetkileri AdjustTokenPrivileges işleviyle, ancak MSDN’ye göre ayarlayabilirsiniz :

AdjustTokenPrivileges işlevi, erişim belirtecine yeni ayrıcalıklar ekleyemez. Yalnızca belirtecin mevcut ayrıcalıklarını etkinleştirebilir veya devre dışı bırakabilir.


19

Hevesli bir kullanıcı TCC-LEolmama rağmen, yeni programlara ihtiyaç duymayan bir çözüm var: -

  • cmdYönetici olarak başla .
  • Bu sizi başlatmalı %SystemRoot%\system32\- eğer değilse, cdorada.
  • copy cmd.exe cmdadmin.exe(veya seçtiğiniz bir isim su.exe).
  • Şimdi Explorer'ı çalıştırın ve bulun cmdadmin.exe.
  • Sağ tıklayın ve Özellikler seçeneğini seçin .
  • Gelen Uyumluluk sekmesi yönetici olarak çalıştırmak seçin (veya tüm kullanıcılar için ayarlayın).

Şimdi cmdadminsizin suya da sudo: Yönetici ayrıcalıklarına sahip bir kabuk vermek için parametreler olmadan başlatabilir ya da /cbu modda tek bir komut çalıştırmak için birlikte çalıştırabilirsiniz. Politikalarınıza bağlı olarak, onaylamanız istenebilir veya olmayabilir.

Bunun her zaman yeni bir pencere açacağına dikkat edin (TCC çözümü gibi start /elevated ...): Bir GUI uygulaması için bu beklenir, ancak bir komut satırı programı için, çıktıyı görme şansı vermek için /kyerine kullanmak isteyebilirsiniz. /c; veya çalışma sudo.cmddizginizin & pausesonuna denk gelen bir toplu iş dosyası ( belki de?) üzerinden çalıştırabilirsiniz.

Her iki durumda da, aynı suya da aynı değil sudo, ancak alacağınız en yakın şey. Windows düzenini manuel olarak ayarlayarak, yeni pencere doğrudan alttan oluşturulabilir ve orijinaline dayanabilir.


Bu muhtemelen OP’nin davranışına en yakın olanıdır sudo; ihmal edilmek üzere yeni bir pencere / süreçle uğraşmak zorunda kaldığına dair ihtar. Güvenlik açısından muhtemelen en iyi fikir olmasa da, tüm UAC istemlerinin devre dışı bırakılması, yükseltilmiş işlem başlatıldığında UAC istemine yanıt vermek zorunda kalmamasını sağlar.
Twisty Impersonator

@Twisty - Yorumunuz için teşekkür ederiz. Güvenlik etkilerinin farkındaydım, ancak hesabın yönetici olarak çalıştırılmasına izin verdiği orijinal öncülünden daha kötü değiller . Her çağrıldığında sürekli hatırlatma isteyip istemediğine karar vermeyi uygulayan herkesin görevidir.
AFH

2
Sizin yararınıza değil, diğer okuyucular için güvenlik etkilerinden bahsetmiyorum. Ancak UAC istemlerini devre dışı bırakmanın yönetici olarak çalışmaktan daha kötü olmadığını kabul etmiyorum. UAC istemleri , Yönetici olarak giriş yapmış bir kullanıcının istenmeyen işlem haklarını vermesini engelleyebilir. İstenmeden kullanıcı bu fırsatı kaybeder.
Twisty Impersonator

@Twisty - Sadece öyle. Benim cevabım benzer sebeplerden geldi. Tekrar teşekkürler.
AFH

1
cmd.exe'yi kopyalamak yerine, ona bir bağlantı oluşturun. Bu şekilde, eğer pencereler güncellerse ve güvenlik hatalarını yayarsa, eski bir versiyon çalıştırmazsınızmklink cmdadmin.exe cmd.exe
Josef

11

Komut İstemi'ni yerinde yükselten bir komut var mı?

Oldukça uygunsuz bir yol var:

powershell -Command "Start-Process 'cmd.exe' -Verb runAs"

Daha iyi yollar vardı ama Microsoft onları kapattı. Elbette, kollarınızı her zaman toplayabilir ve sudosize verdiğim kaynak kodla eşdeğer bir senaryo yazabilirsiniz .

Başka bir deyişle, yeni bir pencere açmamalı veya UAC istemlerini görüntülememelidir.

Küfür! Onu tehlikede yak! ;) Kenara şaka, hayır. Yok. Bu bir hata ve güvenlik açığı olurdu. Microsoft, yükseltilmiş ve standart sürecin mümkün olduğunca az ortak olmasını sağlamak için açık bir çaba sarf etti.

İki arka ucu (bir standart ve bir yükseltilmiş) ve her ikisi için bir grafik ön uç düşünen Akıllı çocuklar, Oturum 0 İzolasyonunu okumalıdır .


2

Windows için yeni bir pencere oluşturmadan yerinde yükseltme yapan benzer bir komut var mı?

İçinde böyle bir komut yok. Bunu ispat etmeme rağmen, bu sorunu çözmek için fazladan bir yazılım / kod kullanmanın birçok yolunu gördüğümden inanıyorum.

Başka bir deyişle, yeni bir pencere açmamalı veya UAC istemlerini görüntülememelidir.

Unut gitsin. Kesinlikle unut gitsin. Bu UAC'nin tasarımına aykırıdır. Bunu başarabilirsen, temel bir güvenlik sürecini çiğniyorsun. Microsoft'un bu sorunu çözmek için ne tür bir işlem yapabileceğini öğrendikten ve düzelttikten sonra bir yamanın çözülmesini bekleyin.

UAC istemlerinden kaçınmanın çözümü, başlamak için yüksek bir yüksekliğe sahip olmaktır. Yeterli yetkilendirilmişseniz UAC sizi rahatsız etmemelidir. Daha düşük bir yükseklikle başlarsanız (bu genellikle güvenlik avantajları için önerilir) ve sonra daha yüksek bir yükseklik gerektiren bir şey yapmaya çalışırsanız, UAC etkileşimini bekleyin.


UAC istemleri zamanlanmış bir görevle zaten atlanabilir; Yeni bir komut istemi penceresi açmak yerine, yerinde yükseltme yapan bir şey arıyorum.
user2064000

Bunu yaparsanız, UAC gereksinimlerini karşılamadan Zamanlanmış Görevi gerçekten ayarlayabilir misiniz? Yumurtlama gelince, ben fark etmiş çünkü böylece sanmıyoruz söylüyorum tüm şimdiye kadar gördüğüm yeni bir süreç başlıyor kapsamıştır yükselen çözümlerin. Kurulum programları başladıktan sonra UAC için isteyebileceği için teknik olarak yeni bir işlem başlatmadan yükseltme yapılabileceğini düşünüyorum, ancak henüz kolayca bir toplu iş dosyasına kolayca alınabilen herhangi bir hazır çözüm görmüş olduğumu hatırlamıyorum.
TOOGAM

Aslında; Zamanlanmış Görevler, UAC'yi tamamen yener. Yükseltildikten sonra, servisler üzerinden SİSTEM'e yükseltebilir ve ardından orijinal cmd.exe işleminde değiştirme belirtecini kullanabilirsiniz.
Joshua

Temel işi yapan bir miktar resmi PowerToy senaryosu var; elevate cmdUAC istemiyle yeni bir komut istemi penceresi açmak için yazabilirsiniz (sitenin içerik menüsü komutları da vardır!). Ya da elbette, sadece Ctrl + Shift + Yapabilirsiniz herhangi bir mevcut komut istemi penceresinin görev çubuğu simgesine tıklayın - aynı şeyi yapma eğilimindeyim. (OP'nin istediği şey olmadığını biliyorum, ancak OP'nin istediği şey tasarım tarafından engellendi.)
Miral

2

İstediğiniz şey Windows'ta imkansız çünkü bu kavramı desteklemiyor. Daha yüksek izinlere sahip yeni bir işlem başlatmanız gerekir .

İşlemleri komut satırından yükseltmek için nircmd kullanıyorum . Emriniz olurdunircmdc elevate cmd


2

Bu soruyu gördüm ve basit bir çözüm buldum. Bu, rsudonormal bir CMD penceresinden yükseltilmiş komutları çalıştıran küçük bir yardımcı programdır .

Not: Bir UAC istemi görünecektir . Bunu saklamak mümkün değil, sadece UAC'nin tasarlandığı yol.

Usage:
  rsudo.exe "[command]"

İndir [İndir çalışmıyor, yakında güncellenecek]

Not: Komutlar yeni bir pencerede çalıştırılır. Çıktıyı görmek istiyorsanız,rsudo.exe "pause && [command]"


Olması gerekmiyor rsudo.exe "[command] && pause"mu?

@ fleet Hayır, pausedaha sonra ilk önce bir hatanın çalıştırılmasına neden olur
rahuldottech

Rahul, teşekkürler! Kaynak kodunuz var mı? ;) (Belki de sitenizde yanlış yere bakıyordum.)
cxw 20

@cwz emin! Eve ulaştığımda düzenleyeceğim ve bir blog yazısı ekleyeceğim: D
rahuldottech

0

Bu çok garip.

Aynı mevcut terminali kullanacak olan ancak aslında tamamen farklı bir terminal olan kendi bilgisayarınıza bir ssh yapmayı deneyebilirsiniz.

İşe yarar, ama muhtemelen istediğin şey değil

Diğerleri olsa yararlı bulabilir.


-1

JPSOFT Take Command komut istemi TCC / LE'yi deneyin . 32 ve 64 bit sürümlerinde gelir ve daha fazla işlevsellik istemediğiniz sürece ücretsizdir.

Git https://jpsoft.com/ ve İndirme tıklayın ve ne istediğinizi seçin.

TCC / LE, tam yönetici ayrıcalıklarına sahip programı başlatan bir BAŞLATMA / ELDİVENE sahiptir. (Yalnızca Windows Vista veya sonraki sürümleri.)


1
Bunun soru ile ilgisi nedir?
user2064000

@DavidGrainger, / yükseltilmiş anahtarın hala UAC'yi atlamama ve yerinde yükseltme yapmama izin vermediğini gösteriyor (ayrıntılar için soruya bakın). Bir şey mi eksik?
user2064000

Bu, Windows Komut İstemi'nin yerine geçmiştir. Ayrıca, yükseltilmiş şekilde başlatmak, yerleşik Komut İstemi yükseltilmiş başlatmaktan farklı değildir.
Twisty Impersonator

UAC ayarlarını "Asla bildirimde bulunma" olarak değiştirmenin tek yolu UAC bildirimi açıldığında, "Daha fazla ayrıntı göster" bağlantısını tıklayıp "Bu bildirimin ne zaman görünmesi gerektiğini göster" bağlantısını seçin. İşe yarayan ayarı seçin. Tamamladığınızda geri değiştirmek isteyebilirsiniz, bu yüzden istenmeyen eylemler tarafından yakalanır. bu, Windows ayarlarında gerçekleştirilebilir.
David Grainger

TCC / LE de birçok şey yapıyor. Hiçbir zaman UAC ile denedim ve sonra "Başlat / Yükseltilmiş / PGM" C: \ Program Files \ IrfanView \ i_view64.exe "/ thumbs" 'ı Yükseltilmiş bir program açmak için kullandım.
David Grainger
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.