Adb kabuğunu 'su' yazmadan root olarak çalıştırmamın bir yolu var mı?


45

Adb kabuğunu yazmadan root olarak çalıştırmamın bir yolu var mı su? Kabuğa girmeden kök erişimine sahip olmak istiyorum.

Yanıtlar:


40

Sorunuzu doğru anlamak ediyorum, size çalıştırdığınızda otomatik olarak root erişimi nasıl soruyorsun adb shellsen kabuk gidip yazmak zorunda kalmamak için bu, sutelefonunuzda root olarak bir komut çalıştırmak için.

Bu, önyükleme bölümünüzdeki, çoğu özel ROM'un varsayılan olarak kök iznine izin verecek şekilde değiştirdiği bir bayrakla denetlenir. Kullandığınızda bir $zamana bırakılırsanız adb shell, iki kalıcı seçeneğiniz ve bir geçici seçeneğiniz vardır (yeniden başlatmanız durumunda yapışmaması geçicidir):

  1. Değişikliği içeren bir ROM'u Flash
  2. Özel bir boot.img oluşturun ve telefonunuza indirin
  3. adbdKök izinleriyle cihazınızda yeniden başlatın

2 Numara aslında o kadar zor değil, ama dikkatsizseniz biraz tehlikeli olabilir. Burada süreci açıklayan ve size yardımcı olacak bir kaç Perl betiği içeren bir wiki makalesi var . Bu talimatlar bir Linux / Unix ortamını varsayar. Bu talimatları Fedora Linux'ta şahsen kullandım ve size çalıştıklarını söyleyebilirim, ancak Mac'ler gibi diğer * nix ortamlarını bilmiyorum. Ayrıca benzer Windows yönergeleri de bilmiyorum, ancak Windows'taysanız bazılarını izlemeyi deneyebilirim. Farklı komutlar farklı bölüm tabloları kullandığından, komutlar telefondan telefona değişebilir.

Genel olarak konuşursak, geçerli boot.img'nizi telefonunuzdan çekmeniz, paketinden çıkarmanız, ramdisk'i çıkartmanız ve default.prop dosyasını bulmanız gerekir . Bu, bir metin düzenleyicide açmanız ve ardından değeri içeren satırı bulmanız gereken bir düz metin dosyasıdır ro.secure. Satır diyorsa ro.secure=1o zaman değiştirmeniz gerekir ro.secure=0. Bundan sonra ramdisk ve boot.img paketlerini yeniden paketleyebilir, ardından telefonunuza aktarabilirsiniz. Yeniden başlattıktan sonra, koşmak zorunda kalmadan #yaptığınız her seferinde bir komut ile karşılaşacaksınız .adb shellsu

Alternatif olarak, özel bir ROM kullanıyorsanız ancak bu değişikliği içermiyorsa, ROM'u açıp yukarıdaki adımları kullanarak içerdiği boot.img dosyasını değiştirebilirsiniz. Ardından ROM'u yeni değiştirilmiş boot.img ile fermuarlayabilir ve zip dosyasını normalde olduğu gibi flaş edebilirsiniz.

Bu muhtemelen söylemeden geçiyor, ama bunu yaparken dikkatli olun . Önyükleme bölümünüzle uğraşmak telefonunuzu kolayca kolayca mahvedebilir ve sizi HBoot ile kurtarmaya zorlayabilir. Genişletilmiş Fastboot komutlarını kullanabilmenizi ve kurtarma işlemini gerçekleştirebilmenizi sağlamak için Fastboot'u test etmenizi şiddetle tavsiye ederim. Bu, modelinize göre biraz farklılık gösterir, ancak çoğu telefonda, telefonu yeniden başlatmak için çalıştırılabilecek bir tür masaüstü yazılımı bulunur.


Üçüncü seçenek, birçok durumda adbdcihazınızda kök ayrıcalıklarıyla yeniden başlatmanızın mümkün olmasıdır . Bir olasılık adb rootbir PC terminalinden çalıştırmaktır , ancak bu tüm ROM konfigürasyonlarında çalışmayacaktır (ROM bir "userdebug" olanı olarak inşa edilmelidir). Ayrıca Chainfire'ın adbd güvensiz uygulamasını da deneyebilirsiniz . Bu, yeniden başlatma boyunca geçerli olmayacağından, uygulamayı adb rootyeniden başlatmanız veya telefonunuzu yeniden başlattığınızda tekrar kullanmanız gerekir .


Telefon ayrıca kök izinleriyle de açılıyor mu? Bir güvenlik sorunu olabilir.
Matthew

1
@Matthew: AFAIK, adbdtelefonda varsayılan olarak sadece kök iznine izin veriyor . Android ekibinin bir üyesinden bunu ima eden bir yazı var , ancak açıkça söylemedi. AOSP'ye verilen bu taahhüt , yalnızca adbdbaşlangıçta kontrol eden bir bayrak olduğu anlamına gelir (onu kaynağın başka bir yerinde göremiyorum). Bahsettiğim gibi, gördüğüm özel ROM'ların çoğunluğu (CM dahil) 0 olarak ayarlamıştı.
eldarerathis

Yine de yukarıdakilerde% 100 olmadığımı söyleyeceğim. Default.prop dosyasıyla ilgili resmi bir belge bulamıyorum, belki de Google-
fu'm bu

adb rootAdbd'i otomatik su modunda yeniden başlatma komutunu keşfettim , görünüşe göre buna güveniyor. Yine de sadece bir bayrak olduğu konusunda haklı olduğunu düşünüyorum.
Matthew

1
@MatthewRead: Bağlı olduğum taahhüdün kaynak kodunun aslında bu etki için bir yorumu var :) // ... except we allow running as root in userdebug builds if the service.adb.root property has been set by the "adb root" command". Bu arada, Kindle Fire için BurritoRoot'un ilk versiyonunun çalışması, IIRC.
eldarerathis

15

Eğer telefonunuz köklü ise, "su -c" komutuyla komutları çalıştırabilirsiniz.

Telefonların ürün bilgilerini almak için build.prop dosyasındaki bir cat komutunun bir örneği.

adb shell "su -c 'cat /system/build.prop |grep "product"'"

Bu root izni çağırır ve komutu '' içinde çalıştırır.

5 uçtan alıntılara dikkat edin; bu, TÜM son tekliflerinizi kapatmanız veya bir hata almanız gerekir.

Açıklama için format bu şekildedir.

adb shell "su -c '[your command goes here]'"

EXACTLY komutunu, kabukta çalıştırırken normalde yaptığınız gibi girdiğinizden emin olun.

Bir deneyin, bunun yardımcı olacağını umuyorum.



1

Neden root olarak kaçmaya çalışıyorsun? ADB kabuğunu kök ile çalıştırmak istediğinizi ancak ADB kabuğunu kullanmak istemediğinizi mi söylüyorsunuz? Açıklayabilir misin?

Uygulama kök erişimi istiyorsa, telefonunuzdaki SuperUser uygulaması izin vermeli veya vermemelidir. Telefonunuzu kurduğunuz işlem bir SuperUser uygulaması içermelidir.


Adb shell gdbserver'ı terminalimden çalıştırmak için shell'e çalıştırmak istiyorum
Hank

2
@Hank: Herhangi bir yararlı iş yapmak için bir terminalin her zaman bir kabuğa bağlı olması gerekir; Eğer onlar standart Linux / Android deyişiyle daha nelerdi farklı bir fikir var gibi gözüküyor çünkü belki de "Terminal" ve "kabuk" tutarındaki tanımına açıklık olmalıdır
Yalan Ryan

Böylece adb shell psya da adb shellve sonra psçalışan işlem listesini almak için yapabilirsiniz. Bu yüzden bazı şeyler kök erişimi gerektiriyor, eskisi gibi yapabilmek istiyorum.
Hank,

1
“Neden” (özellikle gdbserver söz konusu olduğunda) nedeni, geliştirme makinesinde çalışan bir betikte bu özelliği kullanabilmek olacaktır. Bununla birlikte, bir komut dosyasının, adb'nin etkileşimli bir kabuk olarak ne düşündüğüne dair komutları eklemesi mümkündür, bu nedenle, kök için adb varsayılanına sahip olmak gerçekten bu nedenle gerekli değildir.
Chris Stratton

1

Alternatif olarak, komut dosyanızı telefona yazabilir ve adb'nin çalıştırmasını sağlayabilirsiniz, örneğin:

adb shell sh /sdcard/myscript.sh

Betik, sizin müdahaleniz olmadan kendini kaldırabilir (SuperUser'ın onay hatırlayacak şekilde ayarlandığı varsayılarak), örneğin:

su
pm setInstallLocation 1

Bunu telefonumda başarılı bir şekilde yaptım, tek sorun adb kabuğu oturumunu nasıl temiz bir şekilde sonlandıracağımı tam olarak çözememekti. Windows komut istemine geri dönmek için Windows kabuğumda Ctrl-C'ye ihtiyacım var - aksi halde adb sadece #istemde oturuyor ve girişi kabul etmiyor.


0

onarım ev düğmesi sorunu başarısızlık için kullanıyorum


adb aygıtları

adb kabuğu su commands

veya

adb root shell sqlite3 /data/data/com.android.providers.settings/databases/settings.db "Güvenli INSERT (isim, değer) DEĞERLER ('device_provisioned', '1');"

adb-server öldürmek


-1

Ayrıca, 'sh' kısmındaki suid bitini ayarlayabilirsiniz. BusyBox kullanıyorum, böylece talimatlar kurulumunuzla eşleşmeyebilir:

  1. adb kabuğu
  2. su
  3. mount -o remount, rw / sistem (veya: adb remount)
  4. Ls -la / sistem / bin / sh lrwxr-xr-x kök kabuk 2012-11-10 15:20 sh -> mksh
  5. chmod 4755 / sistem / bin / sh
  6. ls -la / sistem / bin / mksh -rwsr
    -xr-x kök kabuk 157520 2012-11-10 09:54 mksh (intihar bitinin ayarlandığına dikkat edin)
  7. ^ D
  8. adb kabuğu

ve sizden kök istemi almalısınız


3
Benden -1. Bu güvensiz ve büyük bir delik açar. Herhangi bir APP kök olabilir ve hasara yol açabilir.
ce4

6
Kesinlikle bunu yapma, bu feci bir güvenlik açığı . (Feragatname: Ben mksh
koruyucuyum
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.