Every now and then file permissions under Linux can be tricky. in some cases a wrong file permission can make it happen that things do not work they way you would expect them. Also I found that a lot of people find it challenging to set the correct file permissions using the command line under Linux. A way to make life more easy in some cases is to use the option to “clone” file permissions with a single command.
For example, if you have created some addons to a tool running on an Oracle Linux system and you want to the addon file to have the same permissions as another file you can use the –reference option from the chmod command.
As an example we have two .jar files:
[root@localhost ~]# ls -l *.jar -rwxr-xr-x. 1 root root 88 May 19 10:48 addonExecution.jar -rw-r--r--. 1 root root 11 May 19 10:48 executionLib.jar
We want to make sure that the addonExecution.jar has exactly the same permissions as the executionLib.jar file. We can do this by specifying the desired stated in a chmod command, we can also use the –reference option as shown below:
[root@localhost ~]# chmod --reference=executionLib.jar addonExecution.jar
This will make sure that the addonExecution.jar file now has exactly the same permissions as the file used as a reference.
[root@localhost ~]# ls -l *.jar -rw-r--r--. 1 root root 88 May 19 10:48 addonExecution.jar -rw-r--r--. 1 root root 11 May 19 10:48 executionLib.jar
Another use case example of this is that you can use it in a bash script where you might not be sure what the permissions should be for a certain file and only know that they always need to be the same as a specified other file. By using the –reference option you do not explicitly need to know the permissions during the creation of the bash script, you only need to know which file can be used as a reference.