ฉันจะเพิ่มการอนุญาตให้รูทได้อย่างไร


11

มีวิธีใดบ้างที่ฉันตั้งใจให้สิทธิ์รูทแก่แอพบางแอพ ไม่ใช่โดยอัตโนมัติผ่าน SuperSU เมื่อแอพบางแอปขอสิทธิ์การใช้งานรูท แต่เป็นวิธีการเลือกแอพผ่านเครื่องมือบางอย่างและให้การอนุญาตรูท

ตัวอย่างเช่นฉันเพิ่มแอพข้อความที่ชื่นชอบลงในรายการที่อนุมัติแล้วฉันสามารถเปิดไฟล์รูทผ่านแอพนั้น

คำตอบ:


13

ไม่คุณควรขอให้ผู้พัฒนาแอปทำเช่นนั้น

บน UNIX เช่นระบบการอนุญาตถูกจัดการด้วยสิ่งที่เรียกว่า UID

ทุกกระบวนการมีขั้นตอนเดียวและกำหนดสิ่งที่พวกเขาสามารถเข้าถึงได้ นอกจากนี้ยังมีกลุ่มที่ได้รับอนุญาตให้สมาชิกสามารถใช้งานได้ เมื่อแอพมีสิทธิ์เช่นเดียวกับที่Write to SD cardพวกเขาอยู่ในกลุ่มที่มีสิทธิ์นี้

สิทธิ์รูทเป็นข้อยกเว้นเนื่องจากไม่ได้ประกาศไว้ในรายการของแอป แต่เป็นรหัส รูทนั้นไม่ใช่กลุ่ม แต่เป็น UID แยกต่างหาก (เนื่องจากเป็นผู้ใช้แยกต่างหาก) ดังนั้นจึงไม่ใช่เรื่องง่ายที่แอปจะใช้งาน แอปที่มีสิทธิ์รูทจำเป็นต้องเขียนอย่างชัดเจนเพื่อดำเนินการดังกล่าว

วิธีการทำงานนี้คือทุกครั้งที่แอพต้องการทำบางสิ่งบางอย่างในฐานะรูทต้องขอให้suไบนารีทำแทน suจะถามแอปที่จัดการการอนุญาตเหล่านี้ (เช่น SuperSU) ว่าแอปได้รับอนุญาตให้เข้าถึงรูทหรือไม่ หากไม่เป็นเช่นนั้นระบบจะแจ้งให้คุณอนุญาตหรือปฏิเสธ จากนั้นแอ็คชันจะดำเนินการเป็นrootไม่ใช่ผู้ใช้แอป การกระทำเหล่านี้ไม่ได้เป็นส่วนสำคัญของแอป แต่เป็นการปฏิบัติการภายนอก

ในขณะที่ในทางทฤษฎีแล้วมันเป็นไปได้ที่จะเพิ่มสิ่งนี้ลงในแอพนี่เป็นกระบวนการที่ไม่สำคัญที่ต้องมีความรู้ในการเขียนโค้ด smali ซึ่งเป็นรูปแบบภายในของเครื่องเสมือน Dalvik (ส่วนหนึ่งของระบบที่เรียกใช้ไฟล์ apk) smali และถึงแม้จะมีความเสี่ยงด้านความปลอดภัยอย่างมากหากแอปอนุญาตให้แอปอื่นเข้าถึง: ไม่ทราบว่าจะให้สิทธิ์การเข้าถึงรูทพิเศษแยกจากการเข้าถึงปกติอย่างไร ดังนั้นในความเป็นจริงมันเป็นไปไม่ได้จริงๆ


1
สำหรับผู้ที่ไม่รู้ว่า smali คืออะไร: เป็นภาษาแอสเซมบลีสำหรับรหัสเครื่องเสมือน dalvik ของ Android และใช้บ่อยในไฟล์วิศวกรรมย้อนกลับ dex สิ่งที่อาจไม่ชัดเจนเล็กน้อย: แอพต้องดูแลตัวเองด้วยการรูทโปรแกรม นั่นเป็นสาเหตุที่ผู้พัฒนาต้องรวมไว้ การเพิ่มลงใน SuperSU ไม่ได้ช่วยตราบเท่าที่แอพไม่ได้ใช้สิทธิ์รูท
ce4

ดังนั้นฉันจึงไม่สามารถเปิดไฟล์รูทบางไฟล์ผ่านโปรแกรมแก้ไขข้อความที่ฉันโปรดปรานได้หากโปรแกรมเมอร์ไม่ได้รหัสแอพเพื่อยอมรับการเปิดไฟล์รูท?
AnDroDroo

1
ถูกต้องอย่างแน่นอน ในการให้ตัวอย่าง: หากแอปไม่สามารถเริ่มต้นด้วยรูทและพยายามเปิด "ไฟล์รูท" บางไฟล์ก็จะได้รับ "สิทธิ์ที่ถูกปฏิเสธ" - เนื่องจากการเข้าถึงไฟล์จะยังคงทำกับแอพ UID ( จะไม่ขอสิทธิ์ superuser เพื่อเปิด) ในทางกลับกันหากแอปเริ่มใช้รูท UID (เช่นsu <app>) แอปจะเข้าถึงไฟล์รูทนั้นในฐานะรูทและได้รับอนุญาต
Izzy

นั่นเป็นเหตุผลที่ฉันไม่สามารถใช้โปรแกรมแก้ไขข้อความอื่น ๆ เพื่ออ่านไฟล์รูทได้ :)
AnDroDroo

1
@Izzy AFAIK คุณไม่สามารถรันแอพ Android ปกติด้วยรูท UID หรือเปลี่ยน UID ของแอพที่กำลังรันอยู่ สิ่งเดียวที่คุณสามารถทำได้คือรันโปรแกรมบรรทัดคำสั่งด้วย su และดำเนินการคำสั่งด้วยสิทธิ์ผู้ดูแลระบบ
Robert

1

ฉันพบวิธีที่อาจช่วยคุณได้ ฉันใช้นี้เพื่อให้เข้าถึงรากTasker

หากคุณใช้เทอร์มินัลอีมูเลเตอร์เพื่อให้สิทธิ์การอ่าน แต่ไม่สามารถเข้าถึงโฟลเดอร์ที่ใช้

  • su
  • chmod 775 /location/of/folder/

จากนั้นตัวแก้ไขข้อความของคุณจะสามารถอ่านไดเรกทอรีนั้นและถ้าคุณสามารถลองบันทึกไฟล์ในโฟลเดอร์แล้วมันจะพยายามขออนุญาตรูท

นอกจากนี้ยังอาจให้ข้อผิดพลาดในการเขียน


ไดเร็กทอรีทั้งหมดใน/location/of/folder/จากรูทถึงบนต้องอ่าน / สำรวจได้ นอกจากนี้ SELinux อาจปฏิเสธการเข้าถึง ดังนั้นวิธีนี้จึงไม่ค่อยมีประโยชน์
Irfan Latif
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.