How to Manage File and Folder Permissions in Linux
For many users of Linux, getting used to file permissions and ownership can be a bit of a challenge. It is commonly assumed, to get into this level of usage, the command line is a must. Although there is always far more power and flexibility to be had, running seemingly complicated command isn’t alwaysa necessity. With the help of some of the most user-friendly desktop interfaces available, you can get away with little to no command line usage. Even with file permission and ownership.
That’s right, much to the surprise of many a new user, managing files and folders can be done from within the file managers. But before we get to the GUI, it’s always best to have a solid understanding of what it’s doing. So, we’ll start with the command line first.
Command line: File permissions
The commands for modifying file permissions and ownership are:
-
chmod – change permissions
-
chown – change ownership.
Neither command is difficult to use. It is important, however, that you understand the only user that can actually modify the permissions or ownership of a file is either the current owner or the root user. So, if you are user Bethany, you cannot make changes to files and folders owned by Jacob without the help of root (or sudo). For example:
A new folder was created on a data partition called /DATA/SHARE. Both users Bethany and Jacob need read and write access to this folder. There are a number of ways this can be done (one of which would be to join the users to a special group – we’ll go over managing groups in another post). If Bethany and Jacob are the only users on the system (and you know your network is safe – very important), you can change the permissions of the folder to give them access. One way to do this would be to issue the command:
sudo chmod -R ugo+rw /DATA/SHARE
The breakdown of the above command looks like:
-
sudo – this is used to gain admin rights for the command on any system that makes use of sudo (otherwise you’d have to ‘su’ to root and run the above command without ‘sudo’)
-
chmod – the command to modify permissions
-
-R – this modifies the permission of the parent folder and the child objects within
-
ugo+rw – this gives User, Group, and Other read and write access.
As you can probably surmise, this command opens wide the SHARE folder such that anyone on the system can have access to that folder. As I mentioned earlier, a more secure method would be to use groups. But we’re just using this for the purpose of demonstration.
The breakdown of permissions looks like this:
-
u – user
-
g – group
-
o – other
The ‘other’ entry is the dangerous one, as it effectively gives everyone permission for the folder/file. The permissions you can give to a file or folder are:
-
r – read
-
w – write
-
x – execute
Using the -R switch is important. If you have a number of sub-folders and files within the SHARE directory, and you want the permissions to apply from the parent object (the containing folder) to the child objects (the sub-folders and files), you must use the -R (recursive) switch so the same permissions are applied all the way to the deepest folder, contained within the parent.
Command line: File ownership
Changing the ownership of a file or folder is equally as simple. Say Jacob moved a folder for Bethany into the SHARE directory – but Jacob still has ownership. This can be changed with a simple command:
sudo chown -R bethany /DATA/SHARE
Let’s break this down.
-
sudo – admin rights must be used since we are dealing with a folder that belongs to another user
-
chown – the command for changing ownership
-
-R – the recursive switch to make sure all child objects get the same ownership changes
-
bethany – the new owner of the folder
-
/DATA/SHARE – the directory to be modified
Should Bethany send the folder back to Jacob, the ownership would need to again be changed (again, this will be simplified with the use of groups).