Android 또는 iOS와 같은 모바일 운영 체제는 사용자가 특정 작업을 수행하기 위해 애플리케이션에 구체적으로 부여해야 하는 권한 집합(예: 연락처 읽기/문자 메시지 보내기/카메라 액세스 등)을 정의합니다.
Linux 커널 수준에서도 유사한 개념을 사용할 수 있습니까? 예를 들어, 일부 플래그를 설정하고, 일부 메타파일을 지정하고, 읽기/쓰기/실행보다 더 세분화된 특정 사용자 또는 그룹에 대한 규칙을 정의하여 프로그램을 사용 가능한 시스템 호출의 하위 집합으로 제한하여 보안을 향상할 수 있습니다. .
프로그램이 I/O 또는 네트워크 액세스(꼭 그럴 필요는 없다고 확신함)와 같은 작업을 수행하는 것을 방지할 수 있다면 어떤 상황에서는 더 안전할 수도 있습니다.
답변1
Android 모델 접근 방식을 취하고 싶다면 샌드박스에서 애플리케이션을 실행할 수 있습니다. 또는 그 외에도 , , chroot
( 임의 액세스 제어)를 사용하거나 권한이 없는 별도의 사용자를 사용하여 특정 프로젝트를 추가로 격리할 수 있습니다. 그러면 다른 사용자 및/또는 시스템에 영향을 주지 않고 더 쉽게 제한을 적용할 수 있습니다. 그룹에도 동일하게 적용됩니다. 특정 권한이 있는 그룹을 만들고 해당 그룹에 사용자를 추가합니다.SELinux
DAC
https://developer.android.com/guide/topics/permissions/requesting.html
Android의 접근 방식은 샌드박스 내에서 애플리케이션을 실행하고 애플리케이션이 특정 기능을 수행하도록 허용하는 것입니다.외부그 샌드박스. 이것과 "커널 수준에서" 프로세스 작업을 제한한다는 개념 사이에는 분명한 차이가 있습니다.
지금까지의 답변은 그러한 시나리오에 사용할 수 있는 도구 또는 사용 사례의 전체 목록이 아닙니다. 예를 들어 방화벽을 사용하는 것은 인바운드 및 아웃바운드 네트워크 액세스를 제한하는 또 다른 확실한 방법입니다. sysctl
예를 들어 커널 자체에는 커널 구축 방법이나 도구를 통해 활성화/비활성화할 수 있는 많은 항목이 있습니다. 그러나 대부분의 경우 이는 하나의 애플리케이션이 아닌 전체 시스템에 영향을 미칩니다.
응용 프로그램이 안전하지 않을 수 있다고 우려되는 경우 해당 응용 프로그램을 실행하지 마십시오. 또는 가상 머신에서 실행하거나 어느 정도 Docker 컨테이너로 실행할 수 있습니다. 그러나 후자는 신중하게 구성해야 합니다.
마지막으로, 소스 코드에서 애플리케이션의 기능을 확인하거나 이미 이 작업을 수행한 사람에게서 관련 정보를 찾아보세요. 궁극적으로, 무엇을 설치하고 있는지 파악하고 Linux 배포판의 공식 리포지토리를 유지하도록 노력해야 합니다.