Well... the easiest way to do this is make your IP public (I think it's an ISP matter), and... well... write some PHP. An HTTP-Authorization header. That's how browser FTP access works.
As to CMS, one word (there might be two, actually, but, well... 🙂 ): Wordpress. Powerful, yet easy to install, and I can already think of how you create tags for each file, increasing its search accuracy, making the posts hidden to the public, close registration, and create an account for each user you want to have access to the files.