File permissions are an important aspect of the Linux operating system for security and privacy. You see, Linux is a multi-user operating system, which means more than one person can be logged on to the system at one time.
Say, for example, you have a file calledprivate.txtin the Documents directory of your home (so ~/Documents). By default on most modern Linux distributions, only the owner can view and/or edit the file. So, if userolivialogs in, she cannot see the contents of your home directory.
Also: Thinking about switching to Linux? 9 things you need to know
But what about if you create a directory, outside of home, that you want to allow others to use? Let's say the directory is/user/share/data, which you could create with the command:
sudo mkdir/usr/share/data
Once you've created the directory, the only way to add anything to it is by usingsudofor admin privileges -- and that includes allowing anyone on the system to be able to read and write to that directory, so they can view and edit files. Now, that's not exactly the most secure approach.
Also: Want to save your aging computer? Try these 5 Linux distributions
So, what I'm going to do is show you how to alter the file permissions in such a way that any valid user can read/write to the directory/user/share/data. Then I'll show you how to set the permissions in such a way that a file can be run like an app, which comes in handy when creating scripts.
Ready? Let's do this.
What you'll need:For this feature, you'll need a running instance of Linux, which can be any distribution and either a desktop or server. You'll also need a user with sudo privileges. That's it.
With themkdir command we used earlier, we've created the directory /usr/share/data. We can set this directory such that any folder or file created within it enjoys the read/write permissions with the command:
sudo chmod-R ugo+rw /usr/share/da
Let me explain the above command:
A couple of things to keep in mind. First, you don't have to give permissions to all three types. You could give permissions to just u (user), g (group), or o (other). You can also give just r (read), w (write), or x (executable) permissions. For instance, you could give all users write permissions with:
sudo chmod -R u+w /usr/share/data
Also, if you're working with a file and not a folder, simply remove the -R option from the command.
Once you've issued the command, you can verify it worked by issuing another command:
touch /usr/share/data/test
The above command will create an empty file, called test, in /usr/share/data. If the command worked, congratulations, you've successfully changed the permissions of the folder.
Say you've created a script that will back up the contents of your ~/Documents directory. To run that script, it must have executable permissions, which can be done with thechmod command. If your script is calledbackup, the command to give it executable permissions would be:
chmod u+x backup
Make sure to run the above command in the directory housing the script. To run the script, you could issue the command:
./backup
You can also remove permissions with the chmod command. Let's stick with our earlier example. You now want to remove read/write permissions for the /usr/share/data directory. To do that, you would substitute - for +, so the new command would be:
sudo chmod -R ugo-rw /usr/share/data
At this point, no one would be able to read or write data to the directory.
Also: How to choose the right Linux desktop distribution for you
Now, this isn't the best method of adding or removing permissions on Linux because you wouldn't want to give every single user on a system access to modify a directory. A better way of handling this task is using groups. I'll explain that feature in an upcoming tutorial. Until then, keep practicing with this simple method of changing permissions on files and folders in Linux.