Change Mode

So you have written your first program in Perl and it probably looks something like this


# We will call the program hello_world
print “Hello world\n”

Now you try to run it with the command ./hello_world, only to find that it won’t run.  Well the reason is obvious, well to experienced users anyway.  The problem is that your program doesn’t have permission to be executed.  Instead you first need to run chmod u+x hello_world, then ./hello_world will run as expected.
The function of the chmod command is to change the mode of a files.  The modes are permissions and special modes.  I will only touch on permissions in this post.  The format for this command is as follows

chmod [references] [operator] [modes] file1...

references: who you want to apply the changes to
operator: how the changes are to be made
modes: which changes are to be made

The references are; u, o, g, and a u is the owner of the file.  g is users who are members of the file’s group.  o is outsider, members who are not specified by either u or g.  Finally a is all, this is equivalent to uog.

The operators are; +, , and =.  As can be expected you use + to add permissions and to remove them.  The = is a little harder to explain but is made perfectly clear with an example (which is later in this post).

The modes are; r, w, x.  They stand for read, write, and executable respectively.

Well now I suppose you would like to see some examples of this in use.  For all these examples we will assume that hello_world has the following initial modes: -rwxr-xr-x, this means that the owner (the first grouping of rwx) has the ability to read, write, and execute.  However, group members (the second grouping) and outsiders (the last grouping) can only read and execute

Example 1: Make it so that the owner only has executable permission.  After using the following command, the file’s modes will look like —xr-xr-x

chmod u=x hello_world

Example 2: Make is so that the owner can only read and execute.  After using the following command, the file’s modes will look like -r-xr-xr-x

chmod u-w hello_world

Example 3: Make it so that group users and outsiders  can read and write only. While not affecting the owner’s permissions.  After using the following command the file’s modes will look like -rwxrw-rw-

chmod og=rw hello_world

Example 4: Make it so that no one has execute ability.  The file’s modes will look like -rw-r–r– after using the following command.

chmod a-x hello_world

Example 5: Make is so that people that aren’t group members or the owner have write permission.  The file’s modes will look like -rwxr-xrwx after using the following command.

chmod o+w hello_world

So that wasn’t too bad, and hopefully you noticed how the = operator works.  Finally, it is worth mentioning that in order to see a file’s modes you only need to use ls -l file.  For more information on chmod check out this Wikipedia entry, and for examples follow this link.

2 Responses to Change Mode

  1. Miorel says:

    Some readers may also be interested why you had to write ./hello_world as opposed to simply hello_world 😉

  2. […] is in some ways a continuation of my post Changing Modes.  As pointed out in one of the comments (thanks to Miorel) some people might wonder why you would […]

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: