List Permissions, Ownership, and More


ls -l

You've now learned how to format the results of ls to tell you more about the contents of directories, but what about the actual contents themselves? How can you learn more about the files and folders, such as their size, their owners, and who can do what with them? For that information, you need to use the -l option (or --format=long).

$ ls -l ~/bin total 2951 -rw-r--r--   1 scott scott 15058 2005-10-03 18:49   adblock_filters.txt -rwxr-xr--   1 scott root     33 2005-04-19 09:45      addext -rwxr--r--   1 scott scott   245 2005-10-15 22:38     backup drwxr-xr-x   9 scott scott  1080 2005-09-22 14:42    bin_on_bacon -rw-r--r--   1 scott scott 237641 2005-10-14 13:50  calendar.ics -rwxr-xr--     1 scott root  190 2005-04-19 09:45     convertsize drwxr-xr-x   2 scott scott  48 2005-04-19 09:45     credentials 


The -l option stands for long, and as you can see, it provides a wealth of data about the files found in a directory. Let's move from right to left and discuss what you see.

On the farthest right is the easiest item: The name of the listed item. Want ls to display more about it? Then add the -F option to -l, like this: ls -lF. Color is easily available as well, with ls -lF --color.

Moving left, you next see a date and time. This is the time that the file was last modified, including the date (in year-month-day format) and then the time (in 24-hour military time).

Farther left is a number that indicates the size of the item, in bytes. This is a bit tricky with foldersfor instance, the previous readout says that bin_on_bacon is 1080 bytes, or just a little more than one kilobyte, yet it contains 887KB of content inside it. The credentials directory, according to ls -l, is 48 bytes, but contains nothing inside it whatsoever! What is happening?

Remember in Chapter 1, "Things to Know About Your Command Line," when you learned that directories are just special files that contain a list of their contents? In this case, the contents of credentials consists of nothing more than the .. that all directories have to refer to their parent, so it's a paltry 48 bytes, while bin_on_bacon contains information about more than 30 items, bringing its size up to 1080 bytes.

The next two columns to the left indicate, respectively, the file's owner and its group. As you can see in the previous listing, almost every file is owned by the user scott and the group scott, except for addext and convertsize, which are owned by the user scott and the group root.

Note

Those permissions need to be changed, which you'll learn how to do in Chapter 7, "Ownerships and Permissions" (hint: the commands are chown and chgrp).


The next to last column as you move left contains a number. If you're examining a file, this number tells you how many hard links exist for that file; if it's a directory, it refers to the number of items it contains.

Tip

For more information about hard (and soft) links, see www.granneman.com/techinfo/linux/thelinuxenvironment/softandhardlinks.htm, or search Google for linux hard links.


And now you reach the final item on the left: The actual permissions for each file and directory. This might seem like some arcane code, but it's actually very understandable with just a little knowledge. There are 10 items, divided (although it doesn't look that way) into 4 groups. The first group consists of the first character; the second group contains characters 2 through 4; the third consists of characters 5 through 7; and the fourth and final group is made up of characters 8 through 10. For instance, here's how the permissions for the credentials directory would be split up: d|rwx|r-x|r-x.

That first group tells you what kind of item it is. You've already seen that -F and --color do this in different ways, but so does -l. A d indicates that credentials is a directory, while a - in that first position indicates a file. (Even if the file is executable, ls -l still uses just a -, which means that -F and --color here give you more information.) There are, of course, other options that you might see in that first position, as detailed in Table 2.3.

Table 2.3. Permission Characters and File Types

Character

Meaning

-

Regular file

-

Executable

d

Directory

l

Symbolic link

s

Socket

b

Block device

c

Character device

p

Named pipe


Tip

To view a list of files that shows at least one of almost everything listed in this table, try ls -l /dev.


The next nine charactersmaking up groups two, three, and fourstand for, respectively, the permissions given to the file's owner, the file's group, and all the other users on the system. In the case of addext, shown previously, its permissions are rwxr-xr--, which means that the owner scott has rwx, the group (in this case, also scott) has r-x, and the other users on the box have r--. What's that mean?

In each case, r means "yes, read is allowed"; w means "yes, write is allowed" (with "write" meaning both changing and deleting); and x means "yes, execute is allowed." A - means "no, do not allow this action." If that - is located where an r would otherwise show itself, that means "no, read is not allowed." The same holds true for both w and x.

Looking at addext and its permissions of rwxr-xr--, it's suddenly clear that the owner (scott) can read, write, and execute the file; the members of the group (root) can read and execute the file, but not write to it; and everyone else on the machine (often called the "world") can read the file but cannot write to it or run it as a program.

Now that you understand what permissions mean, you'll start to notice that certain combinations seem to appear constantly. For instance, it's common to see rw-r--r-- for many files, which means that the owner can both read and write to the file, but both the group and world can only read the file. For programs, you'll often see rwxr-xr-x, which allows everyone on the computer to read and run the program, but restricts changing the file to its owner.

Directories, however, are a bit different. The permissions of r, w, and x are pretty clear for a file: You can read the file, write (or change) it, or execute it. But how do you execute a directory?

Let's start with the easy one: r. In the case of a directory, r means that the user can list the contents of the directory with the ls command. A w indicates that users can add more files into the directory, rename files that are already there, or delete files that are no longer needed. That brings us to x, which corresponds to the capability to access a directory in order to run commands that access and use files in that directory, or to access subdirectories inside that directory.

As you can see, -l is incredibly powerful all by itself, but it becomes even more useful when combined with other options. You've already learned about -a, which shows all files in a directory, so now it should be obvious what -la would do (or --format=long --all).

$ la -la ~/ drwxr-xr-x     2 scott scott      200 2005-07-28 01:31     alias drwx------     2 root root        72 2005-09-16 19:14      .aptitude -rw-r--r--     1 scott scott     1026 2005-09-25 00:11    .audacity drwxr-xr-x    10 scott scott      592 2005-10-18 11:22     .Azureus -rw-------     1 scott scott     8800 2005-10-18 19:55    .bash_history 


Note

From this point forward in this chapter, if scott is the owner and group for a file, I will remove that data from the listing.




Linux Phrasebook
Linux Phrasebook
ISBN: 0672328380
EAN: 2147483647
Year: 2007
Pages: 288

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net