Windows'ta bir uygulamanın UAC isteğini reddedersem neden çalışmaya devam etmiyor?


17

Bir Linux / Unix geçmişinden geldiğimde, UAC'nin Windows'da nasıl çalıştığını anlayamıyorum.

UAC'ın böyle çalıştığını duydum sudo. Linux uygulamam aramadan önce başka işler yapabilir sudo.

Ancak Windows'da, gerçek bir iş yapmadan önce UAC onayı gerektiren tüm uygulamaların UAC'ye sahip olması gerektiği anlaşılıyor! Bir uygulama çalıştırıyorum, bana UAC onayı istiyor ve reddediyorum - uygulama basitçe çalışmaz.

UAC böyle mi çalışıyor?

sudo su
./run_app

Ziyade:

./do_work1
sudo su
./du_work2

Herkesin harika cevabı için teşekkürler!

Yanıtlar:


12

Windows'a standart kullanıcı olarak oturum açarken, bir oturum açma oturumu oluşturulur ve yalnızca en temel ayrıcalıkları içeren bir belirteç atanır. Bu şekilde, yeni oturum açma oturumu, tüm sistemi etkileyecek değişiklikler yapamaz. Yöneticiler grubunda kullanıcı olarak oturum açarken iki ayrı simge atanır. İlk simge, genellikle bir yöneticiye verilen tüm ayrıcalıkları içerir ve ikincisi, standart bir kullanıcının alacağına benzer sınırlı bir işarettir. Windows Kabuğu da dahil olmak üzere kullanıcı uygulamaları daha sonra kısıtlı belirteçle başlatılır ve Yönetici hesabı altında bile ayrıcalık ortamının azalmasıyla sonuçlanır. Bir uygulama daha yüksek ayrıcalıklar istediğinde veya "Yönetici olarak çalıştır" tıklandığında, UAC onay ister ve onay verilirse,

Anladığım kadarıyla, bu son cümlenin anlamı, uygulama yüklenmeden önce UAC iletişim kutusunun sınırsız jetonla başlatılması için görüntülenmesi veya başkalarının standart kullanıcı ayrıcalıklarıyla başlatılması ve bazıları için yükseltilmiş ayrıcalıklara ihtiyaç duymasıdır. kullanıcının rızasını alması ve daha sonra yükseltilmiş haklarla çalışan yeni bir süreç ortaya çıkarması gerekir . Bir işlem başladığında atanan belirteç haklarını belirleyen şeydir. Bu simge daha sonra değiştirilemez, bu nedenle daha fazla hak gerekliyse yeni bir sürecin ortaya çıkması gerekir.

Bu şekilde, UAC sudo ile tam olarak aynı değildir .


4
Aslında, sudo ile aynı. "Sudo su" çalıştırıldığında geçerli kabuğunuza kök ayrıcalıkları eklenmez, ayrı bir işlemde yeni bir kabuk başlatılır . Eğer o kabuktan çıkarsanız, birincisine geri dönersiniz.
Wyzard --Stop Hasar Monica--

1
Windows ve Unix arasındaki fark, Unix programcılarının alt işlemlerde bir şeyler yapmak için kullanılmalarıdır, bu nedenle görevin ayrıcalıklara ihtiyaç duyan belirli bir kısmı için daha ayrıcalıklı bir alt işlem başlatmak mantıklıdır. Windows'da, her şeyi tek bir işlemde yapmak daha olağandır ve işi ayrı ayrı ve ayrıcalıklı olmayan parçalara (ayrı işlemlerde çalışan) ayırmak zor işlere çok benzer. (Tabii ki, birçok durumda işin yarı yolundan ziyade hemen gerekli ayrıcalığa sahip olmadığınızı bulmak daha iyidir!)
Harry Johnston

19

Windows altında , dosyaya katıştırılmış bir bildirimde yükseltme gerektiren olarak işaretlenen bir yürütülebilir dosyayı çalıştırmaya çalıştığınızda UAC istemi tetiklenir ve zaten yükseltilmiş olarak çalıştırmazsınız. Davranış, işletim sistemine yürütülebilir dosyanın farklı kimlik bilgileriyle çalıştırılacağını söyleyen komut değil, dosyadan ziyade setuid'e benzer.


4

Farklı, sade ve basit oldukları için. UAC böyle uygulanabilirdi sudo, ama olmadı.

Ağ korumalı bir benzetme olarak düşünebilirsiniz.

sudobir program ağ erişimi istediğinde ve güvenlik duvarınız sizden izin verip vermemenizi istediğinde olduğu gibidir. Evet diyebilirsiniz ve program soketi açacaktır veya hayır diyebilirsiniz ve bağlantı eksikliğinden şikayet edecek ve ağ erişimi olmadan yapabileceği her şeyi yapacaktır (bazı kötü tasarlanmış programlar gerçekten çöküyor). Örneğin:

function1();
input();
function2();
secure_operation(); //requests access
function3();        //may depend on results of previous operation; error-checking important

UAC, NTFS birimine indirilen bir dosyayı açmaya çalışırken aldığınız uyarıya benzer. Windows sizi potansiyel kötülük konusunda uyarır ve çalıştırmak (hiç) isteyip istemediğinizi sorar. Bir ya hep ya hiç operasyonu; programın yalnızca bir kısmına güvenmeyi ve başkalarına güvenmeyi seçemezsiniz. Örneğin:

if (requires_high_priv(program)) {
  if (request_priv(program))
    program();
}
else {
  program();
}

Unutmamalısınız ki, ileri düzey kullanıcılara ve uygulamalara yönelik olan Linux'un aksine, Windows mümkün olduğunca çok sayıda kullanıcı için kullanıcı dostu olacak şekilde tasarlanmıştır, bu nedenle güvenliği basitleştirmek çok önemlidir. Dahası, geniş pozlama yüzeyi nedeniyle, kötü amaçlı yazılımlar için sıkça kullanılan bir hedeftir, bu nedenle bir programa tamamen güvenmek ya da hiç güvenmemek daha mantıklıdır.


4

Linux mimarisini tam olarak bilmiyorum, bu yüzden bir hata yaparsam beni affet, ama anlayışım Linux ve Windows'un bu açıdan hiç de farklı olmadığı ...

Bir örnek ... Normal bir dosyanın korumasız bir konuma bir kopyasını ve korumalı bir konuma kopyalamaya çalışan bir dosyayı, ardından tekrar normal bir kopyasını yapan bir kopya komut dosyası.

Anladığım kadarıyla, Linux'ta bir uygulama basitçe çalışır ve bir eylem yapmaya çalışır - bu eylemi yapma izni yoksa - bu eylemi başarısızlığa uğratır, ancak devam eder. Yukarıdaki örnekte - Linux'ta kopya komut dosyasını normal bir kullanıcı olarak çalıştırırken, normal dosyayı kopyalar, izin sorunu verir ve ikinci dosyayı kopyalar - sudo ile çalıştırılırsa üç kopyayı da yapar.

Windows bu bakımdan tamamen aynıdır - betiği yönetici olmayan bir kullanıcı olarak çalıştırmak sadece birini kopyalar, ikincisine izin verir ve sonrakini kopyalar. UAC ile, üçünü de çalıştıracaktır.

Aradaki fark, birçok Windows uygulamasının, varsayılan olarak UAC yükseltmesini istemeleri ve yoksa bırakmaları / başarısız olmaları için bir yapılandırma setine sahip olmalarıdır ... ancak, bu çok daha az hale geliyor.


1
... ve cevabımı ve sorunuzu tekrar okuduktan sonra şunu söylemeliyim - Ne istediğini% 100 emin değilim ... Umarım bu yardımcı olur, ama çok emin değilim: /
William Hilsum
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.