2012-04-05 2 views
8

중복 가능 : what does the su mean: process = Runtime.getRuntime().exec("su");su는 어떻게 안드로이드에서 작동합니까? 그리고 그것이 작동하기위한 전제 조건은 무엇입니까? Android에 뿌리 내리는 것은 무엇입니까?

나는 모든 다른 것들을 시도해 보는 데 지쳤으나 나는 여전히 su가 작동 할 때 이해가되지 않습니다. Android에서 기기를 응원하는 것은 무엇입니까? 누군가 제발 도와주세요.

나는 다음 질문에 답했다. 내가 거기에 게시 한 솔루션은 테스트를 거쳤으며 또한 효과가있었습니다. 나는 다음 시도

:

Adding full permission for a image file in android.

여기 내 질문이다.

복사 됨 su. SuperUser.apk 설치된

,

프로그램에서 나는 SU라고하고 i가 필요한 작업을 수행 새롭게 생성 된 프로세스를 사용.

여기에는 2 개의 검색 결과가 있습니다.

1) 장치가 루팅 된 경우 (z4root에서 영구 루트 옵션을 실행하는 것처럼) 작동하면 시스템 파일 권한이 변경됩니다.

2) 장치가 루팅되지 않은 경우 작동하지 않습니다.

z4root가 수행하는 추가 작업으로 작업을 가능하게 해줍니다. 잠깐 설명하십시오.

제가 궁금한 점이 있으면 알려주십시오. 고마워요.

답변

23

z4root (또는 다른 루팅 프로그램)는 자체 UID (사용자 ID)를 0 (루트)으로 변경하기 위해 어떤 익스플로잇을 실행합니다.어떤 종류의 해킹을 수행하고 커널을 속여서 실제로 루트가 될 수 있다고 생각할 수 있다고 생각할 수 있습니다 (z4root가 바이러스 인 경우 키로거 설치에서부터 브릭킹까지 모든 것을 휴대 전화로 할 수 있습니다). 물론 루트 접근을 제공하는 방식으로 커널을 트릭 할 수 있다면 보안 취약성으로 간주되며 (어떤 앱이라도이를 수행하고 악의적 인 것을 수행 할 수 있습니다) 보통 차후의 커널 업데이트에서 수정됩니다 (z4root가 펌웨어를 업그레이드하면 작동합니다). z4root가 0의 UID를 설정 한

는 다음과 같은 것은 않습니다 쓰기로 /system 파티션을 다시 마운트 (기본적으로는 읽기 전용 것), SU 바이너리, Superuser.apk와 비지 박스의 사본 이상과는 읽기 전용으로 다시 /system을 다시 마운트 .

그런데 보통 su 프로그램이 부모 프로세스와 동일한 uid를 가지고있을 때 "해킹"을하지 않고 su 바이너리가 루트 액세스 권한을 부여합니까? 이는 su 바이너리가 set-uid 플래그가 설정되어 있고 항상 uid 0 (root)으로 실행되기 때문입니다.

이제 su 바이너리를 /system/bin으로 복사 한 경우 루트/소유자 권한 (chown root:root /system/bin/su; chmod 6755 /system/bin/su)을 변경하는 것을 잊었음에도 불구하고 루트 액세스 권한이 있어야 루트 권한이 필요합니다.

+1

고마워.하지만 프로그래밍 방식으로 Uid를 변경하는 방법에 어떤 단서 ..? –

+1

@ happy2Help 루트 (uid 0)가 아니면 uid를 변경할 수 없습니다. root만이 uid를 변경할 수 있습니다. 그렇지 않으면 사용자가 높은 권한을 부여 할 수 있습니다. 답변 : setuid 플래그가 설정된 호출 실행 파일 (기본적으로 대부분의 Linux에서는 su 및 sudo 만 있지만 루트를 만들려면 루트 액세스 권한이 필요합니다.) – matix2267

+1

제 3 절 및 아래가 잘못되었다고 생각합니다. 안드로이드가 플래그를 존중하지 않기 때문에 안드로이드의 su는 setuid 플래그를 사용하지 않습니다. 대신 안드로이드의 su는 데몬 프로세스 데몬수와 접촉한다. 데몬수는 init에 의해 직접 fork된다. 따라서 su를 사용하여 실행하는 프로그램은 su의 하위 프로세스가 아니라 데몬수의 하위 프로세스입니다. –

0

장치를 루트 할 때 ROM의 OS 이미지를 덮어 쓰거나 수정하면 높은 권한이 부여됩니다. 응용 프로그램을 사용자 모드로 설치해도 Linux의 어느 버전에서나 권한 상승을 허용 할 수는 없습니다. 어떤 사용자가 "su sudo"를 사용하여 자신을 루트로 만들 수 있다면 보안과 같은 것이 없을 것입니다.

+0

정확하게 OS 이미지 차이점은 무엇을 이해하려고하는지입니다. 회신 해 주셔서 감사합니다. –

+0

"응용 프로그램 설치 중 ... 권한 승격을 줄 수 없습니다."동의하지는 않지만 동의합니다. 일반적으로 장치 루팅 방법이 작동하는 방법. 현재의 비 루트 프로세스를 루트로 에스컬레이션하기 위해 보안 취약점을 악용 한 다음 나중에 권한 확장을 쉽게 할 수 있도록 영구적으로 변경합니다 (예 : su를 일반적으로 읽기 전용 '시스템'파일 시스템으로 복사). – user2957811

0

나는 당신이 무엇을 요구하는지 모르겠다. 그러나 그것은 단순한 것으로 보인다. "수퍼 유저"가되거나 수퍼 유저 권한으로 작업하려고합니다. 현재 장치에서 실행중인 사용자 계정에 부여 된 실제 권한이있는 경우에만이 작업을 수행 할 수 있습니다. 일반적으로 그 권리는 없습니다.

"수퍼 유저가" "루트"

  • 과 동일 함을 명심하면 "루트"만약 장치가 당신이 자신에게 수퍼 유저가 할 수있는 권리를주는 것을 의미한다. 슈퍼 사용자가되어야하는 작업을 수행 할 수 있습니다. "su"는 "수퍼 유저로 로그인"이라는 명령 중 하나입니다. 해당 사용자가되기 위해서는 수퍼 유저 권한이 있어야합니다.
  • 장치를 루팅하지 않은 경우 슈퍼 유저가 수행 할 수있는 권한이 없습니다. 따라서 su으로 전화하면 작동하지 않습니다.

기기가 rooted 인 경우 root 개만 가능합니다.

+1

"당신이 당신의 장치를 뿌리 뽑아 버린 경우에만 루트 물건을 할 수 있습니다."내가 이해하려고 노력하는 것과 그 장비를 뿌리 뽑기 전후의 차이점은 무엇입니까? 내부 OS는 su가 작동하도록 추가되었습니다. 또는 그것이 무엇입니까? –

+0

다른 컴퓨터와 마찬가지로 사용자가 장치에 "로그인"한 것처럼 보입니다. 해당 사용자에게는 수퍼 유저 작업을 수행 할 권한이 없습니다. 귀하가 실행하는 모든 것 (앱 등)은 귀하의 권리와 함께 실행됩니다. 변경하면 사용자 등의 임의의 사용자가 루트가 될 수 있습니다. 보통 도서관 컴퓨터에 로그인하는 것과 같습니다. 관리자가 아닙니다. "응원"은 컴퓨터를 "해킹"하여 기본 사용자가 관리자가 될 수 있음을 의미합니다. – Nanne