Trong Windows, nếu tôi từ chối yêu cầu UAC của ứng dụng, tại sao nó không tiếp tục chạy?


17

Đến từ nền tảng Linux / Unix, tôi không thể hiểu UAC hoạt động như thế nào trong Windows.

Tôi nghe nói rằng UAC hoạt động như thế nào sudo. Ứng dụng Linux của tôi có thể thực hiện một số công việc khác trước khi gọi sudo.

Nhưng trong Windows, dường như tất cả các ứng dụng yêu cầu xác nhận UAC đều phải được cấp UAC trước khi thực hiện bất kỳ công việc thực tế nào! Tôi chạy một ứng dụng, nó yêu cầu tôi xác nhận UAC và tôi từ chối nó - ứng dụng sẽ không chạy.

Vậy UAC có hoạt động như thế này không?

sudo su
./run_app

Thay vì:

./do_work1
sudo su
./du_work2

Cảm ơn câu trả lời tuyệt vời của mọi người!

Câu trả lời:


12

Khi đăng nhập vào Windows với tư cách là người dùng chuẩn, phiên đăng nhập được tạo và mã thông báo chỉ chứa các đặc quyền cơ bản nhất được chỉ định. Theo cách này, phiên đăng nhập mới không có khả năng thực hiện các thay đổi sẽ ảnh hưởng đến toàn bộ hệ thống. Khi đăng nhập với tư cách người dùng trong nhóm Quản trị viên, hai mã thông báo riêng biệt được chỉ định. Mã thông báo đầu tiên chứa tất cả các đặc quyền thường được trao cho quản trị viên và mã thứ hai là mã thông báo bị hạn chế tương tự như những gì người dùng chuẩn sẽ nhận được. Các ứng dụng người dùng, bao gồm Windows Shell, sau đó được bắt đầu với mã thông báo bị hạn chế, dẫn đến môi trường đặc quyền bị giảm ngay cả trong tài khoản Quản trị viên. Khi một ứng dụng yêu cầu các đặc quyền cao hơn hoặc "Chạy với tư cách quản trị viên" được nhấp, UAC sẽ nhắc xác nhận và, nếu được chấp thuận,

Theo những gì tôi hiểu, câu cuối cùng có nghĩa là hộp thoại UAC được hiển thị trước khi tải ứng dụng để nó được bắt đầu với mã thông báo không bị hạn chế hoặc nếu không thì nó được bắt đầu với các đặc quyền người dùng tiêu chuẩn và cần một số đặc quyền nâng cao ở giữa công việc, nó cần phải có sự đồng ý của người dùng và sau đó tạo ra một quy trình mới sau đó chạy với các quyền nâng cao . Mã thông báo được chỉ định khi một quá trình bắt đầu là những gì xác định quyền của nó. Mã thông báo này không thể được thay đổi sau đó, vì vậy nếu cần nhiều quyền hơn, một quy trình mới cần được sinh ra.

Theo cách này, UAC không hoàn toàn giống như sudo .


4
Thật ra, nó giống như sudo. Chạy "sudo su" không thêm quyền root vào shell hiện tại của bạn, nó sẽ khởi động shell mới trong một quy trình riêng. Nếu bạn thoát khỏi cái vỏ đó, bạn sẽ quay lại cái đầu tiên.
Wyzard

1
Sự khác biệt giữa Windows và Unix là các lập trình viên Unix đã quen làm các công cụ trong các quy trình con, do đó, việc bắt đầu một quy trình con đặc quyền hơn cho phần đặc biệt của nhiệm vụ cần đặc quyền là điều hợp lý. Trong Windows, thông thường sẽ làm mọi thứ trong một quy trình duy nhất và tách công việc thành các phần đặc quyền và không đặc quyền riêng biệt (chạy trong các quy trình riêng biệt) trông giống như công việc khó khăn. (Tất nhiên, trong nhiều trường hợp, tốt hơn là bạn nên tìm ra rằng bạn không có đặc quyền cần thiết ngay lập tức thay vì đi được nửa đường trong công việc!)
Harry Johnston

19

Trong Windows, lời nhắc UAC được kích hoạt khi bạn cố chạy một tệp thực thi được đánh dấu là yêu cầu độ cao trong tệp kê khai được nhúng trong tệp và bạn chưa chạy độ cao. Hành vi giống như setuid hơn su ở chỗ đó là tệp chứ không phải lệnh cho HĐH biết rằng tệp thực thi sẽ được chạy với các thông tin khác nhau.


4

Đó là bởi vì chúng khác nhau, đơn giản và đơn giản. UAC có thể đã được thực hiện như thế sudo, nhưng nó đã không được.

Bạn có thể nghĩ về nó như một sự tương tự với bảo vệ mạng.

sudogiống như khi một chương trình yêu cầu truy cập mạng và tường lửa của bạn nhắc bạn cấp hay không. Bạn có thể nói có và chương trình sẽ mở ổ cắm, hoặc bạn có thể nói không và nó sẽ phàn nàn về việc thiếu kết nối và làm bất cứ điều gì có thể làm mà không cần truy cập mạng (một số chương trình được thiết kế kém thực sự bị sập). Ví dụ:

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

UAC giống như cảnh báo mà bạn nhận được khi cố gắng mở tệp được tải xuống ổ đĩa NTFS. Windows cảnh báo bạn về tính xấu tiềm ẩn và hỏi bạn có muốn chạy nó không (tất cả) hay không. Đó là một hoạt động tất cả hoặc không có gì; bạn không thể chọn chỉ tin tưởng một phần của chương trình chứ không phải những người khác. Ví dụ:

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

Bạn phải nhớ rằng không giống như Linux hướng đến người dùng và ứng dụng tiên tiến hơn, Windows được thiết kế thân thiện với nhiều người dùng nhất có thể, vì vậy đơn giản hóa bảo mật là điều tối quan trọng. Hơn nữa, vì bề mặt tiếp xúc lớn của nó, nó là mục tiêu thường xuyên của phần mềm độc hại, do đó, sẽ hoàn toàn có ý nghĩa hơn khi hoàn toàn tin tưởng vào một chương trình hoặc hoàn toàn không.


4

Tôi hoàn toàn không biết kiến ​​trúc linux, vì vậy hãy tha thứ cho tôi nếu tôi mắc lỗi, nhưng sự hiểu biết của tôi là Linux và Windows hoàn toàn không khác nhau về mặt này ...

Một ví dụ ... Tập lệnh sao chép thực hiện sao chép tệp bình thường sang vị trí không được bảo vệ và tệp cố gắng sao chép vào vị trí được bảo vệ, sau đó sao chép lại một lần nữa.

Tôi hiểu rằng trong Linux, một ứng dụng chỉ đơn giản là chạy và cố gắng thực hiện một hành động - nếu nó không được phép thực hiện hành động đó - nó sẽ thất bại trong hành động đó, nhưng tiếp tục. Trong ví dụ trên - khi chạy tập lệnh sao chép trong Linux với tư cách là người dùng thông thường, nó sẽ sao chép tệp thông thường, đưa ra vấn đề về quyền và sao chép tệp thứ hai - nếu chạy bằng sudo, nó sẽ thực hiện cả ba bản sao.

Windows hoàn toàn giống nhau về vấn đề này - chạy tập lệnh với tư cách là người dùng không phải quản trị viên sẽ chỉ cần sao chép một, cấp quyền thứ hai và sao chép tiếp theo. Với UAC, nó sẽ chạy cả ba.

Sự khác biệt là rất nhiều ứng dụng Windows chỉ đơn giản là có một bộ cấu hình để chúng yêu cầu nâng cao UAC theo mặc định và thoát / thất bại nếu chúng không có nó .... nhưng, điều đó đang trở nên ít hơn rất nhiều.


1
... và, tôi phải nói rằng sau khi đọc lại câu trả lời của tôi và câu hỏi của bạn - Tôi không chắc chắn 100% những gì bạn đang hỏi ... Tôi hy vọng điều này có ích, nhưng, không quá chắc chắn: /
William Hilsum
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.