Baeldung Pro – Linux – NPI EA (cat = Baeldung on Linux)
announcement - icon

Learn through the super-clean Baeldung Pro experience:

>> Membership and Baeldung Pro.

No ads, dark-mode and 6 months free of IntelliJ Idea Ultimate to start with.

Partner – Orkes – NPI EA (tag=Kubernetes)
announcement - icon

Modern software architecture is often broken. Slow delivery leads to missed opportunities, innovation is stalled due to architectural complexities, and engineering resources are exceedingly expensive.

Orkes is the leading workflow orchestration platform built to enable teams to transform the way they develop, connect, and deploy applications, microservices, AI agents, and more.

With Orkes Conductor managed through Orkes Cloud, developers can focus on building mission critical applications without worrying about infrastructure maintenance to meet goals and, simply put, taking new products live faster and reducing total cost of ownership.

Try a 14-Day Free Trial of Orkes Conductor today.

1. Overview

File ownership and permissions control who can access, change, and execute files and directories. This feature helps in maintaining the system’s integrity and security. Now, when working with files, it’s not uncommon to clone permissions and ownership from one file to another.

In this tutorial, we’ll explore cloning ownership and permissions from another file. To achieve this, we’ll use the chown and chmod commands in the command line.

2. Using the chown Command

In Linux, the chown command helps in changing the ownership of files and directories. So, every file and directory has an owner/user and belongs to a specific group.

To demonstrate, let’s compare two files:

$ ls -l
total 0
-rw-rw-r-- 1 samuel samuel 0 Ago 6 00:35 Contact.txt
-rw-rw-r-- 1 peter  devs 0 Ago 6 00:35 Info.txt

In the above example, the owner of the Contact.txt file is samuel and it belongs to the group samuel. Whereas, the owner of the Info.txt file is peter and it belongs to the devs group.

Next, let’s clone ownership from the Contaxt.txt file:

$ chown --reference=Contact.txt Info.txt

In this example, we clone ownership from the Contact.txt file onto the Info.txt file:

  • –reference=Contaxt.txt – this option specifies the reference file, Contact.txt, whose ownership we want to clone
  • Info.txt – represents the file whose ownership we want to change

Lastly, let’s see if the ownership cloning was successful:

$ ls -l
total 0
-rw-rw-r-- 1 samuel samuel 0 Ago 6 00:35 Contact.txt
-rw-rw-r-- 1 samuel samuel 0 Ago 6 00:35 Info.txt

At this point, we’ve managed to update the owner and group of the Info.txt file to match those of the Contact.txt file.

3. Using the chmod Command

The chmod command allows us to change the permissions of files and directories. In detail, these file permissions, read, write, and execute, determine what actions can be performed on a file by the owner, group, and other users.

To begin, let’s check the file permissions of two different files:

$ ls -l
total 0
-rwxrw-r-- 1 samuel samuel 0 Ago 6 00:35 Contact.txt
-rw-rw-r-- 1 peter  devs 0 Ago 6 00:35 Info.txt

By default, file permissions are grouped into three. To illustrate, let’s explain the permissions of the Contaxt.txt file:

  • rwx – gives the owner samuel read, write and execute permissions
  • rw- – grants read and write permission to the members of the user group samuel
  • r– – specifies that any other users can only read the file

Next, let’s clone permissions from the Contact.txt file onto the Info.txt file:

$ chmod --reference=Contact.txt Info.txt

Here, we also use the –reference option to declare the reference file from which the permissions will be cloned.

Finally, let’s confirm if we’ve succeeded:

$ ls -l
total 0
-rwxrw-r-- 1 samuel samuel 0 Ago 6 00:35 Contact.txt
-rwxrw-r-- 1 peter  devs 0 Ago 6 00:35 Info.txt

From this output, we can see that we’ve managed to clone permissions from the Contact.txt file onto the Info.txt file.

4. Conclusion

In this article, we discussed how to clone ownership and permissions from one file to another. We achieved this by utilizing the chown and chmod commands from the command line.