Run Widget as Root? - Android Software Development

Hi guys,
I'm building a widget that will be extensions to HTC Sense and will require root access so it can access files from another application.
If I go into the shell using ADP, I can "chmod 664" the file (it's 660 by default) and my widget can then read the file. However, after a period of time, the phone resets the permissions to 660 and then my widget fails.
Is it possible to run the widget as root (on a rooted phone of course), or somehow increase permissions to give permanent access to this file?
Thanks.

For anyone interested, I found a semi solution that lets me run "su" and then my chmod command:
http://code.google.com/p/market-enabler/wiki/ShellCommands
If there is a better way, let me know.

Related

[Q] droid x download permissions issue

so im stuck and can not figure this out. for some reason the permissions for the download folders on my sd card do not have any user permissions checked. i can not download anything at all but the market is fine as it is on the internal memory i suppose. the only reason i came across the user permissions issue was because i found another post where someone had the same problem with downloading and corrected the issue by using root explorer and manually adding user permissions to any folder he used for downloading. now... here is my problem... i used root explorer and when i try to add user permissions to these folders, the settings that changed do not stick. i check mark the 3 boxes and accept the changes but if i go back into that folders specific permissions, they are unchecked once again. how can i get it to not revert back or better yet how can i just resolve the issue in whole so i dont have to keep fixing folder permissions on the sd card for app that downloads? i dont see why the sd card of all places would start having these permission issues. the guys post i came across tried to tie this issue to the fix permissions option in rom manager saying it may have caused the problem but i didnt use rom manager to fix permissions until this problem started. i was on liberty 1.5 rom then reverted back to rooted stock where i still have the problem with all downloading except the market again. any help would be greatly appreciated!
58 views and not a single response? wow.... so very shocking to see that, i bet if i had post this in the dev forum i would have gotten 15+ responses just to say that im in the wrong section then anther 30 for people to argue back and fourth on how everyone is being rude or that this is the reason devs stay in irc...
Give this a try if you have the sdk and adb set up.
from a command prompt:
1) adb devices (make sure that your phone shows up)
2) adb shell
3) su (assuming you have rooted your phone)
4) cd /mnt/sdcard/download (or whatever the folder on your sdcard for downloads is called)
5) chmod 777 /mnt/sdcard/download (or whatever your download folder is called)
this should change the permissions on your sdcard to have full permissions.
thanks for your reply! im grateful, but wouldnt that only change the permissions for the "download" folder? which is mostly only a default location for apps such as the browser?
The way sysadmin-x is suggesting makes the permissions way different than they are by default, I wouldn't recommend doing it that way.
If you want to change permissions on the entire sd card to what they are by default, try running(as root)
Code:
chown -R system:sdcard_rw /mnt/sdcard && chmod -R 075 /mnt/sdcard
Edit: that code messes up the permissions on one folder, after running that you should also run
Code:
chown -R root:root /mnt/sdcard/.android_secure && chmod -R 000 /mnt/sdcard/.android_secure
Just do this: download a terminal emulator from the market. Open the app. Type su and press enter. Give it root access. Type chmod 777 /sdcard and press enter.
Please note you need root to do this

Enable 2 finger rotation in GMaps 5

You may have noticed that GMaps 5 doesn't rotate with the 2 finger method shown in the youtube promo clip. The following solution appears to work for any device - I confirmed this worked on my u8800 x5 today.
Albeit a fairly benign change, make sure you have a /system backup you can restore if needed - would be a shame to lose your touchscreen
Using Root Explorer or command line
Replace (yes that means remove this file and exchange with another)
/system/etc/permissions/android.hardware.touchscreen.multitouch.xml
with xml extracted from attached zip.
"android.hardware.touchscreen.multitouch.distinct.xml"
set permissions
adb shell chmod 644 /system/etc/permissions/android.hardware.touchscreen.multitouch.distinct.xml
(rw-r--r-- if you do it via root explorer gui)
Reboot
Voila... gmaps is a lot more fun
just google "android.hardware.touchscreen.multitouch.distinct" if you want to feel more comfortable
It works. Thanks!

[q] help needed on 6.2.1

Hi all,
I got my KF few days back, Rooted it, before I could install the android market, got forced update to 6.2.1. 2 days ago saw this new root method using BurritoRoot. Tried rooting it, seems successful, however, now when I arrived at the home page, I cant even open the Superuser app at all. It goes the same for the Root Explorer - prompting:
"Root Explorer has not yet managed to obtain root access. Because of issues with Superuser, this often happens the first time the app is run but is usually fine from then on. Click ok and restart the app and try again. Make sure u respond correctly to the Superuser prompt." Then it comes with a force close.
Seriously I do not know whats wrong with it, now i cant even use the root explorer for me to install Android Market.
Anybody can help me with it?
Million Thanks.
did you use the superuser-2.apk ?
http://forum.xda-developers.com/showthread.php?p=20645033&highlight=superuser-2+apk#post20645033
b63 said:
did you use the superuser-2.apk ?
http://forum.xda-developers.com/showthread.php?p=20645033&highlight=superuser-2+apk#post20645033
Click to expand...
Click to collapse
Im using the ROOT INSTALL - Method 1 and I downloaded the file from Rootzwiki, apparently the file is named "com.noshufou.android.su-1.apk". and I used the following commands:
adb root
adb remount
adb push su /system/xbin/su
adb shell chown 0.0 /system/xbin/su
adb shell chmod 06755 /system/xbin/su
adb install com.noshufou.android.su-1.apk
adb reboot
So which means I should use the Superuser -2.apk instead?
What should I do now? Download the Superuser-2 file and repeat the whole process again???
thanks.
yes - the new version seems to be the only one working with burritoroot
consider to use KFU to make things easier:
http://forum.xda-developers.com/showthread.php?t=1399889
should be option 2 (permanent root with superuser)

[Q] How can i get ADB ROOT? i want to know rageagainstthecage's working principle

hi,guys!
as this title says i found a tool named "rageagainstthecage",but i want to know how dose it work.Can anyone help me ? thanks
try superoneclick
Are you using Linux to grant root access on your Defy?
I rooted mine yestarday and I was a little confused on how to make it, I have same file as you as I read. rageagainstthecage is the exploit that will you grant root privileges. The instructions for linux are here [1]. I replaced 'exploit.bin' with 'rageagainstthecage' or you can use the one provided in that post 'psneuter', the proccess is simple
1. Copy files to phone using adb (I used /data/local/tmp as directory in the phone): su, busybox, Superuser.apk and exploit (exploit name, let's say: rageagainstthecage)
2. Make the exploit executable and execute it
3. Give permissions to the commands su and busybox
4. There you go
All the credits for the autor of the post on IBM forum
I hope this help you with your question
[1]
PHP:
www_ibm_com/developerworks/mydeveloperworks/blogs/coolwinding/entry/how_to_root_defy_on_linux1
jianbangguo said:
try superoneclick
Click to expand...
Click to collapse
Dose the superoneclick use "rageagainstthecage" to grant adb root access? i just want to know "rageagainstthecage", how dose it work? can you help me? thanks
cristianpark said:
Are you using Linux to grant root access on your Defy?
I rooted mine yestarday and I was a little confused on how to make it, I have same file as you as I read. rageagainstthecage is the exploit that will you grant root privileges. The instructions for linux are here [1]. I replaced 'exploit.bin' with 'rageagainstthecage' or you can use the one provided in that post 'psneuter', the proccess is simple
1. Copy files to phone using adb (I used /data/local/tmp as directory in the phone): su, busybox, Superuser.apk and exploit (exploit name, let's say: rageagainstthecage)
2. Make the exploit executable and execute it
3. Give permissions to the commands su and busybox
4. There you go
All the credits for the autor of the post on IBM forum
I hope this help you with your question
[1]
PHP:
www_ibm_com/developerworks/mydeveloperworks/blogs/coolwinding/entry/how_to_root_defy_on_linux1
Click to expand...
Click to collapse
pardon my poor english,I just want to know how dose it work, for example : rageagainstthecage's Working principle,not how to use "rageagainstthecage" to grant root access,thank you !!
The principle of how it works is very simple, the rageinthecage exploit just forks proccesses until the proccessor hits the max, then the system will kill the olders apps, because you are using adb and running psneuter, the system will kill the adb shell, and here is the magic, when you restart the adb shell it start with root rights, to prevent that, inmediatly adb starts, the system calls setuid function, but because the proccesses list is full, the explot prevents the setuid call, allowing you to maintain the root rights, and in that point, you push Superuser.apk to allow the root access to the apps, changin before the permissions to the su binary allowing you to call that binary with a less rights user, that is the idea beyond the exploit!, wish that help you!
Sorry for the bad english
LeonardoJegigzem said:
The principle of how it works is very simple, the rageinthecage exploit just forks proccesses until the proccessor hits the max, then the system will kill the olders apps, because you are using adb and running psneuter, the system will kill the adb shell, and here is the magic, when you restart the adb shell it start with root rights, to prevent that, inmediatly adb starts, the system calls setuid function, but because the proccesses list is full, the explot prevents the setuid call, allowing you to maintain the root rights, and in that point, you push Superuser.apk to allow the root access to the apps, changin before the permissions to the su binary allowing you to call that binary with a less rights user, that is the idea beyond the exploit!, wish that help you!
Sorry for the bad english
Click to expand...
Click to collapse
Great info, thanks for sharing this with us I was wondering the same

Just rooted - unable to backup

Hi all,
Ive spent to weekend reading about rooting and ROMS/Kernels and decided to try it. I used a root kit found here from Mskip (great kit). Ive sucessfully rooted, and then sucessfully installed Smooth Rom 4.3 with the Motley kernel.
Ive downloaded Titanium Backup and Rom Manager. TB worked and I did a backup (which I now cant find) (i have ES File Explorer). I upgraded to Titanium Pro, and now when I open the app is states root was denied. I remember when I first opened TB SuperSu asked me to grant it access. After a reboot I opened SuperSu and stated a Binary update was necessary and performed it.
Now TB pro states root was denied, when I open SuperSu there is nothing there in the apps list, and I dont know how to manually grant TB root access.
Sorry if this is noobish, not sure what to do and I dont want to keep going without a backup.
Edit: When I try to backup in ROM Manager I hit backup, it brings up the notification to name the backup, I hit ok and nothing happens.
cam75 said:
After a reboot I opened SuperSu and stated a Binary update was necessary and performed it.
Now TB pro states root was denied, when I open SuperSu there is nothing there in the apps list, and I dont know how to manually grant TB root access.
Click to expand...
Click to collapse
That sort of sounds like the SuperSU "su" update might have failed. Can you get root with other apps? (e.g. go in to a terminal emulator and type "su")
Note there is a chicken-and-egg problem if (either) SuperSU/su or Superuser/su fail: they need root themselves to remount /system so that the "su" binary can be updated.
If no apps can get root, then you sort of have "lost root", and the fix is to manually insert the .apk and su binary into /system/app and /system/bin/su (or /system/xbin/su depending on flavor!) either with a flash package in recovery, or manually via the adb shell command line (with custom recovery running).
HTH
PS you should be able to just manually start the recovery and do a backup in the meantime, no? The fact that ROM manager isn't doing anything could either be a lack-of-root problem or something else (a busybox dependency?)
bftb0 said:
That sort of sounds like the SuperSU "su" update might have failed. Can you get root with other apps? (e.g. go in to a terminal emulator and type "su")
Note there is a chicken-and-egg problem if (either) SuperSU/su or Superuser/su fail: they need root themselves to remount /system so that the "su" binary can be updated.
If no apps can get root, then you sort of have "lost root", and the fix is to manually insert the .apk and su binary into /system/app and /system/bin/su (or /system/xbin/su depending on flavor!) either with a flash package in recovery, or manually via the adb shell command line (with custom recovery running).
HTH
PS you should be able to just manually start the recovery and do a backup in the meantime, no? The fact that ROM manager isn't doing anything could either be a lack-of-root problem or something else (a busybox dependency?)
Click to expand...
Click to collapse
thx for the quick response, however much of that is WAY over my head. I opened terminal emulator and typed su and this is what popped up. 1 [email protected]:/ $
When TB is opened it states error "sorry I could not acquire root privilegdes. this applidation will not work. please verify that your rom is rooted and try again. this attempt was made using the "/system/xbin/su" command.
I dont see busybox in my app drawer
cam75 said:
thx for the quick response, however much of that is WAY over my head. I opened terminal emulator and typed su and this is what popped up. 1 [email protected]droid:/ $
Click to expand...
Click to collapse
If the SuperSU app (and companion binary) were working correctly, you should have seen one of those "Accept / Deny" pop-up messages coming from the SuperSU app... assuming that you didn't previously grant root access to that terminal emulator app. You didn't mention that happening.... ?
Also, usually the command prompt usually changes from $ to # when you have root, but not always; the explicit way to check would be to (after you have tried the "su" command) to type in "id" and hit return at the prompt - that will tell you explicitly if you are root or not. (That's the letter "i" followed by the letter "d" followed by the return key).
From the way you describe this, it is sounding like you lost root.
I gotta go watch part of the game. In the meantime, perhaps you should at least create a backup manually.
As I said, the simplest fix-up would be to get Superuser.apk/su or SuperSU/su re-installed into /system/app and /system/{x}bin/su (it seems that chainsDD and chainfire use different locations).
There might be floating around someplace a flashable zip file with this stuff in it - to be used for "lightly rooting" a stock ROM after a custom recovery is in place. But things have been in flux recently with both the SuperSU (chainfire) and Superuser (chainsDD) kits because of the JellyBean multi-user support, so the version you might need is important. So you would have to do the research to figure out where.
gotta go - good luck.
bftb0 said:
If the SuperSU app (and companion binary) were working correctly, you should have seen one of those "Accept / Deny" pop-up messages coming from the SuperSU app... assuming that you didn't previously grant root access to that terminal emulator app. You didn't mention that happening.... ?
Also, usually the command prompt usually changes from $ to # when you have root, but not always; the explicit way to check would be to (after you have tried the "su" command) to type in "id" and hit return at the prompt - that will tell you explicitly if you are root or not. (That's the letter "i" followed by the letter "d" followed by the return key).
From the way you describe this, it is sounding like you lost root.
I gotta go watch part of the game. In the meantime, perhaps you should at least create a backup manually.
As I said, the simplest fix-up would be to get Superuser.apk/su or SuperSU/su re-installed into /system/app and /system/{x}bin/su (it seems that chainsDD and chainfire use different locations).
There might be floating around someplace a flashable zip file with this stuff in it - to be used for "lightly rooting" a stock ROM after a custom recovery is in place. But things have been in flux recently with both the SuperSU (chainfire) and Superuser (chainsDD) kits because of the JellyBean multi-user support, so the version you might need is important. So you would have to do the research to figure out where.
gotta go - good luck.
Click to expand...
Click to collapse
Thanks again.
Im watching Superbowl as well. I didnt grant Terminal access. I rebooted into recovery and restored to right after I rooted. SuperSu auto updated through the play store, and stated the binary need updated. I canceled that. TB and ROM manager are showing up in SuperSu. So now Im rebooting into recovery again to after I installed the Smooth Rom/Motley Kernal. I did make a backup of where SuperSu lost root. I now have three backups.
Question on installing the SuperSu apk file. I want to be sure I do it right, if needed. Download the file on my 7. it will go to my download folder. Move it to the system folder and open/run it? what do i do with the current SuperSu folder?
thanks again
I went to my restore point after root and reinstalled 4.3 Smooth ROM Mkernel. I did not take the SuperSu update, (ill wait for the next update) and everything is fine TB an ROM manager working fine, did a backup in both.
Thanks for your help on this.
cam75 said:
Question on installing the SuperSu apk file. I want to be sure I do it right, if needed. Download the file on my 7. it will go to my download folder. Move it to the system folder and open/run it? what do i do with the current SuperSu folder?
Click to expand...
Click to collapse
Dealing with .apk's is not that difficult - drop them into the correct place and reboot.
In Android, apps (.apk files) are stored in one of two places: /system/app or /data/app. It is even possible for two versions of an app to be on the phone - one in /system/app and one in /data/app; that is how upgrades of factory-installed apps happen: the pre-installed app is in /system/app... and never gets deleted (read-only filesystem), whereas update versions get dropped into /data/app. Generally you can just drop an .apk file into either of these locations, wipe the dalvik cache and reboot. During the android boot, these files are compiled into .dex objects in the dalvik-cache, and various version, consistency, rights and permissions are cross-checked.
Think of it this way: when you boot a new ROM for the first time, /data starts out completely empty. Everything needed to support each pre-installed app in /system/app gets created automatically during the android layer start-up.
The "su" native binary is a bit more complicated - it needs to be:
- owned by the user.group root.root
- be executable
- be setuid/setgid
Imagine that you had a copy of these two files on your "/sdcard". If you booted into the custom recovery, you could affect these changes like this:
C:\foo> adb shell
# mount # show what is already mounted
# mount /sdcard # if needed
# mount /system # if needed
# mv /system/app/SuperSU.apk /system/app/SuperSU.apk.old
# cp /sdcard/SuperSU.apk /system/app/SuperSU.apk
# mv /system/xbin/su /system/xbin/su.old
# cp /sdcard/su /system/xbin/su
# chown root.root /system/xbin/su
# chmod 6755 /system/xbin/su
# cd /
# umount /system
# exit
C:\foo>
*
As a practical matter, it is probably easier to just make sure to make a fresh backup if you are about to update the su binary - in case anything goes wrong. It might also be useful to use a root-aware file manager to remount the /system partition in rw mode prior to doing the "update su binary" procedure in the SuperSU app.
Good luck
* note that SuperSU and Superuser apps choose different locations for the su executable file - one uses /system/bin/su and the other /system/xbin/su. There might also be a symlink between these locations. Best policy is probably to examine a known-working installation to determine how to proceed.

Categories

Resources