bash-tutorial/tutorial/changeowner.org

2.3 KiB

Changing permissions for files and directories

There are three types of permissions for files and directories in the system:

  1. Read ('r')
  2. Write ('w')
  3. Execute ('x')

The permissions can be differente for users: owner - group - others

Creating a file and checking permissions

Here we create a file with the sentence "this is a fancy file". The sentence is redirected to the name "fancyfile.org" and a new file is created!

echo "this is a fancy file" > fancyfile.org

In the ouptut of ls command, there letters showing each permission for each user: owner, group, others, respectively.

  ls -la fancyfile.org
-rw-r--r-- 1 compartido compartido 21 jul 18 06:06 fancyfile.org

Settings permissions for the file

  chmod o=r,g=rw,o=r fancyfile.org

Then it changed!

  ls -la fancyfile.org
-rw-rw-r-- 1 compartido compartido 21 jul 18 06:06 fancyfile.org

Changing permission for directories

Let's say I (unintentionally) changed the permissions for a directory that contains multiple subdirectories. Let's call that directory "buds"

I can't access the files without being `root`. This is the outuput in the command line When a list the directory using `ls -la`.

  drw-r--r--  81 user user     4096 dec 26 06:21  buds

When I go to my git repository and check the change I can see this output for every file within the directory:

  diff --git a/doc/index.rst b/doc/index.rst
  old mode 100644
  new mode 100755

This is how the permission could be changed:

Note that, in this case, it's necessary to use `sudo` before the command to access the files

  chmod -R o=wxr,g=xr,o=x buds

The output now is:

  drw-r-x--x  81 user user    4096 dec 26 06:21  buds

Remember how it looks before

  drw-r--r--  81 user user    4096 dec 26 06:21  buds_before

But I still can open the files. That is because need to change the owner from 755 to 644:

  chown -R 755 /etc/myfiles

ps: should use`sudo` to run this command