2012-02-27 3 views
1

이것은 내가하고 싶은 것의 상상의 예입니다. 문자 그대로 받아들이지 마라.제한된 권한으로 라이브러리 나 프로세스를로드 할 수 있습니까?

내 프로세스가 www-data로 실행 중이며 thedevil.lua라는 lua 스크립트가 있다고 가정 해 보겠습니다. 삭제, 손상 및 가능한 한 많은 문제를 일으킬 것입니다. 루아 인터프리터가있는 프로세스 (또는 공유 객체로드)를 실행하고 사용자가 www- 데이터이므로 모든 웹 사이트를 망칠려고합니다.

제한된 권한으로이 프로세스를 만들거나 라이브러리를로드 할 수있는 방법이 있습니까? 스크립트가 /var/www/devilscript/thedevil.lua에 있다고 가정 해 보겠습니다. /tmp/www/devilscript/var/www/devilscript/에 대한 권한을 부여하고 싶습니다. 그게 가능하니? devilscript라는 새로운 사용자를 만들고 그 사용자로 프로세스를 실행하는 것보다 제한된 권한을 부여하고 싶지 않습니다. 나는 단지 www- 데이터라고 말하고 싶지만,이 프로세스/lib에 내가 할 수있는 것의 부분 집합만을주고 싶다.

-edit- 낮은 권한으로 말한 so 또는 binary를 실행하는 함수의 이름을 알려 주시겠습니까?
-edit2- 내가 질문 한 것처럼 창문을 쓸 수 있습니까?

답변

2

예. 현재 실행중인 운영 체제에 따라 최신 Unix 시스템에서 사용할 수있는 다양한 종류의 샌드 박싱 방법이 있습니다. 그것은 당신이 달리고있는 것에 약간 달려 있습니다. 리눅스에서는 SELinux, Apparmor, Tomoyo 등이 너무 많습니다. FreeBSD는 Capsicum 기능 시스템뿐만 아니라 강제적 인 접근 통제 시스템을 가지고 있습니다. Mac OS X에는 샌드 박스 시스템도 있습니다.

대부분의 시스템에서는 특정 프로세스가 상당히 세분화 된 권한을 줄일 수 있습니다. 일반적으로 기능 시스템은 MAC (Mandatory Access Control) 시스템보다 사용하기가 쉽지만 사용 빈도가 적습니다.

이전 Unix 시스템에서 이러한 종류의 권한 제한을 수행하는 기본적인 방법은 프로세스를 "chrooting"하는 것인데, 즉 chroot 시스템 호출을 사용하여 파일 계층의 제한된 부분에서 프로세스를 실행하는 것입니다. 유감스럽게도 유닉스 시스템에서 사용할 수있는 유일한 진정한 이식성있는 형태의 권한 제한은 여전히 ​​남아 있습니다. 따라서 많은 시스템 데몬의 설정 시스템에서이를 경험하게 될 것입니다.

+0

저는 C++을 사용하고 있습니다 만, C 메소드의 이름을 나에게 줄 수 있습니까? 공유 라이브러리 현명한 나는 단지 dlopen을 보았고 그 옵션을 가지고 있지 않았다. 내가 현명하게 처리 한 것은 아직 보지 못했습니다. –

+0

불행하게도, 정확한 OS와 사용중인 OS의 버전에 따라 달라지며, 심지어 관련 방법이 불쾌하게 복잡해집니다. 이것은 제가 두려워하는 매뉴얼을 요구할 것입니다. 위에서 언급 한 목록에서 OS를 발견 할 수 있다면 해당 특정 OS에 대한 설명서를 찾으십시오. 예를 들어 Linux에서는 SELinux 또는 Apparmor를 지원하는지 시스템에 도움이되는지 확인할 수 있습니다. – Perry

+1

arg. 나는 chroot (아직까지는 havent) 또는 bc가 수천이 될 수도 있고 (동적으로 만들어진) 프로젝트 이름을 바꿀 수도있다. 이 exe를 가상 사용자 또는 me-but-limited로 실행하는 것이 쉽습니다. -edit- 나는 데비안을 사용하고 있지만 리눅스가 기본적으로이 작업을 수행하기를 희망했다. –

1

SELinux를 사용하면 프로세스가 (심지어 루트로) 실행중인 사용자와 관계없이 다양한 파일 컨텍스트와 리소스에 대한 액세스가 제한된 도메인을 만들 수 있습니다.

+0

좀 더 자세한 정보를 얻을 수 있습니까? 나는 실행할 필요가있는 so 또는 bin의 경로로 스크립트를 읽을 것입니다. 제한된 권한으로 어떻게 실행합니까? 맨 페이지에서 어떤 기능을 찾으십니까? –

+0

그것은 단순한 기능 이상입니다. 이 작업을 수행하려면 SELinux 모듈을 만들어야합니다. –

+0

arg :(. 그게 고통 스럽네. –

관련 문제