You are correct. It IS because the drive is external. In Linux, (at least all the flavors I know), drives connected through a usb port are owned by root and cannot be changed. This is an Linux kernel OS issue.
Sorry, but what you want the script to do cannot be done.