Congratulations! Now that you have successfully installed Linux, you can start using it. In this chapter we will look at the steps you need to take to begin working with Linux, including the following:
Starting and stopping Linux
Logging in and out
Creating a new user with adduser
Changing your password
Using virtual terminals
Displaying system users with who
Starting (and Stopping!) Your Linux System
Depending on the setup you chose during Linux installation and configuration, either Linux starts automatically when you power on your computer, or it requires you to type something (such as Linux) to specify that you want to boot Linux.
As your Linux system starts up, you see quite a few Linux initialization messages scroll through your screen. When Linux has completed its startup, you should see the following prompt:
Welcome to Linux 1.2.13.
A Linux system must always be shut down properly. Improper shutdown, such as simply turning off your system, can cause serious damage to your Linux system! When you are finished using your Linux system, you must shut it down properly, as described in
the next section. If you start to boot Linux, and then change your mind, you should let the system start up fully and then follow the shutdown procedure.
Because you know how to start Linux, it's even more important to know how to shut it down properly. Like many UNIX systems, if Linux is not powered down properly, damage to files can result. The easiest way to ensure a proper shutdown is to press the
Ctrl, Alt, and Delete keys simultaneously. (This is the famous Ctrl-Alt-Delete "three-finger salute" used in DOS.)
Pressing Ctrl-Alt-Delete causes a number of advisory messages and Linux shutdown messages to be displayed. You must wait until the Linux shutdown procedure has finished, at which point your monitor shows the initial "power-on" screen, before
turning your computer off.
What's This About Logging In?
Linux waits for a login. A login is simply the name that you supply to Linux to identify yourself to the operating system. Linux keeps track of which names are permitted to log in or access the system, and only allows valid users to have access.
If you supplied a name to your system when installing Linux, the system name is used at the prompt. In the login shown earlier, the system has been called darkstar. The system name enables you to identify your machine to others when using networks or
modem connections. Don't worry if you didn't name your system yet, because you can change the system's name at any time.
Every login name on the system is unique. Normally, a password is assigned to each login, too. This secret password is like the identification number you use with your bank card to prove that you really are who you say you are. Also, the things you can
do with your loginthe login's privilegesare controlled by Linux; different logins have different levels of privileges.
Usually, login names reflect a person's real name. Although you can't have two identically named logins on your system, you can easily create logins for users with the same (real) name by having one or two characters different. So, for example, the
login names suej and suek are treated by Linux as completely separate logins.
Conversely, there is no reason that one human being (for instance, yourself) can't have two, three, or a dozen login names. In fact, because you will be the system administrator of your Linux system, you will have one or more administrative logins, and
one or more regular user logins.
At the login prompt, try typing your name, your dog's name, or any other random name that occurs to you. None of these are valid logins (at least not yet). The system asks you for a password; it won't matter what you type, so just press Enter or type a
random string of characters. Because the logins are not valid on the system, Linux won't let you in. It displays the message Login incorrect to tell you that either the name or the password you entered is not valid.
The only valid login on your Linux system after installation is the most powerful and dangerous login Linux offers: root. In the section "Creating a New Login," later in this chapter, we will create a safe login for you to use. This login can
have your name, your dog's name, or whatever else you choose.
The login prompt is actually produced by a program called login whose only task is to accept your user ID and password, verify it, and then display a message preventing your access or letting you through to the next program that starts your user
Why You Shouldn't Use the root Login
You will have to use the root login from time to time. Some things simply cannot be done on the Linux system without logging in as root. You should not, however, use the root login as your regular login. This is especially true if you are exploring the
system, poking around, and trying out new commands that may not do what you thought they would!
Linux, as you already know, is a multiuser, multitasking operating system. Multiuser means that several people can be using Linux at the same time (of course, you have to add some additional terminals to your system, or it will get very crowded around
the keyboard). Multitasking means that Linux can do more than one thing at a time. For example, you can spell-check a document while downloading information from some remote system. (Multiuser implies multitasking, because all users must be able to do
their own work at the same time.) Linux, therefore, is very good at juggling all these tasks, keeping them from interfering with each other, and providing safeguards so that you cannot damage the system or another user's work.
The root login does not restrict you in any way. With one simple command, issued either on purpose or by accident, you can destroy your entire Linux installation. For this reason, use the root login only when necessary. Avoid experimenting with
commands when you do log in as root.
When you log in as root, you become the system. The root login is also sometimes called the superuser login, and with good reason. To use an analogy, instead of being a passenger on an airplane, you suddenly have all the privileges of the flight crew,
the mechanics, and the cabin crew. "Hmm, what does this do?" becomes an extremely dangerous phrase when logged in as root.
One of the oldest stories in UNIX lore tells of new users who log in as root and, in ten keystrokes, destroy their system completely and irrevocably. But if you're careful to follow the steps given here, and stop and take a moment to think about the
commands you are giving, none of the "How many new users does it take to nuke a system?" jokes will apply to you!
System administrator is another term you will see often. A system administrator is the actual person who sets up and maintains the Linux system. The amount of work involved in system administration varies from system to system. A full-time system
administrator may be required in an office for powerful machines that have many users, peripheral units such as printers and tape drives, and are connected to a network. Your Linux system will not require that level of dedication!
System administration, because it deals with sensitive matters such as creating or deleting log-ins, requires superuser privileges. These privileges are provided by the root login. So, the sys-tem administrator is an actual person wielding superuser
powers gained by logging in as root.
Your First Login
After all the cautions about using the root login, we're going to have you log in as root. Because root is the only authorized login on a newly installed Linux system, this is unavoidable. Also, we will be performing a couple of important procedures
that require root privileges. However, after this first login, we will create a user ID that can prevent accidental damage to the operating system.
At the login prompt
and press the Enter key.
Type in the root password that you set during installation and press the Enter key.
Linux is case-sensitive (as are all UNIX versions). A capital R is, to Linux, a completely different letter from a lowercase r. When you type Linux commands, you must use the proper case or Linux will not understand them. The majority of Linux
commands are typed in lowercase. This includes the login root; if you type Root or rOoT, Linux will reject the login.
There is a curious exception, though. If you type the login IN ALL CAPITALS, the system will accept itbut from then on, everything on your screen will be in capital letters! This is left over from the days when some terminals only had uppercase
letters. Although these terminals are now all gone or in museums, the login program retains this historical curiosity.
After you have logged in as root, the system starts up a user session for you. At this point you should see the following on your screen:
darkstar login: root
Last login: Sun Dec 11 17:26:18 on tty1
You have mail.
If it's Tuesday, this must be someone else's fortune.
Linux tells you when the login for this user was last recorded (although this information may not appear the very first time you log in), and then provides you with some version information. Linux also tells you that this login has a mail message
waiting to be read. Finally, if games were installed on your system, Linux gives you a witty saying or aphorism.
It is always good practice to scan the line that starts with Last login, and check that the time given is correct. This is especially important if your Linux system is accessed by other users or connected to other systems. If the time given does not
look right, it could be that someone is using the login to break into your system, or using your username without your permission.
We will read the mail message later, after taking care of some important steps. If you are curious, the same mail message is sent by the install procedure when the operating system is installed. It concerns registration matters for Linux.
Your "fortune" is chosen randomly from a long list, so don't expect to see the same one shown in the previous example. If you didn't install the games package during the Linux installation routine, you won't see a fortune. You can install the
games package at any time.
The final line you see on the screen is the system prompt. This tells you that Linux is waiting for you to type in your commandsit's prompting you for input. The system prompt also displays the following useful information:
darkstar is the system name.
The ~ character indicates your location in the file system (explained in Chapter 8, "The Linux File System").
The # character usually specifically indicates that you're logged in as root (although the $ sign is used in some operating systems which makes it difficult to quickly ascertain whether you are logged in as root or a regular user). According to UNIX
conventions, regular user prompts are either % or $, depending on the shell; while # is reserved for root. These symbols are called shell prompts because they are used by the shell to prompt you for commands.
In Linux (and just about all other UNIX systems) the superuser login name is root. No matter how humble or huge the system, if you can log in as root, the system is wide open for you to do whatever you want. Obviously, letting just anyone log in as root
is unacceptable because it exposes the system to too much potential for serious damage.
To prevent unauthorized access, the root login should always have a password, and that password should be secure. You may have noticed that the Red Hat installation requested that you set a root password during the installation process. Some Linux
installations do not set the root password; it is set to a null string, which is a word with no characters. With root and any other login, Linux does not bother asking for the password if it's the null string.
The null string is the least secure password there is, because anyone who knows a valid username (such as root) can access the system. It is up to you to change the password. Linux lets you choose what the new password will be, and accepts it without
complaint. Unfortunately, this can lead to a false sense of security.
It was noticed a long time ago that users chose passwords that they could easily remember: their dog's name, their birthday, their hometown, their spouse's name, and so on. The problem is that these passwords were also easy to break, either through
guessing or by more sophisticated means. This led some system administrators to insist on difficult-to-break, randomly picked passwords (such as S8t6WLk). People could not remember these passwords at all, so they wrote them down on pieces of paper and
stuck them on their desks. Others, who were trying to break into the system, would find these pieces of paper and gain use of that login.
The best passwords are ones with a combination of uppercase letters, lowercase letters, and numbers, that are still easy to remember. Fri13th, 22Skidoo, and 2Qt4U are just a few examples. These hard-to-guess passwords are known as strong passwords,
while easy-to-guess ones are called weak.
Of course, you should never use these exact passwords, or any other published sample passwords, because they're so easy to guess. There are many mischievous minds out there who, on strolling by a Linux system, might try root and Fri13th for the fun of
it. You don't want to be the one with the nightmare of getting your system broken into.
For the best security, passwords should be changed every so often. Many system administrators recommend once every two or three months as reasonable. This guards against dictionary-based guessing attacks, and also minimizes damage in cases in which the
password has been broken but nothing has really been done with it yet.
Don't leave your terminal unattended while you're logged in. The idly malicious may take the opportunity to make some changes to your files, or send a nasty mail message off to people you'd hate to alienate. Always log out or lock your terminal when
Of course, the amount of system security you require depends on how much access there is to your system, and how sensitive is the information found on it. The root password should always be a good, secure one. If nothing else, it will discourage you
from casually logging on as root, especially if you leave your user logins with null passwords.
If you are using Linux at home for experimenting, much of the security worries mentioned previously may seem silly. However, it doesn't hurt to use good security, and the practice can be carried over to larger UNIX systems at work.
We must assign a password for the root login using the Linux command passwd. The spelling of the command has its history in the development of UNIX, when long commands, such as password, were avoided due to the number of characters that had to be typed!
To change the root password at the system prompt, type the command passwd, and you see the following:
Changing password for root
Enter new password:
At the prompt, type your new, secure password. What you type is not displayed on the screen. This keeps anyone looking over your shoulder (called "shoulder surfing") from reading the password you've entered.
Make sure you type the password slowly and carefully! If any other user's password is lost or forgotten, it can be reset by the root login. But, if the root password is lost or forgotten, you must reinstall Linux.
Because it's so important that passwords are entered correctly, the system double-checks the spelling of the password for you by asking you to type it again:
Re-type new password:
Again, what you type is not displayed on the screen. If your two password entries match, you see the following:
The password is now changed in the system's configuration files. If the two entries do not match completely (remember, case is important), Linux gives you the message
You misspelled it. Password not changed.
and changes are not made to the password. You need to start over with the passwd command.
Do not forget your new root password! Chant it to yourself before going to sleep, if necessary. But don't write it down on a piece of paper and slip it under the keyboard, either!
If you want to leave a program right away and return to the shell prompt, try Ctrl-C (hold down the Ctrl key and press C; this is sometimes written as ^C). This usually terminates whatever program you're in (usually without ill effects), and
redisplays the shell prompt.
Creating a New Login
Now that you have assigned a password for the root account, the next thing you should do is create a login with which you can safely explore the Linux system and try out some of the basic commands covered in the following chapters.
Login names are used by valid system users. You can create a login for yourself that you will use permanently, or you can create a temporary login for exploring the system and remove it later. Login names can be any character or number string you want.
Typically, login names bear a resemblance to the user's real name, so Joe Smith's login name may be joe, jsmith, or joes.
Linux has a utility called adduser, which simplifies and automates the task of adding a new user to the system. (This isn't how they did it in the good old days. You should be glad. In the past, files had to be manually edited to add users, a tedious
and error-prone process.)
To create a user, at the shell prompt type adduser and the username you want to add.
darkstar:-# adduser fido
Looking for first available UID_ 505
Looking for first available GID_ 507
Adding login: fido_done.
Creating home directory: /home/fido_done.
Creating mailbox: /var/spool/mail/fido_done.
Don't forget to set the password
To complete adding the user, you'll need to use the passwd command to set password.
The adduser command included with Red Hat automatically assigns the UID, GID, and the home directory for the user added. The adduser command included with other Linux distributions will prompt you for these parameters.
An even more user-friendly method of adding users is to use the "user and group management" portion of the control-panel available under X.
The User ID is used by Linux whenever it is referring to something you have done. The operating system is designed to use a number rather than the full login name because it takes up less room and is easier to manipulate. The User ID is important,
and each login on the system has its own unique number. By convention, UIDs of 500 or less are special system UIDs; root's UID is 0. Regular users get UIDs starting at 501.
Now that you have created a new user, you can use it in the next couple of chapters to explore Linux. To finish with your session as root, log out of the system by typing logout:
Welcome to Linux 1.2.13
You see the login prompt displayed again. At this point, you can log back in as root, or as the new user you have just created.
Some systems enable you to log out with the Ctrl-D sequence. If the shell you are using supports Ctrl-D as a logout command, the login prompt reappears. Otherwise, you may see a message such as this:
Use "logout" to leave the shell.
If you have used other UNIX systems before, you may be used to using Ctrl-D to log out. The default shell used by Linux does not support Ctrl-D unless the keymappings are changed to allow it.
Trying Out Your New Login
Now we can try out our new login. We can also look at some of the interesting features and capabilities of Linux.
At the login prompt, type the login name you have just created. If you were conscientious and assigned a nonzero-length password to your new login, enter the password when prompted.
You should now see the following:
darkstar login: fido
Last login: Sun Dec 11 19:14:22 on tty1
Quiet! I hear a hacker....
Note that your prompt looks different from the root prompt. The $ prompt indicates that you are a regular user running under the bash shell (which was the default choice presented by the adduser program). Also, there is no You have mail message.
Linux can be configured to automatically mail a message to all new users. This can be a greeting, or can give system information and etiquette.
To see an example of the difference between the root login and a regular user login, type adduser at the shell prompt and press Enter.
bash: adduser: command not found
The message you get looks somewhat cryptic. However, it has a typical Linux error message structure, so it's worth taking a little effort to understand it.
Linux Error Messages
First of all, the program that's giving you the message is your shell, bash. It therefore announces itself with bash:, somewhat like the character in a play script. Next is the shell's "monologue." Being the "strong and silent" type
of character, bash's monologue is very terse and to the point. It declares the object that is causing it problems (adduser), and the problem with this object: the command (adduser) can't be found.
If the error message were expanded into real English, it would go something like this: "Hi, I'm bash. You know that adduser command you gave me? I looked everywhere for adduser but I couldn't find it, so I couldn't perform whatever actions adduser
would have specified." With time, you will get quite good at understanding Linux error message grammar.
Why can root find adduser, but an ordinary user cannot? Linux has many directories, and each directory can hold many files (one of which can be the elusive adduser). In theory, Linux could go search through the file system until it found adduser. But if
root accidentally mistyped adduser as aduser, Linux would have to rummage through every nook and cranny before finally giving up. This could take 10 or more seconds, and cause needless wear and tear on your hard drive.
Therefore, Linux has search paths for finding commands (discussed in Chapter 8). Usually, only a small part of the entire Linux file system is on the search path, which literally is the path along which Linux searches. Because
root makes use of many system administration programs such as adduser, the directories that hold these programs are in root's search path. Ordinary users do not have system administration directories in their search path.
However, if you explicitly tell Linux where a file is located, it does not need to look through its search path. As it happens, adduser is found in the /sbin directory. Try running /sbin/adduser.
bash: /sbin/adduser: Only root may add users to the system.
This time, bash could find adduser (because you told it exactly where to look), but discovered that an ordinary user does not have permission to run adduser. As you can see, Linux limits the actions of logins to their privilege level.
Linux, as mentioned earlier, is a multiuser, multitasking system. This means that more than one login can access the system at the same time, and that each login can be doing one or more different things all at the same time. A serious multiuser system
will have several terminals (consisting of a keyboard and a display screen) wired or networked to the main computer unit.
Although you probably don't have any terminals attached to your system, you still can log in several times under the same or different login names, using your single keyboard and screen! This magic is performed by using virtual terminals.
Press Alt-F2. When you do so, everything on your screen should disappear, to be replaced by the following:
Welcome to Linux 1.2.13
Log in as your "regular" login (not root). When the shell prompt is displayed, type who at the prompt and press Enter. You should see the following:
fido tty2 Dec 14 01:42
fido tty1 Dec 14 01:40
When you run the Linux command who, your screen displays the names of all logins currently logged into the system, and where they are logged in from. (Your login name will appear, of course, instead of fido in the preceding example.)
By convention, tty1 is the main console screen. It is the "normal" one that appears after Linux has started up, so you don't have to do anything special to get it. If you have switched to any other virtual consoles, you can return to tty1 by
How many virtual screens are active on your system? Try going through all the Alt-Fn keys. Alternatively, you can scroll through the virtual screens by using the Alt-right arrow combination to move up through the screens, or Alt-left arrow to move down.
Quite often you find yourself doing something, perhaps in a long and complicated program, and realize that you should have done something else first. Flip to another virtual terminal and do whatever it is.
Another handy use of virtual terminals is when, through experimentation or otherwise, your screen locks up or starts typing in strange symbols. From a different virtual terminal, you can try to fix things, or restart the system if necessary.
Linux also comes with a very powerful multitasking windowing environment called X. Installing and running X Window systems is described in Chapter 21, "Installing X Window on Linux."
Commands and Programs
"Run the who command" and "Run who" are much more common ways of saying "Type who at the prompt and press Enter." We will use the shorter expressions wherever their meaning is clear. Sometimes people familiar with Linux
drop the word "run," so that one user might tell another, "I tried who but didn't see anything unusual." It's understood by the context that when they "tried who," they actually ran it.
Something else you will notice if you are reading carefully is that there seem to be both Linux programs and Linux commands. A command is what you type at the shell prompt. For this reason, the combination of the shell prompt and what you type after it
is often called a command line. When you press the Enter key, Linux takes the command you've entered and tries to perform it. The Linux system has built-in responses to some commands; for other commands it finds the appropriately named program on your hard
disk and executes that program.
In the strictest sense, then, the command is what you type, and the program is what performs your command. However, very simple programs with straightforward results, such as who, are often referred to as commands, although there is actually a who
program on your hard disk. More complicated programs, usually interactive such as adduser, or open-ended such as a text editor, are called programs. So you might hear one experienced user tell another, "The adduser program worked fine. I tried the who
command 15 minutes later and the new user had logged in already."
In this chapter, we assigned a password to the root login and created a new user ID to be used in the next few chapters. We tried out Linux multitasking, and we learned some useful Linux terminology tips that will serve us well in the future (we will
try to avoid seeing too many error messages, though). At this point, you can either ensure that you have logged out of all virtual terminals, or move on to the following chapters.
In the next two chapters, we will become more familiar with using Linux. In Chapter 7, "Basic Linux Commands and Utilities," we try out a variety of Linux commands as we exercise our Linux muscles. In Chapter 8, we learn more about how Linux stores its programs and data, and explore some of the interesting terrain on your hard drive.