Seriously, I do think that some hands-on useful development is the fastest track to become a master of your domain! :-)
If you don't have any background in programming, or don't really know that you want to learn C or C++ specifically, I would recommend starting with Python. C++ is good if you know that you want to write systems software, or need to interface with C/C++ libraries. If you're just looking to learn to code, then learn Python. kyro said that he enjoyed learning from the free ebook "How to Think Like a Computer Scientist: Learning with Python". http://www.ibiblio.org/obp/thinkCSpy/
I'm aware that C++ is not just a hack, but compared to modern designed-from-scratch languages, it does feel like one a lot of the time.
With C for close-to-the-metal stuff and to optimize bottlenecks, Python for high level, and ctypes to glue both, I find no niche left for C++.
(Yes, the fact that Python has multiple frameworks is a problem, but settling on Django is not a solution.)
Likewise, I didn't say "read a book on Unix" but gave a specific, worthy, contender. As a complete newcomer there's little more annoying than general hand-waving.
Not many people do cgi programming (especially with C) anymore, but it will teach you a lot about Linux and programming. You will have to get a working web server for one. Configuring Apache on Ubuntu should be a good learning experience. If you can also get a working database server such as PostgreSQL (my preference) or MySQL working with your website, you will know the basics for building a real web-based application.
Learn how to become a hacker ~ http://www.catb.org/~esr/faqs/hacker-howto.html
Snow Crash at scribd: http://www.scribd.com/doc/10862/Neal-Stephenson-Snow-Crash