Android 또는 iOS와 같은 권한이없는 이유는 무엇입니까?


26

Linux에 GIMP 또는 LibreOffice와 같은 프로그램을 설치할 때 권한에 대해 묻지 않습니다. Ubuntu에 프로그램을 설치하면 드라이브의 어느 곳에서나 읽고 인터넷에 액세스 할 수있는 권한을 명시 적으로 부여합니까?

이론적으로 김프는 sudo 타입 ​​암호를 요구하지 않고 내 드라이브의 디렉토리를 읽거나 삭제할 수 있습니까?

기술적으로 가능한지 궁금한지 아닌지 궁금합니다. 물론, 가능성이 낮다는 것을 알고 있습니다.


26
의무적 인 XKCD : xkcd.com/1200
Andrea Lazzarotto

10
리눅스의 보안 모델은 누군가가 그렇게 생각하기 이전부터 시작 되었기 때문입니다. 사실 그것은 인터넷 이전부터 시작되었습니다. 가장 큰 위협은 다른 사람들이 같은 컴퓨터를 사용했을 때였습니다.
user253751

2
* nix를 사용하는 많은 사람들이 프로그램을 "설치"하지 않기 때문에 소스에서 컴파일하거나 스스로 작성합니다. 당신이 쓴 모든 간단한 작은 쉘 스크립트에 대해 "권한"rigamarole을 거쳐야한다고 상상해보십시오. 그것은 엄청난 시간 낭비가 아닐까요?
jamesqf

4
"이 코드는 오픈 소스이므로 검토하고 직접 컴파일 할 수 있습니다!"라는이 추론을 구입하지는 않습니다. 이 모든 진술이 사실이지만 이것이 내가 실행하는 모든 코드 줄을 검토 할 수 있다는 것을 의미하지는 않으며, 내가 한 일이나 팀원 또는 전 세계가 한 일이 아니더라도 컴퓨터에 부정적인 영향을 미치는 악성 또는 나쁜 코드를 발견하게됩니다. 그러나 의견을 보내 주셔서 감사합니다. 어떻게 그것이 큰 고통이 될 수 있는지 보았습니다.
stackinator

답변:


31

여기에는 두 가지가 있습니다.

  • 표준 수단 (Ubuntu의 apt / apt-get과 같은 시스템 설치 프로그램)으로 프로그램을 설치할 때 일반적으로 모든 사용자가 사용할 수있는 일부 디렉토리 (/ usr / bin ...)에 설치됩니다. 이 디렉토리에는 특권을 작성해야하므로 설치 중에 특수 특권이 필요합니다.

  • 프로그램을 사용할 때 사용자 ID로 실행되며 ID로 실행 된 프로그램이 읽거나 쓸 수있는 위치에서만 읽거나 쓸 수 있습니다. Gimp의 경우 예를 들어 브러쉬와 같은 표준 리소스가 공유 /usr/share/gimp/되어 있고 먼저 복사해야 하기 때문에 브러쉬와 같은 표준 리소스를 편집 할 수 없습니다 . 또한 Edit>Preferences>Folders대부분의 폴더가 쌍을 이루는 위치, 읽기 전용 시스템 및 쓸 수있는 시스템이 표시됩니다.


17
일단 프로그램이 설치되면, 설치 방법은 무의미합니다. 계산할 수있는 유일한 것은 그것이 실행하는 사용자 ID (즉, 누가 사용하고 있는지)입니다. 그런 다음 동일한 사용자가 실행하는 다른 모든 프로그램과 동일한 액세스 권한을 가정합니다.
xenoid

3
@xenoid 프로그램이 루트에 의해 소유되고 setuid 비트가 설정된 상태로 설치되지 않는 한. 이 경우 다른 사람이 사용하더라도 프로그램은 루트로 실행됩니다.
Monty Harder

2
네, 18 개 모두 : mount / umount / ping / sudo ...
xenoid

2
@ xenoid, 패키지를 설치할 때 setuid 바이너리를 설치할 권한을 명시 적으로 요구하지 않는다는 것이 중요하다고 생각합니다. 대신 패키지에있는 모든 것이 설치되며 권한있는 프로그램이 관련되어 있으면 다른 방법으로 "알아야"합니다. 패키지가 문서와 일치하고 다른 방식으로 안전하다는 것을 확인하기 위해 패키지 관리자에 전적으로 의존합니다. 패키지 관리자 유틸리티는 도움이되지 않습니다.
ilkkachu

3
예, 새로운 것은 없습니다. 이것이 리포지토리가있는 이유입니다. setuid 비트와 설치된 소프트웨어가 없어도와 같은 다른 많은 불쾌한 일을 할 수 있습니다 rm -rf ~/. 다른 소스에서 설치하는 경우주의해야합니다 (또는 코드 검사 후 소스에서 설치).
xenoid

23

우분투에 프로그램을 설치하면 드라이브의 어느 곳에서나 읽고 인터넷에 액세스 할 수있는 권한을 프로그램에 명시 적으로 부여합니까?

sudo. 이와 동등한 것을 사용하는 경우 드라이브의 어느 곳에서나 읽고 쓸 수있는 권한을 설치 관리자 에게 부여합니다 . 이것은 대부분 같은 것입니다. 또한 설치 프로그램이 setuid라고하는 플래그를 설정하여 설치 후에도 프로그램이 전체 권한을 갖도록합니다.

설치 프로그램을 무시하고 프로그램이 setuid가 아닌 경우 (프로그램에서 setuid를 사용하는 경우는 매우 드)니다), 프로그램을 실행할 때 계정에서 액세스 할 수있는 모든 항목에 대한 전체 액세스 권한이 있습니다. 예를 들어, 온라인 뱅킹에 로그인 한 경우 모든 자금을 나이지리아로 보낼 수 있습니다.

Android 또는 iOS와 같은 권한이없는 이유는 무엇입니까?

보안 모델은 보안 시스템이 설계되는 방식을 의미하며 Linux에서 매우 오래되었습니다. 그것은 유닉스에서 상속되었으며 1960 년대로 거슬러 올라갑니다. 당시에는 인터넷이 없었으며 부서의 사람들은 대부분 같은 컴퓨터를 사용했습니다. 대부분의 프로그램은 신뢰할 수있는 대기업에서 나왔습니다. 따라서 보안 시스템은 사용자가 실행하는 프로그램으로부터 사용자를 보호하지 않고 서로를 보호하도록 설계되었습니다.

요즘에는 상당히 구식입니다. Android는 Linux를 기반으로하지만 모든 사용자 대신 모든 앱에 대해 별도의 "사용자 계정"을 만들어 작동합니다. iOS가 무엇을 사용하는지 모르겠습니다. Flatpak과 같은 노력은 현재 Linux 데스크톱에 동일한 종류의 것을 가져오고 있습니다.


2
이것은 잠재적으로 악용 가능한 코드를 별도의 권한이없는 사용자로 실행하고 OS에 권한 에스컬레이션 취약점이 없기를 바라는 한 가지 주장입니다. 또는 도커.
Willtech

@immibis Android는 Linux 커널과 ext FS를 사용합니다. 다른 유사점은 공유하지 않습니다. 리눅스와 유닉스 계열 (또는 GNU / 리눅스)을 혼동하지 마십시오. (적어도 당신은 FreeBSD를 "Linux"라고 부르지 않았습니다.)
wizzwizz4

1
@ wizzwizz4 Linux는 커널이며, Android는 Linux라는 커널을 사용하므로 요점이 무엇인지 잘 모르겠습니다.
user253751

@Willtech 기술적으로 보안 수단으로 작동하지만 매우 불편합니다. 결국에는 일반적으로 앱이 파일에 액세스 할 수 있기를 원합니다 . 그러나 당신이 그들에게 접근하도록 지시 한 파일들만.
user253751

@immibis 권한은 커널에서 구현되지 않으므로 Android가 권한 모델을 포함하는 시스템을 기반으로 함을 암시하는 것은 잘못된 것입니다. (IIirc 커널은 일부 권한을 강제로 실행합니다 ..)
wizzwizz4

9

Flatpack 앱에서 원하는 것을 제공하고 있습니다. 이는 iOS, Android 또는 Windows Store 앱과 거의 같습니다.

나는 그것들을 사용하지 않았으므로 GUI를 아직 구현했는지 알지 못하여 각 앱이 설치 될 때 필요한 권한을 확인합니다.

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

모든 flatpak 애플리케이션에는 메타 데이터라고하는 매니페스트가 포함되어 있습니다. 이 파일은 ID (app-id) 및 사용하는 런타임과 같은 애플리케이션의 세부 사항을 설명합니다. 또한 응용 프로그램에 필요한 권한이 나열됩니다.

기본적으로 응용 프로그램이 설치되면 요청한 모든 권한을 얻습니다. 그러나 flatpak 재정의를 사용하여 flatpak run 또는 응용 프로그램별로 전역으로 호출 할 때마다 권한을 재정의 할 수 있습니다 (자세한 내용은 flatpak-run 및 flatpak-override 맨 페이지 참조). 응용 프로그램 사용 권한 처리는 현재 인터페이스에 다소 숨겨져 있지만 장기 계획은 설치 중에 사용 권한을 표시하고 더 쉽게 재정의 할 수 있도록하는 것입니다.

또한 Ubuntu의 대안 인 Snappy를 사용하여 GUI에서 볼 수있는 그러한 기능을 제공하는지 알지 못했습니다.


flatpak은 Ubuntu의 홈 폴더에 대한 읽기 / 쓰기 권한이 있습니까?
stackinator

1
링크를 읽으면 다음과 같이 보입니다. .
sourcejedi

2
웹 애플리케이션은이 문제에 대한 훨씬 표준적인 솔루션이지만 많은 경우에 비효율적입니다. 널리 사용되는 웹 브라우저는 다양하고 철저하게 테스트 된 샌드 박스입니다.
sudo

6

이것은 기술적으로 가능하며 솔루션은 apparmor, selinuxfirejail심지어 전체 컨테이너처럼 LXC또는 전체 가상 머신 (예를 들어 VirtualBox, kvm또는 vmware). 네트워킹에는 OSX opensnitchlittlesnitch프로그램 복제본이 있습니다.

사용자가 부여한 권한을 가진 광범위한 보안 모델이없는 이유는 일반적으로 PC에서 실행하는 작업에주의를 기울이기 때문입니다. 모바일 시스템의 앱 스토어에있는 것의 90 %는 PC에서 맬웨어로 간주됩니다.

페이스 북, 구글 애널리틱스 및 광고 네트워크를 PC의 악성 코드로 연결하는 것과 같은 행동을 분류하는 애드웨어 용 스캐너 (예 : adaware 또는 Spybot D & D)가 있습니다. 모바일 에코 시스템은 이와 관련하여 컴퓨팅을 완전히 재부팅하는 것과 같습니다. 누구나 쉽게 애드웨어를 번들로 제공하고 궁금한 점 때문에 분석을 추가합니다. 부작용은 개인 정보 보호 및 보안 감소입니다. 보안 부분은 샌드 박스 모델로 설명되며 개인 정보 부분은 여전히 ​​공개 된 문제입니다.

PC에 오랫동안 이것을 가지고 있지 않은 또 다른 이유는 샌드 박스의 복잡성 때문입니다. 이는 어느 정도 전에 구형 PC의 경우 속도가 너무 느려서 이점이 거의없는 것에 대해 더 많은 엔지니어링이 필요하다는 것을 의미합니다.

오늘날 우리는 snap 및 flatpak과 같은 새로운 패키지 형식으로 샌드 박싱을 사용하려는 시도를 보았으며 브라우저는이를 확장에 사용합니다. Chromium은 시작 이후 권한 모델을 사용하고 Firefox는 모든 웹 확장에 하나를 사용합니다 (57 개만 설치할 수있는 확장 프로그램이므로). 사람들은 자신이 들어 본 적이없는 사람들의 앱처럼 알 수없는 저자의 브라우저 확장 프로그램을 설치하기 때문에 방문하는 웹 사이트보다 더 위험하지 않다고 생각하기 때문에 합리적입니다. 이는 보호 할 샌드 박스가 없을 때 치명적인 오해입니다.


4

Android는 "시장"보안 모델을 사용합니다. 서로 다른 응용 프로그램은 서로 다른 (반 신뢰하는) 공급 업체에서 제공되며 서로 보호 된 리소스와 분리되어야합니다. 대부분의 앱은 수익을 기준으로 배포됩니다. 앱은 제 3 자에게 데이터를 판매하여 판매 (페이웨어), 유료 광고 표시 또는 사용자에게 "수익 화"합니다. 불법적 인 데이터 액세스에 걸리더라도 동기가 부여됩니다.

데비안, Red Hat 및 유사한 "클래식"Linux 배포판의 대부분의 응용 프로그램은 소스 형식으로 배포됩니다. 오픈 소스 응용 프로그램이 충분한 견인력을 얻은 후 배포 관리자가 포함하도록 수동으로 선택됩니다. 불법적 인 데이터 액세스를 수행하려는 동기는 거의 없습니다. 잠재적 이익이 노력을 정당화하지는 않습니다.

Android의 고급 보안 모델이 모바일 시장에서 iOS를 쉽게 극복하면서 많은 관심을 끌었던 이유 중 하나입니다. 최신 데스크탑 Linux 배포판은 단순히 "다른"것이 아니라 보안 및 배포 모델 측면에서 실제로 뒤쳐져 있습니다.

Linux 배포판 중 일부는 중앙 집중식 타사 소프트웨어 리포지토리 (AUR), 타사 소프트웨어 배포 용 특수 패키지 형식 (AppImage, Snappy, Flatpack), 보조 리포지토리 시스템 (Docker)과 같은 소프트웨어 배포 시스템이 개선되었습니다. 불행히도 이러한 개선은 시간이 지남에 따라 거의 견인력을 얻지 못합니다. AppImage는 2004 년에 발명되었으며 2005 년에 AUR의 첫 번째 버전이 출시되었지만 10 년이 지난 후에도 최신 Linux 배포판은 공식적으로 기능을 채택하지 않았습니다.


3

Linux에 GIMP 또는 LibreOffice와 같은 프로그램을 설치할 때 권한에 대해 묻지 않습니다.

이러한 응용 프로그램은 사용자와 대부분의 사용자가 일반적으로 변경할 수있는 권한이없는 파일 시스템의 권한있는 부분에 설치됩니다.

데스크톱 용으로 설정된 주류 배포판에서 설치시 처음 설정 한 단일 사용자는 일반적으로 관리자 권한을 갖습니다. 그들이 일반적으로 요구되는 것은 소프트웨어를 설치하기위한 자체 로그인 비밀번호이며 항상 그런 것은 아닙니다.

소프트웨어가 설치되면 기본적으로 일반 사용자가 실행할 수 있도록 설정되며 데이터 파일을 읽을 수 있습니다. 그것이 필요한 전부입니다.

Ubuntu에 프로그램을 설치하면 드라이브의 어느 곳에서나 읽고 인터넷에 액세스 할 수있는 권한을 명시 적으로 부여합니까?

프로그램이 아닙니다. 사용자 계정이 다른 그룹에 속하고 다른 그룹에 다른 리소스에 대한 액세스 권한이 부여됩니다.

Linux의 보안 모델은 사용자 계정에 특정 권한이 있고 계정이 속한 그룹에 특정 권한이 있다는 것입니다. 오른쪽으로 모든 파일 시스템의 일부 일반적으로 사용자에게 부여되지 않은 루트 권한이 필요합니다. sudo 를 사용하더라도 모든 권리를 얻지는 못합니다.

일반 사용자 계정은 일반적으로 인터넷과 같이 필요한 리소스에 액세스 할 수 있습니다.

이론적으로 김프는 sudo 타입 ​​암호를 요구하지 않고 내 드라이브의 디렉토리를 읽거나 삭제할 수 있습니까?

사용자로서 액세스 권한이있는 디렉토리 또는 파일은 일반적으로 권한을 상속하므로 실행하는 응용 프로그램에서 액세스 할 수 있습니다. 일반적으로 로그인 한 사용자는 기본적으로 대부분의 중요한 시스템 파일 또는 공유 파일을 변경할 권리가 없습니다.

기술적으로 가능한지 궁금한지 아닌지 궁금합니다. 물론, 가능성이 낮다는 것을 알고 있습니다.

대부분의 사용자는 일반적으로 잘 관리되고 적대적 코드의 위험이 적은 리포지토리에서 응용 프로그램을 설치합니다.

Linux 권한에 익숙해지기 위해 추가 독서를 제안 할 것입니다.

안드로이드 보안 모델뿐만 아니라 일반적으로 OS의 기본 보안 모델에 대해 아무것도 이해하지만, 거의 이해하지 않는 사용자의 요구에 맞게 진화하고 어떤 컴퓨터에 대한합니다.

Linux 모델 (솔직히 더 좋아함)은 사용자 (및 특히 관리자)가 시스템의 보안에 대해 더 많은 제어권을 행사할 수 있도록 (허용 된 권한의 경우 제한 내에서) 설계되었습니다.

사용자 입장에서는 전자동 및 반자동 또는 수동 제어의 차이점으로 가장 잘 설명됩니다. 현대 소비자는 완전 자동을 원합니다. 리눅스에는 반자동 및 수동이 있습니다. 대부분의 Linux 사용자는 요즘 보안 모델에 대해 알 필요가 없지만 필요하거나 원하는 경우 제어가 가능합니다.


2

일부 프로그램을 설치하면 시스템 전체가 아닌 자체 사용자 공간 (예 : 홈 디렉토리에 자체 포함) 내에 프로그램을 설치할 수 있습니다. 따라서 한 명의 사용자가 사용할 수있는 프로그램을 설치할 필요가 없기 때문에 수퍼 유저 권한이 필요하지 않습니다. thusly 히 설치 프로그램은 실제로 것 없는 이 아닌 권한 상승 결석 허가 "비 소유자가 아닌 그룹 구성원이 읽을 수"부여 된 파일에 액세스 할 수 있습니다.


프로그램이 내 홈 디렉토리에 설치되어 있으면 홈 디렉토리 내의 어느 곳에서나 읽고 쓸 수 있습니까?
stackinator

2
권한으로 실행되므로 액세스 할 수있는 모든 항목에 액세스 할 수 있습니다.
DopeGhoti

1
단일 사용자 컴퓨터에서 사용자 전용 액세스는 루트 액세스보다 훨씬 안전하지 않습니다. 어느 쪽이든, 사용자가 중요한 모든 것에 액세스 할 수 있습니다.
sudo
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.