Learning Linux 4

Posted by JD 12/28/2014 at 01:00

So, you are a true complete Linux beginner and want the shortest path to the deep knowledge. We all were new at some point. The learning curve is steep, like a new language, but rewarding.

Learning Linux is like learning a new language or learning to fly a Boeing 747. It takes time, practice, effort. You don’t expect to hop into the pilot seat of a 747 on day one and fly that baby, do you? Linux is the same way. Sure, you can control the autopilot and change altitude with a certified pilot there to help, but not much more.

Learning Linux ….

Save yourself many days, weeks, and months of frustration by reading a few primers … read in order given:

  1. Linux for Windows Users – ignore the GUI stuff. Working at the command line means having to learn something once. Using the GUI means having to re-learn it every 3 years or so whenever the GUI changes. Be efficient, use the shell/CLI.
  2. Minimal Ubuntu System maintenance how-to – patch and backup with just a few other minimal things. Ubuntu mostly runs itself, but …
  3. Learn to think the linux way – stop thinking that point-n-click is the efficient way. It isn’t. Script and automate things so the results wait for you, not the other way around.
  4. Linux is NOT Windows
  5. Tips for New Installations
  6. Free PDF book on Linux CLIREAD the first 131pgs, skim the rest over 2-3 hrs to get a taste of possibilities. The early pgs provide background, set expectations, and help to get-your-mind-right for Linux. This is absolutely critical.
  7. The Linux Documentation Project
  8. Debian Administrators Guide
  9. Ubuntu External Guides This has 50+ different guides for all levels. Videos, books, cheat sheets, web blogs for all types of learners and different levels.

Soon you will be running the computer, not the other way around.

Crawl, Walk, Run, Sprint

There are many other guides to teach Linux. The key is to use a guide that leads through basic to more difficult concepts and commands. Crawl, walk, run, sprint. Google searching doesn’t work well without some background first. Be cautious copy/pasting commands. That’s a good way to trash a system. Understand what each command does first. Learn the options by reading the manual pages (man man) for each command on YOUR system, not the web. There are different versions of most commands and only the manpages installed on your system will truly reflect the options for the commands installed there. Most of the major options haven’t changed too often, but sometimes … just sometimes, changes happen and can screw the uninformed. Better to just get into the habit now.

When you are learning to crawl, use the ExplainShell site to better understand what all the different bash/cli/shell commands do.

File and Directory Permissions

At the center, Unix (and Linux) are multi-user operating systems. Different processes run as different userids as part of the security model. You are NOT the only user of the system, even if you are only person using it. There are probably 10-30 other user accounts, each used for different reasons.

A clear understanding is needed to avoid reoccurring issues with file permissions. Abusing sudo is a short-term solution and sometimes causes more problems than it solves. For example, using sudo gedit can cause terrible issues – use sudoedit instead. I’ve had to help a few nice people who used sudo poorly fix a login problem.

Understanding file and directory permissions is also central to using a Unix system. Different userids have different privileges to different directories. It is NOT safe for a normal userid to write anything to / (or many other locations), but they should be able to write almost anything to their HOME – also called ~/. If, however, these userids have been using sudo when not needeed, it is possible that parts of their HOME have been taken over by the root userid (the normal account that running sudo invokes).

Ubuntu does have a file and directory permissions tutorial:

Practice of this knowledge is needed. Please create a few extra accounts, a few groups, then mix and match these with your account, open a few terminals, login to a different userid in each, then create some files, directories with different userids, different groupids and different permissions. See what works and what doesn’t for each userid to still keep access and to prevent it.

GUI or CLI/shell – doesn’t matter.

The Unix permissions model is really elegant, once understood. That knowledge is forever.

I cannot say this more clearly, LEARN THE FILE/DIRECTORY PERMISSIONS on UNIX!!! This is the core of all system security. Not having this basic knowledge will lead to days, weeks, months of frustration. Learn it, know it, use it, love it.

More Questions?

Of course, if you have more questions, you can ask on forums, at your LUG or email friends running Linux, but it is best to google a tad first and to describe what the end goal is. When I was new, I didn’t know the easiest way to a solution and more experienced users helped with ideas and commands. Usually 1-3 commands needed when I thought a new, huge, program was required.

If you really want to learn linux at a deep level, don’t start with the user-friendly distros. Start with a lower level, build-it-all distro and you will learn much more. It is 100x harder that way and you won’t be proficient as quickly, but you will learn more overall. It will also be more frustrating.
Go with an easier distro for 6-12 months first, then drop back to arch, slackware, or if you really hate yourself, Gentoo to get that deeper understanding. 1-2 yrs of that and you’ll switch back to the normal distros.

  • Huge RedHat List – CentOS is binary compatible with RHEL – learn with (free) CentOS

Online Free Courses

MIT, Harvard, Stanford and other Universities have online courses in many different subjects, including Linux. These are comparable to small 5-erson classes you might pay $1000 at a local, commercial, learning center in your metro area.

Check out Edx and MIT . Google has a Python Class – I suspect they probably have other classes too.

I’ve never done any online courses, but have been to paid training at these small learning centers over my career (paid by my employer). Was taught X/Windows programming this way and beginning UNIX.

Community Colleges

Don’t forget that your local community college has both classroom and online courses for less than $200. If you learn best by having a group of people nearby and a person to ask questions directly, this could be highly cost effective. I’ve attended C, Adv C, C++ and Netware training at a community college. Every semester, I’m temped to sign up for more classes, but haven’t since 1995-ish.

Linux Camp Training materials.

Certified? Nope. That comes next

None of these steps will get you certified, but you will have more usable knowledge beyond what those tests check. Gaining the knowledge needed for a cert will be much easier AFTER the basic knowledge is gained.

In my mind, the only reason to be certified is to get a job. That means paying RedHat and getting the RHEL certs. Pretty much any other Linux cert just isn’t respected enough to be worth your time. Sorry.

Oh – and don’t forget to have the appropriate amount of fun!

  1. JD 01/07/2015 at 01:45

    Plus there are lots of reputable websites with how-to guides for specific tasks. A few of my favorites:

    • how-to Geek Mainly desktop configuration stuff
    • HowToForge look for perfect server and perfect desktop articles; there are many other, mainly server, how-tos.
    • Help.ubuntu.com – semi-official ubuntu help.

    Of course, just because you get something working, that doesn’t mean it is secure. Many of the how-tos online skip over nominal security and leave that for the admin to solve.

    If online courses are your thing, there are a number of free linux courses

  2. JD 02/22/2015 at 17:35
  3. JD 05/01/2015 at 16:52

    I keep seeing questions from folks wanting to use webmin or mysqladmin to make administration of their Linux systems easier. These tools are NOT meant for noobs to use and setting them up to be secure is non-trivial. Often when someone new to Linux gets web administration tools working, they’ve left open huge security holes that will be used by bad guys to take over the system, the network, then more computers inside the company and around the world.

    Learn to administer your Linux systems using the shell. Once you have that down, secured, locked down, then you may want to install webmin or mysqladmin to make things easier. Then it is perfectly fine.

    If you work in a team, perhaps the guru will setup those tools for everyone? That’s fine too, but I believe it cheats newer Linux admins from critical learning.

  4. JD 05/17/2015 at 15:14

    4-Part Linux Fundamentals Tutorial

    I think the free PDF book in the main article is better, but having different options is good.

    Some good general linux articles here

    • Bash by example
    • ssh keys
    • SED
    • Awk
    • POSIX Threads
    • Partitioning
    • File systems
    • Linux LVM
      Good stuff to know for the Linux power user, IMHO.