[Edify question]-piping not working-how to selectively chmod certain files? - Google Pixel ROMs, Kernels, Recoveries, & Other De

I am trying to get my android updater-script to selectively change permissions based on filename. I want all files under a certain subdirectory following the naming pattern "A.xy" set to 0755 and all other files set to 0644
So I first set all of them to 0644, then tried to selectively set the rest to 0755 by piping commands using xargs and exec. However, neither of the following commands worked but neither of them gave an error. Does anyone have a better way of doing this, or have an idea why neither of these worked?
run_program("/sbin/busybox", "find", " /data/app", "-name", "A.xy", "-type", "f", "-print0", "|", "/sbin/busybox", "xargs", "-0", "chmod", "0644");
run_program("/sbin/busybox find /data/app -name A.xy -type f -exec chmod 0644 {} \;");
It seems like update-binary doesn't allow piping? It doesn't give an error though.
Any idea how I can set all files of one type to be one permission, and all files of another type to be a different permission?

Thread closed.
Please see the continuation of this topic here: http://forum.xda-developers.com/android/help/edify-question-how-to-pipe-t3509804
Thanks!

Related

help with user.conf

can someone give me a tutorial on how to update the user.conf..i have looked at the compcache threads and linux swap but im not getting it...i want to be able to update it through terminal emulator and do i have to do nething to the userinit.sh if i change the user.conf...because numerous configs i have done for swappiness and linux swap...etc, have shown no difference..can somone give me a walkthrough...thanks so much..sry if i have a lot of questions just want to make myself more knowledgeable so i can hopefully return the favor to somone else one day
i do not know if you can edit it through the terminal sorry. i do know that you do not have to change the userinit.sh if you change user.conf, also i do know that you can open it up with PSPad (thats what i use) on a computer edit it there and push it back to phone and reboot. sorry i couldn't answer all of your questions
well i have had no problems editing it...its just putting it back nd making sure it works..now i have no problem using adb if u know of a tutorial to use it on mac...or know how to use it on mac
when you put it back on the phone did you make sure to chmod 755 it after you put it back on the phone and reboot?
then to text it with adb just type adb shell sh /system/sd/userinit.sh -s and see if the new values you put in are reflected in the output of that command
david1171 said:
when you put it back on the phone did you make sure to chmod 755 it after you put it back on the phone and reboot?
then to text it with adb just type adb shell sh /system/sd/userinit.sh -s and see if the new values you put in are reflected in the output of that command
Click to expand...
Click to collapse
delete this post; see below...
david1171 said:
when you put it back on the phone did you make sure to chmod 755 it after you put it back on the phone and reboot?
then to text it with adb just type adb shell sh /system/sd/userinit.sh -s and see if the new values you put in are reflected in the output of that command
Click to expand...
Click to collapse
this applies to tools and location of user.conf on cyanogen's roms ->
-transfer it to the root of your sdcard from your pc or mac to the g1.
-unmount sdcard from dropdown on the g1
-open up terminal on the g1
type and hit enter afterwards: cp /sdcard/user.conf /system/sd
type and hit enter afterwards: dos2unix /system/sd/user.conf
type and hit enter afterwards: chmod 664 /system/sd/user.conf
type and hit enter afterwards: exit
reboot
see this is my problem..it does not find it in system/sd...it is in system/bin so am i suppsed to copy it back to /system/bin or system/sd
and can someon explain what the difference is between chmod 664 and chmod 755 nd why i should do them
bonkasnucca said:
see this is my problem..it does not find it in system/sd...it is in system/bin so am i suppsed to copy it back to /system/bin or system/sd
and can someon explain what the difference is between chmod 664 and chmod 755 nd why i should do them
Click to expand...
Click to collapse
i think chmod 755 gives it read/write permissions. do not know about 664. try putting it in system/sd with adb then chmod 755 it and see if that works
david1171 said:
i think chmod 755 gives it read/write permissions. do not know about 664. try putting it in system/sd with adb then chmod 755 it and see if that works
Click to expand...
Click to collapse
775 = rwx-rwx-rx. conf file does not need executable in u-g nor x in o groups.
664 = rw-rw-r
if it is in /system/bin do this:
open up terminal
dos2unix /sdcard/user.conf
su
mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system
cp /sdcard/user.conf /system/bin
chmod 664 /system/bin/user.conf
mount -o remount,ro -t yaffs2 /dev/block/mtdblock3 /system
exit
exit
reboot

[SCRIPT] Permissions Init Script

Hey guys,
I had a nasty issue with Bi-Winning a couple weeks ago where I pushed custom framework and totally forgot about permissions. Apparently when you don't set the proper permissions it can really slow things down.
So I figured this could easily be avoided. So because of that and our CWM "Fix Permissions" option doesn't really do anything, I wrote this script to fix it!
Upon every boot, it will scan /system/app, /system/framework/, and /data/app and set the proper permissions for all the files in there.
Users
note if you're on Trigger 2.9.1+ or Bi-Winning V1+ you do NOT have to do this. It's built into your ROM already.
Flash the attached zip named "CWM_Flash_Permissions_Script.zip"
Ironically, it may not have the correct permissions after you flash it, so then do either of the following
1) Do these commands in ADB to set the correct permissions
Code:
adb shell
mount -o rw,remount /dev/block/stl9 /system
busybox chmod 777 /system/etc/init.d/*
or
2) Open up Root Explorer (or something similar)
navigate to /system/etc/init.d/
in there find the new file S30edt_perms
long press, and set the permissions
make it look like this
Code:
x x x
x x x
x x x
Here's the init.d script, it's really simple, but also effective
Code:
#!/system/bin/sh
# Permission script
# Written by Einherjar Dev Team
# www.edtdev.com
logFile=/data/edt/logs/S30edt_perms.log
if [ -f $logFile ]; then
rm $logFile
fi
touch $logFile
mount -o rw,remount /dev/block/stl9 /system
echo "Setting permissions" >> $logFile
for file in /system/app/* /system/framework/* /data/app/*; do
echo " setting permissions (644) for $file" >> $logFile
chmod 644 $file
done
echo "chmodding init.d folder"
chmod 777 /system/etc/init.d
for file in /system/etc/init.d/*; do
echo " setting permissions (777) for $file" >> $logFile
chmod 777 $file
done
echo "Permissions set" >> $logFile
Very cool, thanks roman.
Very cool to post the code too... lets us linux newbs get our learn on!
Poser said:
Very cool, thanks roman.
Very cool to post the code too... lets us linux newbs get our learn on!
Click to expand...
Click to collapse
I'm a Linux noobie myself!
birgertime said:
I'm a Linux noobie myself!
Click to expand...
Click to collapse
[slight OT] Just getting wifi working on an old ideapad y510 in slackware was an epic struggle... (wicd my arse)
[back on topic] I wish more devs would post script contents (though we can easily download and look in vi or notepad)... it helps the learning curve immensely
grateful for all the work EDT and rest of dev community does. We all are.
Question: What does the fix permissions CWM do then?
Poser said:
[slight OT] Just getting wifi working on an old ideapad y510 in slackware was an epic struggle... (wicd my arse)
[back on topic] I wish more devs would post script contents (though we can easily download and look in vi or notepad)... it helps the learning curve immensely
grateful for all the work EDT and rest of dev community does. We all are.
Question: What does the fix permissions CWM do then?
Click to expand...
Click to collapse
I have no clue, lol. Never bothered looking at it
edit: I hate vi.
roman im gonna add S30edt_perms.zip to my rom ..ill add you to credits
birgertime said:
I have no clue, lol. Never bothered looking at it
edit: I hate vi.
Click to expand...
Click to collapse
lol.
Vi is about as stripped down as you can get when it comes to text based editors... (I know its blasphemous... but I dig notepad++, shhh... dont tell)
I get "Bad Mode"
gamefreakgcb said:
I get "Bad Mode"
Click to expand...
Click to collapse
Hmm, ok you might need super user permissions do this and let me knkow if it works:
1) type in "adb shell"
2) type in su (don't press enter yet)
3) turn your screen on & unlock it
4) press enter on the su prompt, then his yes on the screen
then try that chmod command again.
birgertime said:
Hmm, ok you might need super user permissions do this and let me knkow if it works:
1) type in "adb shell"
2) type in su (don't press enter yet)
3) turn your screen on & unlock it
4) press enter on the su prompt, then his yes on the screen
then try that chmod command again.
Click to expand...
Click to collapse
Gave permission, still "Bad Mode"
gamefreakgcb said:
Gave permission, still "Bad Mode"
Click to expand...
Click to collapse
bad mode in the command line? gotta give me something more here
if it' s when you run chmod +x try this one:
Code:
busybox chmod 777 /system/etc/init.d/*
birgertime said:
bad mode in the command line? gotta give me something more here
if it' s when you run chmod +x try this one:
Code:
busybox chmod 777 /system/etc/init.d/*
Click to expand...
Click to collapse
When I do that, I get
chmod: /system/etc/init.d/S01edt_systcl: Read-only file system
chmod: /system/etc/init.d/S20edt_gps: Read-only file system
chmod: /system/etc/init.d/S30edt_perms: Read-only file system
chmod: /system/etc/init.d/S50edt_zipalign: Read-only file system
chmod: /system/etc/init.d/S98edt_tweaks: Read-only file system
chmod: /system/etc/init.d/S99edt_complete: Read-only file system
gamefreakgcb said:
When I do that, I get
chmod: /system/etc/init.d/S01edt_systcl: Read-only file system
chmod: /system/etc/init.d/S20edt_gps: Read-only file system
chmod: /system/etc/init.d/S30edt_perms: Read-only file system
chmod: /system/etc/init.d/S50edt_zipalign: Read-only file system
chmod: /system/etc/init.d/S98edt_tweaks: Read-only file system
chmod: /system/etc/init.d/S99edt_complete: Read-only file system
Click to expand...
Click to collapse
Oh crap, thanks for pointing that out man. Easy fix
do this
Code:
mount -o rw,remount /dev/block/stl9 /system
busybox chmod 777 /system/etc/init.d/*
should work like a charm
by the way, next time you flash a newer edt rom, they already have this fix built in. since you overwrote the file, you'll need to run the above commands to set the correct permissions as they get messed up sometimes when modifying them.
That did the trick, thanks.
The script in the .zip says
Code:
# Permission script
# Written by Roman (birgertime)
# www.edtdev.com
logFile=/data/edt/logs/S30edt_perms.log
if [ -f $logFile ]; then
rm $logFile
fi
touch $logFile
echo "Setting permissions" >> $logFile
for file in /system/app/* /system/framework/* /data/app/*; do
echo "setting permissions for $file" >> $logFile
chmod 0644 $file
done
echo "Permissions set" >> $logFile
Which is different than the OP. I'm confused.
MikeyMike01 said:
The script in the .zip says
Code:
# Permission script
# Written by Roman (birgertime)
# www.edtdev.com
logFile=/data/edt/logs/S30edt_perms.log
if [ -f $logFile ]; then
rm $logFile
fi
touch $logFile
echo "Setting permissions" >> $logFile
for file in /system/app/* /system/framework/* /data/app/*; do
echo "setting permissions for $file" >> $logFile
chmod 0644 $file
done
echo "Permissions set" >> $logFile
Which is different than the OP. I'm confused.
Click to expand...
Click to collapse
I notice that before... but got side tracked and forgot to mention something... I just pulled the one from in Bi-Winning V2 and have been ADB Push'ing that.
EDIT: Also noticed that the one that's in Dan_Brutal "Metrik Part 1- Pepperkake" is the wrong one.
Does this works on hd2 android? i really need this..
haysnamrip said:
Does this works on hd2 android? i really need this..
Click to expand...
Click to collapse
Should work on any Android that can run scripts
i flashed and its working.. no more changing permission after run fix_permissins on terminal emulator..
Hey Roman, thanks for yet another improvement for this phone!
Simple question: can I just download and push the S30edt_perms.zip to etc/int.d? And is this any good for CM7 based ROMs? I just checked and that file isn't in my init.d folder on Trigger Redux.
Thanks!
Sent from my rough sketch of a Vibrant on a brick.

[Q] dsifix.ko applied to stock milestome froyo rom

hello, basically my question is that, how to apply the fix to a stock froyo rom...i think that it must be done trougth open recovery but i wanted to be sure. thankss
it can be done through the console of open recovery, or through a terminal editor if you have root.
edit: simpler way for stock roms
copy the dsifix.ko to your sdcard
mount the /system partition as read/write
run these commands:
Code:
cp /sdcard/dsifix.ko /system/lib/modules/dsifix.ko
chmod 644 /system/lib/modules/dsifix.ko
echo "insmod /system/lib/modules/dsifix.ko" >> /system/etc/rootfs/init.mapphone_umts.rc
correct me if im wrong, but the second directory, system/rootfs/, isnt that only for cyano based roms?? because in stock roms it doesnt exist. thanks for the reply.
ah you're right, sorry
hmm you could try using the 'install mods autostarts - not needed in many roms' script thats in androidiani openrecovery, and then running these commands:
Code:
cp /sdcard/dsifix.ko /system/lib/modules/dsifix.ko
chmod 644 /system/lib/modules/dsifix.ko
cd /system/etc/init.d
touch 1dsifix
echo "insmod /system/lib/modules/dsifix.ko" > 1dsifix
chmod 750 1dsifix
I'm not entirely sure this will work, but try it and see.
Hi,
to sum it up:
To use additional kernel modules (e.g. dsifix.ko) you need to tweak the startup scripts (e.g. init.mapphone_umts.rc)
To use tweaked startup scritps like modified init.mapphone_umts.rc you'll need a ROM that makes use of 2nd init process.
Stock ROMs do not use 2nd init, because it's a hacked feature and stock ROMs are usually not hacked
On stock ROM there's also no /system/etc/init.d nor /system/etc/rootfs directory, because they are no used there.
Hope this helps
P.S.: Don't know about this androidiani stuff ...
EDIT: Search button is so nice... http://forum.xda-developers.com/showthread.php?t=1003338
Regards,
scholbert
great i will try this evening, thanks for the repliess.
Sent from my Milestone using XDA App
the androidiani mod enables 2nd-init, which means it checks for scripts in the init.d folder
that link is only for the display update fix, which causes tearing, not for the kernel module fix thats popped up recently. However, we can modify coldsphinx's instructions to suit our purposes.
as usual, you'll need to move the dsifix to /system/lib/modules
Code:
cp /sdcard/dsifix.ko /system/lib/modules/dsifix.ko
chmod 644 /system/lib/modules/dsifix.ko
then rename the mot_boot_mode file to mot_boot_mode.bin
Code:
mv /system/bin/mot_boot_mode /system/bin/mot_boot_mode.bin
then create the file /system/bin/mot_boot_mode
and add this to the file:
Code:
#!/system/bin/sh
export PATH=/system/bin:$PATH
mot_boot_mode.bin
insmod /system/lib/modules/dsifix.ko
and then finally set the permissions
Code:
chmod 755 /system/bin/mot_boot_mode
it will work.
GReat! thanks!

How to get root access from kernel, with no busybox and not building any sources

Hi folks,
On my way trying to get 10 usefull posts to access the developers forums, I have writen this easy tutorial. xD
THIS IS FOR S5830i DEVICES. init.rc used belongs to S5830i ramdisk
Whats all about? Well, in this tutorial I will so you how to get root access directly from Kernel only modifing init.rc and adding su to tmp folder.
THIS IS NOT UNSECURING THE BOOT.IMG TUTORIAL
Question: Axyllum why are you posting this, if there are so many tutorials on how to do this for other devices?
Answer: Simple, as you all ready imagine, partition for boot.img is just 5MB Oh my god.
Then, if my boot image is all ready 4.28MB, how can I use a busybox thats 836KB (I compiled a busybox with mount, cp, mkdir, chmod and chown that is the minimum to get root: image = 836MB). Cant use this beacuse I exceed total mounting point size.
Kernel + ramdisk = 4.28MB if you pull stock boot.img from your device.
Minimum busybox explained before = 836KB
SU image 25KB to 86KB depending on the su image you use.
This makes a total of: 5.2MB. Try to flash it. It fails? Yes, you exceeded the mounting point size.
And the solution? Follow my tutorial.
Abilites you will need to follow the turotrial:
Know how to: Un pack & repack boot.img
Know how to: Decompress Ramdisk and compress it back. (to get the famous newramdisk in many many tutorials) newramdisk is just a name, you can compress back to any name, for example axyllumramdisk or yourramdisk or how ever you want to call it.
Asuming you know how to do the explained above and after my wierd chat, lets gooooo:
1. Open init.rc in your favourite text editor.
2. Go to this line in init.rc:
mount rfs /dev/stl9 /system check=no
You should see this:
mount rfs /dev/stl9 /system check=no
mount rfs /dev/stl9 /system ro remount
Got it? lets go to step 3.
3. Overwrite both lines with this:
mount rfs /dev/stl9 /system check=no
mkdir /system/xbin
copy /tmp/su /system/xbin/su
chown root root /system/xbin/su
chmod 06755 /system/xbin/su
mount rfs /dev/stl9 /system ro remount
Make sure you are not overwriting other lines or your ramdisk could not work.
4. Paste SU image file to tmp folder. Make sure SU image has execute permissions.
5. Compress back ramdisk (the famous newramdisk).
6. Repack boot.img
7. Flash it.
8. Restart device.
9. Download superuser.apk and busybox form market and.... there you go you made your kernel with root access and no need of a busybox.
Ok, this was simple, but i imagine more than one will like to know what we did.
I'll explain:
As we cant add a busybox, how the hell am i going to mount system rw, mkdir xbin, cp su from tmp to xbin, chmod / chown permissions?
I started reading the init.rc file (i was bored and my wife wanted to go shopping --> no way i have an init.rc file to mess up with), and I saw many mkdir, copy, chmod etc... commands. (Opened a beer)
So i thought, great, there is all ready a busybox with the least i need to make this. Then why dont i use this preinstalled commands?
And i did this:
mount rfs /dev/stl9 /system check=no --> first I checked this, this instruction is where init.rc mounts system. At this point system is mounted RW.
mkdir /system/xbin --> Then as system is rw, I will create xbin folder. how? with mkdir comand.
copy /tmp/su /system/xbin/su --> Great I did not find a cp command, but found a "copy" command someware in init.rc. Search for it, you will see its used. Then why dont I use it to copy SU in tmp folder to the just created xbin folder? It worked.
chown root root /system/xbin/su --> Owner of su in xbin is: yes, root.
chmod 06755 /system/xbin/su --> Set the right permission to su. You need to chmod with 06755. --> 09364, 66666, 83823 will not work looooolll just a joke i imagine you all ready know what setting permissions is all about.
mount rfs /dev/stl9 /system ro remount --> Remount system with ro (this is the read only remount command).
I dont know if there are any other tutorials doing this, this way, i just did it my self. I Found tutorials on doing the same, but busybox, and .sh script and su were needed. To much for our small boot.img partition.
Enjoy.
Tip, dont mess your init.rc if you do not understand it.

Can someone fix my ****ing ZIP for me?

No matter what I do, it won't flash. Magisk will flash it but it does not function and creates two directories under /Magisk, Magisk-SSH? and Magisk-SSH??, and in TWRP it produces a new error no matter what I do. Even leaving the config.sh and module.prop completly alone and only adding the files to the directory the ****ing zip wont flash.
Download link
Pls upload to another site man,,can't download the file because of adfly..
Sent from my 2014813 using Tapatalk
try changing the permission to 755 instead of 777 for the binaries on your config.sh ... and zip it on sub folder of your module, dont do it on the root folder ... it wont be flashed that way bcoz wrong root folder. attached some ss for how to zip it.
Code:
set_perm $MODPATH/system/bin/scp 0 2000 0755 u:object_r:zygote_exec:s0
set_perm <filename> <owner> <group> <permission> <contexts> (default: u:object_r:system_file:s0)
or
set_perm_recursive $MODPATH/system/bin 0 0 0755 0755
set_perm_recursive <dirname> <owner> <group> <dirpermission> <filepermission> <contexts> (default: u:object_r:system_file:s0)
hope that help :good:
adewisman said:
try changing the permission to 755 instead of 777 for the binaries on your config.sh ... and zip it on sub folder of your module, dont do it on the root folder ... it wont be flashed that way bcoz wrong root folder. attached some ss for how to zip it.
Code:
set_perm $MODPATH/system/bin/scp 0 2000 0755 u:object_r:zygote_exec:s0
set_perm <filename> <owner> <group> <permission> <contexts> (default: u:object_r:system_file:s0)
or
set_perm_recursive $MODPATH/system/bin 0 0 0755 0755
set_perm_recursive <dirname> <owner> <group> <dirpermission> <filepermission> <contexts> (default: u:object_r:system_file:s0)
hope that help :good:
Click to expand...
Click to collapse
I dropped the project because the binaries don't work anyway. I placed them into /Magisk manually (basically doing the zip's job manually) along with the module.prop but calling them produces various errors. I cross-compiled them for ARM64 so they are the correct architecture.

Categories

Resources