[Q] adb shell in batch - Android Software/Hacking General [Developers Only]

Hi,
I'm making a batch file (*.bat) for myself to try make some things easier file where I enter commands with adb.exe.
The problem is, any code after 'adb shell' is not executed in the batch.
So if I had a batch with the following:
Code:
adb shell
su
'su' will not be executed and stays at '$'.
It seems like it's too deep for a batch file to enter codes.
I also tried pushing a sh with the same script and run it from adb but then all I get it permission denied.
I have also tried 'adb shell su' without any luck.
Anyone with a solution?

Anyone? Or how about a .rc file that gets su and runs commands...
Sent from my HTC

To execute a script, you can always push your script and then execute it:
Code:
adb push script /sdcard/script
adb shell sh /sdcard/script
As for the commands you have shown, keep in mind that su doesn't simply change the running shell's permissions or the like but creates a new child environment within its own shell. You leave your script and after the new shell has finished, you're back in your old environment and the script continues.

mizch said:
To execute a script, you can always push your script and then execute it:
Code:
adb push script /sdcard/script
adb shell sh /sdcard/script
As for the commands you have shown, keep in mind that su doesn't simply change the running shell's permissions or the like but creates a new child environment within its own shell. You leave your script and after the new shell has finished, you're back in your old environment and the script continues.
Click to expand...
Click to collapse
yes, is there any way to automate the script inside the shell and use exit to finally go back to the batch script.

Can you provide me with an example of what you want to achieve?

To execute shell commands from a batch, it doesn't matter if I have to push a script and execute it. It's so that I get su and automate commands after that. Like flash_image, remount, chmod etc..

you will need to use the 'adb shell command' ad 'sh' files

I am trying to create a unix script file that copies files from /dbdata/databases to another folder as a backup.
When I try running the script in adb shell as SU, I get
cd: can't cd to /dbdata/databases
This is on a rooted Captivate. Any help would be greatly appreciated!

Hi,
su -c "command" should do the job for you. You will need to enclose the whole of the command in quotes however, otherwise su will be expecting the command to execute, doing nothing.
Example: adb shell "su -c 'sqlite3 /data/data/my.db/databases/mydb.db < /sdcard/dump.sql'" (run from a Unix or Windows(?) shell). Notice the use of "" and ''.
(in this case dump.sql contains .dump, for instance)
Of course the sqlite3 command could be placed within another script on the android device.
Hope that helps.

I looked around a bit and found the answer.
The simple answer is, wrap the command
Code:
cp "source" "destination"
in double quotes!
Thank you grindingbob for the adb shell "su -c 'sh /mnt/sdcard/tmp/2.sh'" command.

No probs I was more referring to executing commands as a su without interacting with adb shell.
As a side-note, cp might not be a good idea, unless you're sure no db accessing is taking place at the same time.

I am pretty sure well as sure as a novice can be! The files I am backing up are log files, call history and text message history.
The results from running a unix script which contains
Code:
cp "/dbdata/databases/com.android.providers.contacts/contacts2.db" "/mnt/sdcard/tmp4/contacts2.db"
cp "/dbdata/databases/com.android.providers.telephony/mmssms.db" "/mnt/sdcard/tmp4/mmssms.db"
cp "/dbdata/databases/com.sec.android.provider.logsprovider/logs.db" "/mnt/sdcard/tmp4/logs.db"
are only the logs.db file is copied, the other two are not.
grindingbob said:
No probs I was more referring to executing commands as a su without interacting with adb shell.
As a side-note, cp might not be a good idea, unless you're sure no db accessing is taking place at the same time.
Click to expand...
Click to collapse

Permission issues for *.sh files from ADB
Dear All,
I have a 3.2 device with Root permissions & Busybox.
I created a sample *.sh file, Pushed to SDcard, and gave '777' Permissions. When i Try to run it from ADB shell its not working Any help...
CMD prompt Traces:
Step -1: Created a sh file
cat TAB.sh
#!/bin/sh
cd /data/data/com.android.gallery/shared_prefs
Step -2 Pushed the file to SDcard
# ls -l *.sh
ls -l *.sh
-rw-rw-r-- root sdcard_rw 56 2012-03-13 15:06 SP.sh
-rw-rw-r-- root sdcard_rw 62 2012-03-13 15:05 TAB.sh
Step -3 Gave 777 permission for *.sh files
# chmod 777 *.sh
chmod 777 *.sh
# ls -l
ls -l
-rw-rw-r-- root sdcard_rw 56 2012-03-13 15:06 SP.sh
-rw-rw-r-- root sdcard_rw 62 2012-03-13 15:05 TAB.sh
Execute permission not applied
Tried other operations, dint workout
Step 4 other options:
# chmod +X *.sh
chmod +X *.sh
Bad mode
# chmod +x *.sh
chmod +x *.sh
Bad mode
# chmod u+x *.sh
chmod u+x *.sh
Bad mode
Any Help?

Related

help!!

hiya everyone, im new on here and really need some help.
im trying to downgrade my android software so im able to root it. only problem being ive never used command prompt lol!!
the guide im using says:
Launch a Command Prompt window and browse to the location of the files extracted in Step 1.
Enter the following commands:
adb push psneuter /data/local/tmp
adb push misc_version /data/local/tmp
adb shell chmod 777 /data/local/tmp/psneuter
adb shell chmod 777 /data/local/tmp/misc_version
adb shell /data/local/tmp/psneuter
adb shell
You should now get the # prompt, indicating temporary root.
Enter these commands:
cd /data/local/tmp
./misc_version -s 1.31.405.6
but how do i browse for the files if ive stored them in my documents and in a folder called downgrade android.
many thanks
keeps saying not a batch file :s
Moving them into the SDK tools folder temporarily would make things easier and would mean only the file name needs to be typed rather than the specific location, try it out, I hope I remembered correctly
dannysissons said:
hiya everyone, im new on here and really need some help.
im trying to downgrade my android software so im able to root it. only problem being ive never used command prompt lol!!
the guide im using says:
Launch a Command Prompt window and browse to the location of the files extracted in Step 1.
Enter the following commands:
adb push psneuter /data/local/tmp
adb push misc_version /data/local/tmp
adb shell chmod 777 /data/local/tmp/psneuter
adb shell chmod 777 /data/local/tmp/misc_version
adb shell /data/local/tmp/psneuter
adb shell
You should now get the # prompt, indicating temporary root.
Enter these commands:
cd /data/local/tmp
./misc_version -s 1.31.405.6
but how do i browse for the files if ive stored them in my documents and in a folder called downgrade android.
many thanks
Click to expand...
Click to collapse
you can either modify the command like this:
adb push C:\users\[YOURUSERNAME]\My documents\downgrade\psneuter /data/local/tmp
or setup a locale path variable to the dir, where adb is stored as mentioned in THIS thread. (step 4)
Then you can simply cd to the dir, where your files are stored, and run adb from there (actually you can run adb from any dir then)

What is wrong with my script - going crazy

so I'm new to scripting, and I have a TON of lg optimus S's to root for work. So I figured I'd write a script to make life easy. I know all the shell commands are correct as if I manually type everything in it works. What happens is it gets through gingerbreak exploit and when the prompt returns # - everything seems to go to hell.
Here is my script I am using. I'm using Kubuntu 11.04 writing it in Kate, name of my script is Script2 and I'm executing it in bash via $sh Script2
echo "removing TMP directory";adb shell rm -r /data/local/tmp
echo "creating TMP directory";adb shell mkdir /data/local/tmp
echo "pushing gingerbreak";adb push gingerbreak /data/local/tmp/gingerbreak
echo "CD TMP";adb shell cd /data/local/tmp
echo "CHMOD TMP";adb shell chmod 777 /data/local/tmp/*
echo "running gingerbreak";adb shell /data/local/tmp/gingerbreak &
sleep 32
adb shell mount -o remount,rw -t yaffs2 /dev/block/mtdblock5 /system
adb shell cat /sdcard/flash_image > /system/bin/flash_image
adb shell chmod 755 /system/bin/flash_image
adb shell mount -o remount,ro -t yaffs2 /dev/block/mtdblock5 /system
adb shell flash_image recovery /sdcard/xionia_cwma_12518.6.img
adb shell reboot recovery
I've tried with out sleep command and also with out "&" at the end of gingerbreak, and when I do that and it returns # it seems like no commands will work, even if I type them in it returns just a blank line with out #.
With that current script after sleep 32, it returns #, few seconds later it tries to mount and I get (including the end of gingerbreak exploit).
[!] dance forever my only one
# mount: Operation not permitted
Script2: 9: cannot create /system/bin/flash_image: Directory nonexistent
Unable to chmod /system/bin/flash_image Read-only file system
mount -o: permission denied
reboot: Operation not permitted
then it returns me to bash$
Thanks!
So something interesting, I've been playing with this for awhile, and I took everything out past the
adb shell /data/local/tmp/gingerbreak
it seems if I run it as
bash$ adb shell /data/local/tmp/gingerbreak
vs
bash$ adb shell
$ cd /data/local/tmp
$ ./gingerbreak
when # is returned, the first option won't take any commands its like it hangs, if I type out the next command it will just return a blank line with out $ or #, I have to forcibly end the process by CTRL+C and it will return me to bash, if I do the second option it works and I can enter the next command in and it takes and returns me to #. Anyone know why this is? I'm pretty sure this is the problem.
I would happily use the second option, but I'm not sure how to get the script to take any android shell commands without a "adb shell" infront. If anyone knows how to get around this, that would be awesome =)

[GUIDE] Basic Unix/Linux command to use with ADB SHELL

I am sure that many of the new people in here are not exactly sure how to use ADB under linux.
So Ive been reading the Evo 3D forum, and I found this really nice guide by vboyz103. You can find the thread HERE
All props go to vboyz103 for creating it, im just sharing it with you guys.
P.S. - I found it in the Android Development forum, so Im putting it in ours. If it does not belong here - MODs - please move it to General.
vboyz103 said:
So I have been reading quite a few threads here on XDA, and the one thing I noticed for noobs to linux/unix world is that they are struggling with some basic command once adb shell is gained. I decided to whip out this quick tutorial to help those noobs out to become more of an expert...like me...lol j/k
Here we go:
Prerequisites:
You must know how to invoke a adb shell command already to drop into your phone.
ALL commands in Unix/Linux are case sensitive
For more details, go to this ADB tutorial (very good one): http://forum.xda-developers.com/showthread.php?t=517874
Let's get going:
Once a shell is gained via adb, let's look at some of the basic commands you can do to navigate around the filesystem. Note: you must remove the double-quotes (") for the actual command.
Code:
"cd" = is change directory
to change to any directory, you type: cd dir_name (where dir_name is a full path)
Example: I want to go to /data/local/tmp in my phone, I would do
cd /data/local/tmp <hit ENTER>
You can also use the ".." to go UP one directory.
Example: I'm in /data/local/tmp and I want to go up to /data folder, a command would be: cd ../.. alternatively, if I do cd .. then i'll drop into /data/local folder instead.
Code:
"ls" = list files/directories
to list files/directories within a folder, the command should be:
ls <hit enter> => this will list all NON-HIDDEN file/directories within your CURRENT directory.
ls /data/local/tmp => this will list all NON-HIDDEN file/directories within /data/local/tmp directory.
ls -l => this will list all NON-HIDDEN file/directories within your CURRENT directory, plus additional details. Consider this is like a "Details" view in Windows Explorer.
ls -a => this will list all files/directories (including hidden files) within your CURRENT directory.
ls -la => this will list all files/directories (including hidden files) within your CURRENT directory, plus details.
Code:
"chmod" = change mode
Goes to wikipedia for more details: https://secure.wikimedia.org/wikipedia/en/wiki/Chmod
Most commonly used modes on android phones are:
"755" or "777".
So if you have a root.sh shell script that you downloaded from XDA, and uploaded to your phone and try to execute it with ./root.sh and it said "Permission denied". That means your script does not have the execute permission. You need to do:
chmod 755 root.sh <hit enter>
[B]IMPORTANT: There is *NO* negative sign (-) in front of the mode bit. So it is NOT chmod -755 root.sh[/B]
If you get a "File or directory not found" error, which means you are chmod-ing a file that doesn't exist in your current directory. To execute a chmod on root.sh in /data/local/tmp you do:
chmod 755 /data/local/tmp/root.sh
If you want to chmod an ENTIRE DIRECTORY and ALL files underneath it you do:
chmod -R 755 /data/local/tmp => this will set /data/local/tmp and ALL files/folders underneath it to be 755.
Code:
"chown" = change ownership
Go to wikipedia for details: https://secure.wikimedia.org/wikipedia/en/wiki/Chown
Most common used chown for android is: "root:root" or "root:shell"
Example: if you want to change ownership of root.sh to root:shell then you do:
chown root:shell root.sh
NOTE: the -R (recursive) option is also available for chown.
chown -R root:shell /data/local/tmp
Code:
"pwd" = print working directory
so when you are within a directory and you want to know which directory you are in, then you issue the command:
pwd <hit enter>
The system will reply back with the currently directory you are in.
I'll try to add more if I think of anything else useful, or if you have suggestions, please feel free to add.
Click to expand...
Click to collapse

How do I install netflix patch

Hi,
I am rooted now (I guess/hope) I would like to fix it, I have the patch and have tried to copy the libnvomx.so to the lib dir n my TF using file manager HD, but it wont let me paste it, I dont have or seem to have access.
also, is the libnvomx.so the only one I need to copy from the patch?
does this mean I am not rooted?
Is there somewhere/link where I can learn how to, and what terms like adb, push, clear the cache sideload, quickboot, recovery, etc... mean? (search hasnt helped me much with the ones I have looked for, too many results or too few)
thanks for any help,
John
use the terminal emulator, and make sure you "su" before you try to copy.
Another option is Root Explorer: https://market.android.com/details?id=com.speedsoftware.rootexplorer
Root Explorer will allow you to establish write access to system files. It's what I used to get Netflix working on my Transformer
AustinMartin said:
use the terminal emulator, and make sure you "su" before you try to copy.
Click to expand...
Click to collapse
Hi,
Thanks, what is su?
I tried using adb (at dos prompt) I tried
adb push libnvomx.so /system/lib/
it said read only access
will the su give me access? how do I su?
I am not even sure what the terminal emu is?
thanks,
John
I don't know if your rooting added the terminal app to the tf101.
You need to run the su(superuser) command to gain access to the system files.
I think you can run it from adb as well, if you used adb to root, then you probably already used this command.
you can also just download the netflix patch zip to the microsd card, and install the zip from cwm recovery mode.
Xerravon said:
Hi,
Thanks, what is su?
I tried using adb (at dos prompt) I tried
adb push libnvomx.so /system/lib/
it said read only access
will the su give me access? how do I su?
I am not even sure what the terminal emu is?
thanks,
John
Click to expand...
Click to collapse
Close, no cigar:
try this:
adb remount
adb pull /system/lib/libnvomx.so libnvomx.so.orig
adb push libnvomx.so /system/lib/
adb chmod 644 /system/lib/libnvomx.so
adb remount
adb reboot
----
I'm not recalling if you can do an adb chmod, but probably you can so I'll add that in up there just in case it works: Also I added a bit where you get a copy of the original in case this all somehow goes bad.
hachamacha said:
Close, no cigar:
try this:
adb remount
adb pull /system/lib/libnvomx.so libnvomx.so.orig
adb push libnvomx.so /system/lib/
adb chmod 644 /system/lib/libnvomx.so
adb remount
adb reboot
----
I'm not recalling if you can do an adb chmod, but probably you can so I'll add that in up there just in case it works: Also I added a bit where you get a copy of the original in case this all somehow goes bad.
Click to expand...
Click to collapse
hI,
Thanks,
I havnt tried yet but will asap. Where did you learn this stuff? I was reading this thread (I finally looked in general)
http://forum.xda-developers.com/showthread.php?t=872128
It has some info but real detailed, like in your script, the "chmod 644" the 644 part. I guess it takes time, I ave only had this TF for a week or so and it is my first android OS.
thanks again, (I will let you know when I try,
John
edit
Just wondering before I try this, the pull command (Is that backing up the libnvomx file to the pc?
after reading the thread linked above, wont I have to be in adb shell to geet permission to copy the file to the lib dir?
AustinMartin said:
I don't know if your rooting added the terminal app to the tf101.
You need to run the su(superuser) command to gain access to the system files.
I think you can run it from adb as well, if you used adb to root, then you probably already used this command.
Click to expand...
Click to collapse
I used nvflash and adb to install busybox and superuser and su.
I dont know anything about su or superuser, I havent found any threads with info on them yet.
thanks,
It might sound confusing but this is just all basic linux.
when you're running the adb shell just enter su. This gives you permission to edit the /system files
Then pull(copy) the file from your tf101, to your local machine. this is a backup.
Then change the permissions on the file on your tf101.
Then push the new file from your local machine to your tf101.
AustinMartin said:
It might sound confusing but this is just all basic linux.
when you're running the adb shell just enter su. This gives you permission to edit the /system files
Then pull(copy) the file from your tf101, to your local machine. this is a backup.
Then change the permissions on the file on your tf101.
Then push the new file from your local machine to your tf101.
Click to expand...
Click to collapse
Hi,
I broke down and used your script, I tried doing it on my own but kept getting errors. I did seem to get one error in this line of yours
adb chmod 644 /system/lib/libnvomx.so
when I ran it (and I copy and pasted it to dos window)) it gave an error, well not an error but it listed commands and switches like if there is a typo. I dont know if it took the command or not here is a paste
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
C:\Users\Kerr Avon>cd adb
The system cannot find the path specified.
C:\Users\Kerr Avon>
C:\Users\Kerr Avon>cd\adb
C:\ADB>adb remount
remount succeeded
C:\ADB>adb pull /system/lib/libnvomx.so libnvomx.so.orig
3429 KB/s (189660 bytes in 0.054s)
C:\ADB>adb push libnvomx.so /system/lib/
1174 KB/s (164764 bytes in 0.137s)
C:\ADB>adb chmod 644 /system/lib/libnvomx.so
Android Debug Bridge version 1.0.26
-d - directs command to the only connected USB device
returns an error if more than one USB device is present.
-e - directs command to the only running emulator.
returns an error if more than one emulator is running.
-s <serial number> - directs command to the USB device or emulator with
the given serial number. Overrides ANDROID_SERIAL
environment variable.
-p <product name or path> - simple product name like 'sooner', or
a relative/absolute path to a product
out directory like 'out/target/product/sooner'.
If -p is not specified, the ANDROID_PRODUCT_OUT
environment variable is used, which must
be an absolute path.
devices - list all connected devices
connect <host>:<port> - connect to a device via TCP/IP
disconnect <host>:<port> - disconnect from a TCP/IP device
device commands:
adb push <local> <remote> - copy file/dir to device
adb pull <remote> [<local>] - copy file/dir from device
adb sync [ <directory> ] - copy host->device only if changed
(see 'adb help all')
adb shell - run remote shell interactively
adb shell <command> - run remote shell command
adb emu <command> - run emulator console command
adb logcat [ <filter-spec> ] - View device log
adb forward <local> <remote> - forward socket connections
forward specs are one of:
tcp:<port>
localabstract:<unix domain socket name>
localreserved:<unix domain socket name>
localfilesystem:<unix domain socket name>
dev:<character device name>
jdwp:<process pid> (remote only)
adb jdwp - list PIDs of processes hosting a JDWP transport
adb install [-l] [-r] [-s] <file> - push this package file to the device and install it
('-l' means forward-lock the app)
('-r' means reinstall the app, keeping its data)
('-s' means install on SD card instead of internal storag
e)
adb uninstall [-k] <package> - remove this app package from the device
('-k' means keep the data and cache directories)
adb bugreport - return all information from the device
that should be included in a bug report.
adb help - show this help message
adb version - show version num
DATAOPTS:
(no option) - don't touch the data partition
-w - wipe the data partition
-d - flash the data partition
scripting:
adb wait-for-device - block until device is online
adb start-server - ensure that there is a server running
adb kill-server - kill the server if it is running
adb get-state - prints: offline | bootloader | device
adb get-serialno - prints: <serial-number>
adb status-window - continuously print device status for a specified device
adb remount - remounts the /system partition on the device read-write
adb reboot [bootloader|recovery] - reboots the device, optionally into the bootloader or
recovery program
adb reboot-bootloader - reboots the device into the bootloader
adb root - restarts the adbd daemon with root permissions
adb usb - restarts the adbd daemon listening on USB
adb tcpip <port> - restarts the adbd daemon listening on TCP on the specifie
d port
networking:
adb ppp <tty> [parameters] - Run PPP over USB.
Note: you should not automatically start a PPP connection.
<tty> refers to the tty for PPP stream. Eg. dev:/dev/omap_csmi_tty1
[parameters] - Eg. defaultroute debug dump local notty usepeerdns
adb sync notes: adb sync [ <directory> ]
<localdir> can be interpreted in several ways:
- If <directory> is not specified, both /system and /data partitions will be updated.
- If it is "system" or "data", only the corresponding partition
is updated.
C:\ADB>remount
'remount' is not recognized as an internal or external command,
operable program or batch file.
C:\ADB>adb remount
remount succeeded
C:\ADB>adb reboot
C:\ADB>adb reboot
Click to expand...
Click to collapse
Looks like it probably did work, anyway netflix is running.
some of the lines I tried that didnt work (and did) are here, not sure what was wrong.
adb push libnvomx.so /system/lib/
adb pull /system/lib/libnvomx.so libnvomx.so.orig
(I think push and pull wont work under shell)
*******************************************
cp /system/lib/libnvomx.so removable/microsd/isoa/libnvomx.so.orig
cp /system/lib/libnvomx.so removable/microsd/isoa/libnvomx.so.orig
cp isoa/libnvomx.so /system/lib/libnvomx.so
(dont know why these didnt work, I did su first)
***************************************************************
this worked!!!
cp /system/lib/libnvomx.so sdcard/isoa/libnvomx.so.orig
***************************************************************
cp sdcard/isoa/libnvomx.so system/lib/libnvomx.so
file exists error
********************************************************
Click to expand...
Click to collapse
Oh, so the android runs linux, or a version of it (like ubuntu, freebsd, etc...)? that should help me a lot. I installed ubuntu on one of my PC's a few years back but they didnt have drivers for sli and raid for my system at the time, I played with it a day or 2 and went back to MS. It has always been on the list to do. I am going to have to try it again.
I just looked, it looks like there are lots of new "distro's" (versions) now a day from back when I tried it.
anyway, thank you very much for the help,
John
once you did this:
C:\ADB>adb push libnvomx.so /system/lib/
1174 KB/s (164764 bytes in 0.137s)
you already copied it, so you must have already had permissions. Therefore this next command:
C:\ADB>adb chmod 644 /system/lib/libnvomx.so
Android Debug Bridge version 1.0.26
was redundant anyways. I suspect you needed to run
adb shell chmod 664 /system/lib/libnvomx.so
for adb to run the command on the transformer(shell) rather than in the dos directory.
AustinMartin said:
once you did this:
C:\ADB>adb push libnvomx.so /system/lib/
1174 KB/s (164764 bytes in 0.137s)
you already copied it, so you must have already had permissions. Therefore this next command:
C:\ADB>adb chmod 644 /system/lib/libnvomx.so
Android Debug Bridge version 1.0.26
was redundant anyways. I suspect you needed to run
adb shell chmod 664 /system/lib/libnvomx.so
for adb to run the command on the transformer(shell) rather than in the dos directory.
Click to expand...
Click to collapse
I see, so shell is like I am running it in/from the TF. I guess that is why push and pull doesn't work in shell, it could be confusing??
I downloaded/installed root explorer but I would rather learn it the harder way.
thanks again for your help!!
John
Cool. I wasn't sure about the "adb chmod" working since I'd only done that from a linux shell before this, but it was worth a shot. If you went into adb shell, then typed "mount -o rw,remount /system"; chmod 644 /system/lib/{whatever that file name was}; and mount -o remount,ro the thatt that would work", or I suspect he is right about how you can use "adb shell chmod 644 /../../.....".
Anyway, glad it worked out.
hachamacha said:
Cool. I wasn't sure about the "adb chmod" working since I'd only done that from a linux shell before this, but it was worth a shot. If you went into adb shell, then typed "mount -o rw,remount /system"; chmod 644 /system/lib/{whatever that file name was}; and mount -o remount,ro the thatt that would work", or I suspect he is right about how you can use "adb shell chmod 644 /../../.....".
Anyway, glad it worked out.
Click to expand...
Click to collapse
Hi,
If I shell, do su, then exit the shell (which I couldn't figure out how to do) do the su rights still apply, if I then use adb commands?
mount and remount, I see those are for mounting partitions, do the partitions each have different rights? and what does chmod do?
thanks again,
John
Xerravon said:
Hi,
If I shell, do su, then exit the shell (which I couldn't figure out how to do) do the su rights still apply, if I then use adb commands?
mount and remount, I see those are for mounting partitions, do the partitions each have different rights? and what does chmod do?
thanks again,
John
Click to expand...
Click to collapse
If you did an $su ; # inside the shell (adb shell), then when you typed in exit, that'd exit the shell, and cause any subshell's kicked off with a command (like "su" to pick one from a hat), to 'go away', So no, you wouldn't still be su.
But: There is a 'switch' or setting somewhere that brings up the adb shell in # su mode, but it escapes me right now.
Mount -o remount,rw||ro /{mountshare} (one command) will just remount some partition like system as you direct it to. It will 'outlast' the adb session. If you leave adb after doing a mount -o remount,rw /system, then you've left /system mounted rw. It doesn't hurt anything, but in theory you type in $sync; sync and $ mount -o remount,ro, and then the clean police will be happier.
chmod changes permissions. You could look up the man page on google, and it'll show you that you have 3 groups, owner, group and world. You could do the command in a couple forms, like #chmod {permission mask like 777} {filename} or chmod w+x {filename} where first one gave all permissions (rwe/rwe/rwe) to some file, 2nd gave the world execute permission.
hachamacha said:
If you did an $su ; # inside the shell (adb shell), then when you typed in exit, that'd exit the shell, and cause any subshell's kicked off with a command (like "su" to pick one from a hat), to 'go away', So no, you wouldn't still be su.
But: There is a 'switch' or setting somewhere that brings up the adb shell in # su mode, but it escapes me right now.
Mount -o remount,rw||ro /{mountshare} (one command) will just remount some partition like system as you direct it to. It will 'outlast' the adb session. If you leave adb after doing a mount -o remount,rw /system, then you've left /system mounted rw. It doesn't hurt anything, but in theory you type in $sync; sync and $ mount -o remount,ro, and then the clean police will be happier.
chmod changes permissions. You could look up the man page on google, and it'll show you that you have 3 groups, owner, group and world. You could do the command in a couple forms, like #chmod {permission mask like 777} {filename} or chmod w+x {filename} where first one gave all permissions (rwe/rwe/rwe) to some file, 2nd gave the world execute permission.
Click to expand...
Click to collapse
hI,
Thanks again, this is over my head right now, I am going to do like you say and search Google for a good beginners site. I am thinking about putting linux on my pc also, been wanting to for a while, I think that will help. I do know a lot more than I did when I started the thread
thank you,
John

Easiest way to temporarily get root on Android

Hi
I have a new Android device, it's not any of the ones that have their own forum.
More specifically it runs Android 11 on top of a 4.19.193 Rockchip BSP kernel.
I need to read one or two specific files but these files are only readable by root.
I have ADB shell access.
What I do want to acheive:-
Temporarily have an ability to copy a file that's readable only by root, this could be by some GUI app that copies files, as long as the copy is readable by normal user, running commands as root, copy a partition to an image file, export to a desktop machine and read it there. Any one of these would get me that file.
What I don't want to do:-
I don't want to permanently modify the device, unlock the bootloader, put su into /system or anything like that.
Does anyone know of a rooting app that can give me temporary root access but then doesn't actually change the system?
thanks
To get temporary super-user ( AKA root ) rights on an Android's device shell all you have to do is to find a suitable su binary and copy it onto Android's filesystem.
A: To run Android shell commands with super-user right from within the shell on desktop computer ( AKA Command Prompt ) you have to run within desktop computer shell
Code:
adb devices
adb push <LOCATION-OF-SUITABLE-SU-BINARY-ON-PC-HERE> /data/local/tmp/
what will 1. connect the Android device to your desktop computer and 2. upload the su binary in the Android device temporary directory always available for the user.
B: Then, in desktop computer shell type
Code:
adb shell "cd /data/local/tmp & chmod 776 su"
what makes the su binary executable: its ownership by default is set to shell.
C: Then in desktop computer shell type
Code:
adb shell "ls -l"
what will show you content and permissions on recently uploaded files.
D:
To apply a series of Android shell commands what require super-user rights you now would run
Code:
adb shell
export PATH=/data/local/tmp:$PATH"
su -c "<SHELL-CMD-HERE>"
....
su -c "<SHELL-CMD-HERE">
exit
BTW:
When in an Android shell another process like su gets started then this spawned process runs as a child process means it inherits most of the parent process attributes.
adb push allowed me to send the file
Code:
adb push su /data/local/tmp/
su: 1 file pushed. 1.2 MB/s (11640 bytes in 0.009s)
but the adb shell command is failing
Code:
adb shell "cd /data/local/tmp & chmod 776 su"
chmod: su: No such file or directory
if I then log in over adb I don't seem to have permissions to do anything in data
Code:
adb shell
ls -al
drwxrwx--x 47 system system 4096 2022-09-02 16:31 data
cd data
ls -al
ls: .: Permission denied
additionally, I thought that su would need the suid bit set
Does chmod 766 acheive that?
oh this works
Code:
adb shell
cd /data/local/tmp
ls -al
total 18
drwxrwx--x 2 shell shell 3452 2022-09-02 16:32 .
drwxr-x--x 4 root root 3452 2022-07-27 03:04 ..
-rw-rw-rw- 1 shell shell 11640 2022-09-02 16:29 su
Code:
chmod 776 su
ls -al
total 18
drwxrwx--x 2 shell shell 3452 2022-09-02 16:32 .
drwxr-x--x 4 root root 3452 2022-07-27 03:04 ..
-rwxrwxrw- 1 shell shell 11640 2022-09-02 16:29 su
Code:
adb shell
export PATH=$PATH:/data/local/tmp
su
su: setgid failed: Operation not permitted
The device has separate boot_a, boot_b, dtbo_a, dtbo_b partitions.
If I could be reasonably sure that booting a boot partition from a similar device (I have one) would pick up the dtb from this device then I think I could be reasonably confident of not frying anything, I might try and boot it from fastboot.

Categories

Resources