Tại sao không có quyền như Android hoặc iOS?


26

Khi tôi cài đặt một chương trình như GIMP hoặc LibreOffice trên Linux, tôi không bao giờ được hỏi về các quyền. Bằng cách cài đặt một chương trình trên Ubuntu, tôi có cho phép chương trình đó toàn quyền đọc / ghi bất cứ nơi nào trên ổ đĩa của tôi và truy cập đầy đủ vào internet không?

Về mặt lý thuyết, GIMP có thể đọc hoặc xóa bất kỳ thư mục nào trên ổ đĩa của tôi, không yêu cầu mật khẩu kiểu sudo không?

Tôi chỉ tò mò liệu nó có khả thi về mặt kỹ thuật không, có khả năng hay không. Tất nhiên, tôi biết nó không có khả năng.



10
Bởi vì mô hình bảo mật của Linux có từ trước khi bất kỳ ai nghĩ đến việc đó. Trên thực tế, nó có từ trước Internet - khi mối đe dọa lớn nhất của bạn là những người khác sử dụng cùng một máy tính.
dùng253751

2
Một phần vì nhiều người sử dụng các chương trình * nix không "cài đặt", họ sẽ biên dịch chúng từ nguồn hoặc tự viết chúng. Vì vậy, hãy tưởng tượng nếu bạn phải trải qua "quyền" Rigamarole cho mỗi tập lệnh shell nhỏ đơn giản mà bạn đã viết: đó có phải là một sự lãng phí lớn thời gian không?
jamesqf

4
Mặc dù vậy, tôi không mua dòng lý luận này, "mã là nguồn mở, bạn có thể xem lại và tự biên dịch nó!". Tất cả những tuyên bố này đều đúng nhưng điều đó không có nghĩa là tôi sẽ có thể xem lại mọi dòng mã tôi chạy, và ngay cả khi tôi đã làm, hoặc một nhóm người đã làm, hoặc cả thế giới đã làm, điều đó không có nghĩa là bạn sẽ phát hiện ra mã xấu hoặc mã độc ảnh hưởng tiêu cực đến máy tính của bạn. Nhưng cảm ơn về đầu vào, tôi thấy làm thế nào nó có thể trở thành một nỗi đau lớn và tôi đã phát hiện ra những cách xung quanh nó bây giờ.
xếp chồng

Câu trả lời:


31

Có hai điều ở đây:

  • khi bạn cài đặt chương trình theo phương tiện tiêu chuẩn (trình cài đặt hệ thống như apt / apt-get trên Ubuntu), nó thường được cài đặt trong một số thư mục có sẵn cho tất cả người dùng (/ usr / bin ...). Thư mục này yêu cầu các đặc quyền được ghi vào để bạn cần các đặc quyền trong quá trình cài đặt.

  • Khi bạn sử dụng chương trình, nó chạy với id người dùng của bạn và chỉ có thể đọc hoặc viết trong đó các chương trình được thực thi với id của bạn được phép đọc hoặc ghi. Trong trường hợp của Gimp, bạn sẽ phát hiện ra rằng bạn không thể chỉnh sửa các tài nguyên tiêu chuẩn như bàn chải vì chúng nằm trong phần chung /usr/share/gimp/và bạn phải sao chép chúng trước. Điều này cũng cho thấy trong Edit>Preferences>Foldersđó hầu hết các thư mục đi theo cặp, một hệ thống chỉ đọc và một người dùng có thể được ghi vào.


17
Một khi chương trình được cài đặt, làm thế nào nó được cài đặt trở nên không liên quan. Điều duy nhất được tính là theo đó người dùng chạy nó ((nói cách khác, ai đang sử dụng nó). Sau đó, nó có quyền truy cập giống như tất cả các chương trình khác được điều hành bởi cùng một người dùng.
xenoid 26/03/18

3
@xenoid Trừ khi chương trình được cài đặt thuộc sở hữu của root và bật bit setuid. Trong trường hợp đó, chương trình chạy như root, mặc dù đã được người khác sử dụng.
Monty Harder

2
Có, tất cả 18 người trong số họ: mount / umount / ping / sudo ...
xenoid 26/03/18

2
@xenoid, tôi nghĩ rằng điều quan trọng ở đây là việc cài đặt một gói không yêu cầu bạn cho phép cài đặt nhị phân setuid. Thay vào đó, bất cứ thứ gì trong gói được cài đặt và bạn chỉ cần "biết" một số cách khác nếu có các chương trình đặc quyền liên quan. Bạn hoàn toàn phụ thuộc vào trình đóng gói để đảm bảo gói phù hợp với tài liệu và nếu không thì an toàn, v.v., tiện ích quản lý gói không giúp được gì cho bạn ở đó.
ilkkachu

3
Vâng, không có gì mới, đây là lý do tại sao có kho lưu trữ ... Ngay cả khi không có bit setuid và phần mềm được cài đặt có thể làm nhiều điều khó chịu khác như rm -rf ~/. Nếu bạn cài đặt từ các nguồn khác, bạn phải cẩn thận (hoặc cài đặt từ nguồn, sau khi kiểm tra mã).
xenoid

23

Bằng cách cài đặt một chương trình trên Ubuntu, tôi có cho phép chương trình đó toàn quyền đọc / ghi bất cứ nơi nào trên ổ đĩa của tôi và truy cập đầy đủ vào internet không?

Có, nếu bạn sử dụng sudohoặc tương đương, bạn sẽ cấp cho trình cài đặt toàn quyền đọc / ghi bất cứ nơi nào trên ổ đĩa của bạn. Điều này chủ yếu là điều tương tự. Ngoài ra còn có một cờ mà trình cài đặt có thể đặt, được gọi là setuid, điều này sẽ làm cho chương trình có toàn quyền sau khi cài đặt.

Ngay cả khi chúng tôi bỏ qua trình cài đặt và nếu chương trình không được thiết lập (rất hiếm khi các chương trình sử dụng setuid), khi bạn chạy chương trình, nó có toàn quyền truy cập vào bất cứ điều gì tài khoản của bạn có thể truy cập. Ví dụ: nếu bạn đăng nhập vào ngân hàng trực tuyến của mình, nó có thể giả định gửi tất cả tiền của bạn đến Nigeria.

Tại sao không có quyền như Android hoặc iOS?

Mô hình bảo mật - có nghĩa là cách hệ thống bảo mật được thiết kế - trong Linux rất cũ. Nó được thừa hưởng từ Unix, xuất hiện từ những năm 1960. Trước đó, không có Internet và hầu hết mọi người trong một bộ phận đều sử dụng cùng một máy tính. Hầu hết các chương trình của bạn đến từ các công ty lớn được tin tưởng. Vì vậy, hệ thống bảo mật được thiết kế để bảo vệ người dùng khỏi nhau, không bảo vệ người dùng khỏi các chương trình họ chạy.

Ngày nay nó đã khá lỗi thời. Android dựa trên Linux, nhưng nó hoạt động bằng cách tạo một "tài khoản người dùng" riêng cho mọi ứng dụng, thay vì cho mọi người dùng. Tôi không biết iOS sử dụng cái gì. Những nỗ lực như Flatpak hiện đang cố gắng mang lại điều tương tự cho máy tính để bàn Linux.


2
Đây thực sự là một đối số để chạy mã có khả năng khai thác như một người dùng không có đặc quyền riêng biệt và hy vọng không có lỗ hổng leo thang đặc quyền trong HĐH. Hoặc Docker.
Willtech

@immibis Android sử dụng nhân Linux và máy chủ FS. Nó không chia sẻ bất kỳ điểm tương đồng khác afaik. Không kết nối Linux và UNIX (hoặc GNU / Linux). (Ít nhất bạn đã không gọi FreeBSD là "Linux" ..)
wizzwizz4 27/03/18

1
@ wizzwizz4 Linux là kernel, Android sử dụng kernel có tên Linux, tôi không chắc quan điểm của bạn là gì.
dùng253751

@Willtech Về mặt kỹ thuật nó hoạt động như một biện pháp bảo mật, nhưng nó khá bất tiện. Nói chung, bạn muốn các ứng dụng có thể truy cập các tệp của mình. Nhưng chỉ có các tập tin bạn nói với họ để truy cập.
dùng253751

@immibis Các quyền không được triển khai trong kernel, do đó, sai lầm khi ngụ ý rằng Android dựa trên một hệ thống bao gồm mô hình cấp phép. (IIirc kernel thực thi một số quyền mặc dù ..)
wizzwizz4

9

Những gì bạn muốn đang được cung cấp bởi các ứng dụng Flatpack. Đây là rất nhiều tương đương với các ứng dụng iOS, Android hoặc Windows Store.

Tôi chưa sử dụng chúng vì vậy tôi không biết liệu họ đã triển khai GUI chưa, để xem các quyền được yêu cầu bởi mỗi ứng dụng khi cài đặt.

https://bloss.gnome.org/alexl/2017/01/20/the-flatpak-security-model-part-2-who-need-sandboxing-anyway/

Mỗi ứng dụng Flatpak đều chứa một bảng kê khai, được gọi là siêu dữ liệu. Tệp này mô tả chi tiết về ứng dụng, như danh tính của ứng dụng (id ứng dụng) và thời gian chạy mà nó sử dụng. Nó cũng liệt kê các quyền mà ứng dụng yêu cầu.

Theo mặc định, sau khi cài đặt, một ứng dụng sẽ nhận được tất cả các quyền mà nó yêu cầu. Tuy nhiên, bạn có thể ghi đè các quyền mỗi khi bạn gọi Flatpak chạy hoặc trên toàn cầu trên cơ sở mỗi ứng dụng bằng cách sử dụng ghi đè Flatpak (xem các trang hướng dẫn về ghi đè phẳng và ghi đè phẳng để biết chi tiết). Việc xử lý các quyền của ứng dụng hiện có phần bị ẩn trong giao diện, nhưng kế hoạch dài hạn là hiển thị các quyền trong khi cài đặt và giúp ghi đè chúng dễ dàng hơn.

Tôi cũng chưa sử dụng thay thế của Snappy, để biết liệu nó có cung cấp tính năng như vậy trong GUI hay không.


Flatpaks có quyền đọc / ghi vào thư mục nhà của tôi trong Ubuntu không?
xếp chồng

1
Đọc liên kết, có vẻ như a) họ có một giải pháp tao nhã trong đó các ứng dụng chỉ có quyền truy cập vào các tệp mà người dùng đã chọn trong cửa sổ mở / lưu tệp, v.v., mặc định là cấp quyền truy cập đầy đủ vào thư mục chính của bạn .
nguồn

2
Các ứng dụng web là một giải pháp chuẩn hơn nhiều cho vấn đề này, mặc dù không hiệu quả trong nhiều trường hợp. Bất kỳ trình duyệt web phổ biến nào cũng là một hộp cát rất linh hoạt và được kiểm tra kỹ lưỡng.
sudo

6

Đó là về mặt kỹ thuật có thể và các giải pháp bao gồm apparmor, selinuxfirejailhoặc thậm chí container đầy đủ thích LXChoặc một máy ảo đầy đủ (ví dụ VirtualBox, kvmhoặc vmware). Đối với mạng, opensnitchđó là bản sao của littlesnitchchương trình từ OSX.

Lý do tại sao không có mô hình bảo mật rộng rãi với các quyền được cung cấp bởi người dùng là vì theo truyền thống, bạn cẩn thận với những gì bạn chạy trên máy tính của mình. 90% những gì trong các ứng dụng của hệ thống di động sẽ bị coi là phần mềm độc hại trên PC.

Có các máy quét cho phần mềm quảng cáo (ví dụ quảng cáo hoặc Spybot D & D) sẽ phân loại các hành vi như kết nối mạng facebook, phân tích google và mạng quảng cáo dưới dạng phần mềm độc hại trên PC. Hệ sinh thái di động giống như một sự khởi động lại toàn bộ của máy tính khi nói đến những điều này. Mọi người đều đóng gói phần mềm quảng cáo, chỉ vì nó dễ dàng và thêm phân tích, chỉ vì anh ấy tò mò. Các tác dụng phụ là giảm sự riêng tư và bảo mật. Phần bảo mật được tính theo mô hình hộp cát, phần riêng tư vẫn là một vấn đề mở.

Một lý do khác để không có cái này trên PC lâu là sự phức tạp của hộp cát, điều đó có nghĩa là cả hai có thể quá chậm đối với các PC cũ trước đây và đòi hỏi nhiều kỹ thuật hơn cho một thứ ít có lợi thế hơn.

Hôm nay chúng ta thấy các nỗ lực sử dụng hộp cát trong các định dạng gói mới như snap và Flatpak và các trình duyệt cũng sử dụng nó cho các tiện ích mở rộng của chúng. Chromium sử dụng mô hình cấp phép kể từ khi bắt đầu và Firefox sử dụng một mô hình cho tất cả các webextensions (vì 57 tiện ích mở rộng duy nhất bạn có thể cài đặt). Điều này khá hợp lý, bởi vì mọi người cài đặt các phần mở rộng trình duyệt từ các tác giả vô danh giống như các ứng dụng từ những người họ chưa từng nghe đến, nghĩ rằng chúng không nguy hiểm hơn trang web họ truy cập, đó là một quan niệm sai lầm chết người khi không có hộp cát để bảo vệ chúng.


4

Android sử dụng mô hình bảo mật "thị trường": các ứng dụng khác nhau đến từ các nhà cung cấp khác nhau (bán đáng tin cậy) và nên được cách ly khỏi các tài nguyên được bảo vệ lẫn nhau. Hầu hết các ứng dụng được phân phối trên cơ sở vì lợi nhuận: chúng được bán (phần mềm trả tiền), hiển thị quảng cáo trả tiền hoặc "kiếm tiền" cho người dùng của họ bằng cách bán dữ liệu của họ cho bên thứ ba. Có một động lực cao để tham gia vào việc truy cập dữ liệu bất hợp pháp, ngay cả khi họ bị bắt.

Hầu hết các ứng dụng trong Debian, Red Hat và các bản phân phối Linux "cổ điển" tương tự được phân phối ở dạng nguồn: sau khi các ứng dụng nguồn mở có đủ lực kéo, nó được chọn bởi các nhà bảo trì phân phối. Có rất ít động lực để thực hiện truy cập dữ liệu bất hợp pháp, - lợi ích tiềm năng không biện minh cho những nỗ lực.

Điều đáng chú ý, mô hình bảo mật tiên tiến của Android là một trong những lý do, tại sao nó có được lực kéo rất lớn, dễ dàng vượt qua iOS trên thị trường di động. Các bản phân phối Linux dành cho máy tính để bàn hiện đại không chỉ "khác biệt", - chúng thực sự bị tụt hậu so với các mô hình phân phối và bảo mật của chúng.

Một số bản phân phối Linux đang cải tiến hệ thống phân phối phần mềm của họ: kho phần mềm của bên thứ ba tập trung (AUR), các định dạng gói chuyên dụng để phân phối phần mềm của bên thứ ba (AppImage, Snappy, Flatpack), hệ thống kho lưu trữ thứ cấp (Docker). Thật không may, những cải tiến đó đạt được rất ít lực kéo theo thời gian: AppImage đã được phát minh vào năm 2004, phiên bản đầu tiên của AUR được phát hành vào năm 2005, nhưng không có bản phân phối Linux hiện đại nào chính thức áp dụng các tính năng của chúng sau> 10 năm.


3

Khi tôi cài đặt một chương trình như GIMP hoặc LibreOffice trên Linux, tôi không bao giờ được hỏi về các quyền.

Các ứng dụng này được cài đặt trong một phần đặc quyền của hệ thống tệp mà bạn và hầu hết người dùng thường không có quyền truy cập để thay đổi.

Trên các bản phân phối chính được thiết lập cho máy tính để bàn, hãy sử dụng một người dùng ban đầu được thiết lập khi cài đặt thường có quyền quản trị viên. Tất cả những gì họ thường được yêu cầu là mật khẩu đăng nhập của riêng họ để cài đặt phần mềm, và không phải lúc nào cũng vậy.

Sau khi cài đặt, phần mềm sẽ được thiết lập để người dùng bình thường có thể thực thi và cho phép các tệp dữ liệu được đọc. Đó là tất cả những gì cần thiết.

Bằng cách cài đặt một chương trình trên Ubuntu, tôi có cho phép chương trình đó toàn quyền đọc / ghi bất cứ nơi nào trên ổ đĩa của tôi và truy cập đầy đủ vào internet không?

Không phải chương trình. Điều xảy ra là tài khoản người dùng thuộc các nhóm khác nhau và các nhóm khác nhau cấp quyền truy cập vào các tài nguyên khác nhau.

Mô hình bảo mật trên Linux là tài khoản người dùng của bạn có một số quyền nhất định và các nhóm tài khoản của bạn thuộc quyền có các quyền cụ thể. Để đúng với bất kỳ phần nào của hệ thống tệp yêu cầu quyền root, thường không được cấp cho người dùng. Ngay cả khi bạn sử dụng sudo, bạn không có được tất cả các quyền.

Các tài khoản người dùng thông thường thường có quyền truy cập vào các tài nguyên mà họ sẽ cần, như internet.

Về mặt lý thuyết, GIMP có thể đọc hoặc xóa bất kỳ thư mục nào trên ổ đĩa của tôi, không yêu cầu mật khẩu kiểu sudo không?

Bất kỳ thư mục hoặc tệp nào của bạn, với tư cách là người dùng, đều có quyền truy cập có thể được truy cập bởi ứng dụng bạn khởi chạy vì nó thường kế thừa các quyền của bạn. Một người dùng đăng nhập bình thường sẽ không theo mặc định thường có quyền thay đổi hầu hết các tệp hệ thống quan trọng hoặc các tệp được chia sẻ.

Tôi chỉ tò mò liệu nó có khả thi về mặt kỹ thuật không, có khả năng hay không. Tất nhiên, tôi biết nó không có khả năng.

Hãy nhớ rằng hầu hết người dùng thường cài đặt các ứng dụng từ các kho lưu trữ được kiểm soát tốt và rủi ro về mã thù địch là thấp.

Tôi có thể đề nghị một số cách đọc bổ sung để hiểu rõ hơn về quyền của Linux.

Mô hình bảo mật Android đang phát triển để phù hợp với nhu cầu của người dùng, những người không chỉ không hiểu gì về mô hình bảo mật cơ bản của HĐH mà hầu như không hiểu về máy tính.

Mô hình Linux (mà tôi thực sự thích nhiều hơn) được thiết kế để cho phép người dùng (và đặc biệt là quản trị viên) thực hiện kiểm soát nhiều hơn đối với bảo mật trên hệ thống (trong giới hạn nếu được phép của họ).

Tôi nghĩ từ quan điểm người dùng, nó được mô tả tốt nhất là sự khác biệt giữa điều khiển hoàn toàn tự động và bán tự động hoặc điều khiển thủ công. Người tiêu dùng hiện đại muốn tự động hoàn toàn. Linux có bán tự động và thủ công. Hầu hết người dùng Linux không bao giờ cần biết về mô hình bảo mật ngày nay, nhưng kiểm soát là có nếu bạn cần hoặc muốn nó.


2

Khi bạn cài đặt một số chương trình, bạn có thể cài đặt chúng trong không gian người dùng của riêng bạn (tức là độc lập trong thư mục chính của bạn) và không phải toàn hệ thống. Như vậy, bạn sẽ không được yêu cầu các đặc quyền siêu người dùng vì bạn không cần họ cài đặt chương trình cho một người sử dụng. Một chương trình được cài đặt như vậy thực sự sẽ không thể truy cập các tệp không được cấp "thành viên không thuộc nhóm không phải chủ sở hữu có thể đọc quyền này" mà không có sự leo thang đặc quyền.


Nếu chương trình được cài đặt trong thư mục nhà của tôi, nó có thể đọc và ghi bất cứ nơi nào trong thư mục chính không?
xếp chồng

2
Nó chạy với quyền của bạn, vì vậy nó có thể truy cập bất cứ thứ gì bạn có thể truy cập.
DopeGhoti

1
Trên một máy người dùng, truy cập chỉ dành cho người dùng không an toàn hơn nhiều so với truy cập root. Dù bằng cách nào, mọi thứ quan trọng đều có thể được truy cập bởi người dùng của bạn.
sudo
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.