-->


- 6 -

Getting Started

by Ed Treijs

IN THIS CHAPTER


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!) 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 2.0.0.







darkstar login:




WARNING: 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.

Whats 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.


NOTE: 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 login--the login's privileges--are controlled by Linux; different logins have different levels of privileges.


NOTE: 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.


NOTE: 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 session.

Why You Shouldnt 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.


WARNING: 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 10 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!


NOTE: 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

darkstar login:



type

root



and press the Enter key. After installation, the root login has no password, so you are not prompted for one.


NOTE: 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 it--but 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



Linux 2.0.0. 



You have mail.







If it's Tuesday, this must be someone else's fortune.







darkstar:~#



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 commands--it's prompting you for input. The system prompt also displays the following useful information:

Passwords

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 Linux did not ask for a root password. That is because, on installation, the root password is set to the 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 user name (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.


NOTE: 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 you leave.

Of course, the amount of system security you require depends on how much access there is to your system, and how sensitive the information found on it is. 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:

darkstar:~# passwd



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.


WARNING: 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:

Password changed.



darkstar:~#



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.


WARNING: 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!

TIP: 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. 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:

darkstar:~# adduser



Adding a new user. The username should be not exceed 8 characters



in length, or you many run into problems later.



Enter login name for new account (^C to quit):



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.

At the adduser prompt, enter the login name that you want to create. It is advisable to use all lowercase letters to avoid confusion. Do not exceed the eight-character limit at this point.

For our example in this chapter, we'll create the user fido. (After all, as the old joke goes, "On the Internet, no one knows if you're a dog!") Of course, you will see your choice on the screen in place of fido.

Enter login name for new account (^C to quit): fido



Editing information for new user [fido]



Full Name:



The adduser utility asks a set of questions about the new user and the type of environment to present her with when she logs in. At this prompt, you can type the full name of the user. Uppercase and spaces are fine. This information is not mandatory, but it is used by the system for some other tasks.

Full Name: Fido Dog



GID [100]:



The system is waiting for you to provide a GID or Group ID, which is discussed in more detail in Chapter 39, "Devices." The last part of the prompt, [100], means that it's suggesting a GID of 100. This is the default choice.


TIP: In this adduser script and many other Linux programs, default choices are presented in square brackets. Simply press the Enter key to accept the default, or type the new value if you don't want to accept the default value. Sometimes (as you will see a little further on in the adduser utility) you are given two choices--usually y for yes and n for no--separated by a / or | character. The item in uppercase is the default choice, which you can use by pressing Enter. The other choice must be typed explicitly. In the following examples, yes is always the default choice: [Y/n], [Y|n], [Yn].

The default Group ID of 100 is fine for this new user, so simply press Enter. In most cases you will not want to change the suggested Group ID.

GID [100]:



Group 'users', GID 100



First unused uid is 501



UID [501]:



The adduser utility did not echo your Group ID choice to the screen. This can be a little disconcerting if you're not used to it, especially if you look back and try to figure out what you've done! Most Linux commands don't echo what you have done, though, so this is a good time to get used to it.

The adduser utility now asks for a UID or User ID. Linux suggests a default value of 501. Again, the default is fine in this case, so just press Enter.


NOTE: 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.

The adduser utility then shows two more prompts asking for the user's home directory and the shell:

Home Directory [/home/fido]:



Shell [/bin/bash]:



Choose the default values for Home Directory and Shell. I'll explain more about directories in Chapter 8 and look at different shells in Chapters 10, "bash," 11, "pdksh," and 12, "tcsh." The default values are suitable for most user IDs.

As a last step, the adduser program asks for a password for the new user. At the prompt, enter a suitable password. If you press Enter without typing anything else, the password is set to the same string as the login. This is not recommended, because it is easy to guess. Even a simple password is better.

Password [fido]:







Information for new user [fido]:



Home directory: [/home/fido] Shell: [/bin/bash]



uid: [501] gid: [100]



Is this correct? [y/N]:



The adduser program now verifies that you are happy with all the information you have entered. If you are, type y for yes, and press Enter. The default value (shown by the capital letter) is N for no. If you choose the default, you are telling the script that the information displayed is not correct, and you have to start the whole process over again.

When you answer y to the question Is this correct?, the adduser program creates the new user's directory and adds the user information to the system configuration files. You see the following information appear on the screen as the adduser utility does its work. When the utility has finished, you see the Linux shell prompt again:

Adding login [fido] and making directory [/home/fido]







Adding the files from the /etc/skel directory:



./.less -> /home/fido/./.less



./.lessrc -> /home/fido/./.lessrc



darkstar:~#



We will look at how to remove unwanted users from your /etc/passwd file in Chapter 41, "Users."

Logging Out

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:





darkstar:~# logout



Welcome to Linux 2.0.0.



darkstar login:



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



Password:



Last login: Sun Dec 11 19:14:22 on tty1



Linux 2.0.0.







Quiet!  I hear a hacker....



darkstar:~$



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.


NOTE: 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.

darkstar:~$ adduser



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.

Search Paths

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.

darkstar:~$ /sbin/adduser



bash: /sbin/adduser: Permission denied



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.

Virtual Terminals

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 2.0.0.







darkstar login:



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:

darkstar:~$ who



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 pressing Alt-F1.

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 XFree86."

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."

Summary

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 Commands," 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.