Managing Users and Security in openSUSE Linux
- Nov 2, 2007
IN THIS CHAPTER
- User Accounts and Permissions
- Who Needs What? Managing Groups
- Passwords: The First Line of Security
- Monitoring User Activity
- Letting Mortals Play at Wizardry: SuperUsers
The heart of Linux security is determining who can use what file and what kind of use is permitted. This is not all there is to making Linux a more secure system, but ultimately, what is the purpose of computer security? Keeping the bad guys out of your files.
In this chapter, you will learn about setting up user accounts and creating and managing groups that work together. There are decisions to make about user passwords: Does the user select them, or does the administrator? How strong must passwords be? How often to change them? In this chapter, you'll get advice about security. In short, you'll learn about the human side of system administration.
This stuff is particularly important for system administrators in a multiuser office setting, but even if you are working by yourself, you will need to become familiar with permissions and passwords. This is the area where trouble often starts, and it's the first thing to check when you can't run something.
User Accounts and Permissions
All Linux systems require one administrator, the Root, and at least one generic user, who can be the same person. The Root is, as noted often here, all powerful. Generic users can be restricted to the point of being able to read only a single file, or have full run of the system as the SuperUser (su). This section will help you better understand how the permissions system works, beyond what you learned in Chapter 5, "Getting Started with openSUSE."
Setting Up User Accounts in YaST
The first user account is set up during the openSUSE installation. Adding users is a simple task in YaST.
In YaST, go to Security and Users, then User Management. YaST will review the current user accounts and display them in the first screen (see Figure 19.1).
Figure 19.1 The YaST User and Group Administration tool.
Besides the standard operations of Adding and Deleting users, you can perform several user-related tasks from this screen:
- Change passwords and access rights for existing users
- Allow some users to log in without a password
- View and edit system users (more about this in the next section)
- Set default permissions and groups for new users
- Set password encryption standards
- Configure user-related information for Lightweight Directory Access Protocol (LDAP), Samba, Network Information Service (NIS), and Kerberos services
You will explore some of these options later, but for now you'll create a new user. In this example, you're going to create a user called drone77. Click Add. Figure 19.2 will appear.
Figure 19.2 Set username and password in the first Add a New Local User screen.
YaST asks for the user's full name. This is not required, but YaST will use this information to provide a suggestion for the system username. Because we already have a username picked out, enter drone77 on the User Login line. Type an initial password for this user. The Help pane on the left offers some pointers. The password must be between 5 and 72 characters; it is case sensitive (so mix in some capital letters) and can include spaces and just about any character on the keyboard.
To give drone77 a chance to select his own password, you need to set the expiration date. Click the Password Settings tab and Figure 19.3 opens.
Figure 19.3 Let the user set a password on first login with these settings.
The default settings are for a system in which passwords are set once and never changed. This is OK for a single-user system with a modem connection to the Internet, but it's a bad idea if you have an always-on connection, such as a DSL or cable-modem connection.
Frequent changes of your users' passwords is another way of staying one step ahead of the attackers. A good rule is to reset passwords every 3–6 months. drone77 is set to change passwords every 90 days.
To let drone77 choose a password on login, you must set the Expiration Date for today (in the YYYY-MM-DD format) and set the Days After Password Expires with Usable Login to 1 or 0. The Days Before Password Expiration to Issue Warning can stay at the default, but can be adjusted to your preference. The system will then prompt drone77 to change passwords. When that happens, you should return here to delete the Expiration Date.
Click the Details tab to review the other defaults associated with this user. These default settings are generally OK, but there may be items to adjust. In this dialog box, you can set the following:
- User ID (UID)—Every user must have an ID number. Generic users must have UIDs greater than 499; YaST starts at UID 1000 to be safe. You can change this if you want, but do this only when you create the account. Ownership rights are associated with UID numbers, so changing the number will orphan any files outside of the user's home directory.
- Home Directory—By default, this is /home/<username>, but you can change this here. The best reason to change the home directory is if this user is really just a "persona" of another user (like you, for example), who wants to have a single /home directory to store data in.
- Home Directory Permission Mode—By default, permissions for files in the /home directory are set at 755 (rwxr-xr-x). If you would like other system users to have Write permission, change this to 775.
- Additional User Information—This line is for finger information. For privacy's sake, leave this blank (see "Changing User Information" in Chapter 5).
- Login Shell—This is the default shell for this user. By default, it's bash. Use the drop-down menu, which has the path to every installed shell on the system, to change shells.
- Default Group and Additional Group Membership—By default, YaST assigns users to the Users group and also to the Dialout and Video groups. You'll learn more about assigning groups in the next section.
When you're through adjusting these settings, click Accept to add this user to your system. drone77 should now appear on the list of Local Users. Click Finish to return to YaST.
Some applications need to own their files and processes to function securely. This is accomplished by creating system users. These are usually the daemons that always run in the background (man, lp/print, mail, news, and bin), but also include a few other applications, such as MySQL and the Games user. System users do not log in or have home directories, but they have passwords. They also have control over files that other generic users do not have. System users belong to their own group; that is, bin belongs to the Bin group.
View the list of system users in the User Administration screen by clicking Set Filter and selecting System Users. You should never have to configure these yourself, even as Root.
RWX: Understanding Permissions
Most of the practicalities of setting permissions were covered in Chapter 5. The focus there is on the hows of permissions. It's just a question of assigning Read, Write, and eXecute permissions to the Owner, Group, and World groups. You can do this either from the shell, using the chmod command, or in a GUI file manager. From the shell you can use octals or letter switches.
In this section, the focus is on why you want to set permissions in a particular way. Consider that permissions are the heart of security, as previously mentioned, and start with trying to think like a black hat—a would-be attacker. How can you use these three switches—RWX—to your advantage?
- Read—The safest permission to grant is Read. Giving Read access to a file allows viewing the contents of a file. Read access to a directory allows access to the list of files in that directory. In most cases, someone viewing a file (with bad intent or not) is harmless. But what if it's a critical document that needs to be kept from prying eyes? You probably want to encrypt the file as well, but removing the Read option is another step. What if an attacker wants to see if a file known to have a security hole is on your system? An attacker (or a software bot) can do that with World Read access to that directory.
- Write—Giving Write access to a file allows someone to change the content of a file. Write access to a directory means permitting renaming or deletion of existing files and creation of new files in that directory. It's a little easier to see the danger. Give World Write access to your web-server directory, and your site is a prime candidate for defacement. Give an attacker Write access to your. login file (even without Read access), and someday you won't be able to login because that filename will have been changed. These types of things probably don't happen often, but they are the kinds of mistakes that happen frequently enough to be troublesome.
- Execute—Theoretically, any file in Linux can be made executable by setting this permission. In practice, executable files are standard programs or files that can be used as scripts. In a directory, execute rights are also called search permissions. It means you can use the directory's name when accessing its files.