Can't access internal storage from normal system but I can in TWRP?
Try to execute following commands via ADB if you are rooted (in what I strongly doubt):

adb shell
su
mount -o remount,rw /system


or

adb shell su -c "mount -o remount,rw /system"


After that your push should work.
If you are not rooted, you will fail on the second command. If so firstly you should acquire root on your phone.

What concerning your question about customs ROMs/recovery: most custom ROMs already contain root patches. However, flashing TWRP has nothing to do with root and is done separately.