How to copy permissions from one file to another on Linux

Posted on in Categories , , , , , last updated March 16, 2016

I need to copy or clone file ownership and permissions from another file on Linux. Is there a bash command line option to clone the user, group ownership and permissions on a file from another file on Linux operating system?

To set file owner and group use chown command. To change file mode, bits (permissions) use chmod command. Both commands accept an option to use another file as a reference is known as RFILE.

Syntax to clone permissions from another file or directory on Linux

The syntax is as follows use RFILE’s mode instead of MODE values:
chmod --reference=RRFILE FILE
chmod [options] --reference=RRFILE FILE

Examples: Copy file permission, but not files

Let us list both files:
ls -l install58.iso xenial-server-amd64.iso
Sample outputs:

-rw-rw-rw- 1 libvirt-qemu kvm 230862848 Aug 16  2015 install58.iso
-rw-r--r-- 1 libvirt-qemu kvm 786432000 Mar 14 02:01 xenial-server-amd64.iso

To copy install58.iso file permission to xenial-server-amd64.iso, enter:
chmod --reference=install58.iso xenial-server-amd64.iso
Verify it:
ls -l install58.iso xenial-server-amd64.iso
Sample outputs:

-rw-rw-rw- 1 libvirt-qemu kvm 230862848 Aug 16  2015 install58.iso
-rw-rw-rw- 1 libvirt-qemu kvm 786432000 Mar 14 02:01 xenial-server-amd64.iso

You can specify multiple files too:
chmod --reference=file.txt dest1.txt dest2.txt dest3.conf
You can combine and use find and xargs as follows:
find /path/to/dest/ -type f -print0 | xargs -O -I {} chmod --reference=/path/to/rfile.txt {}

Syntax to clone ownership from another file or directory on Linux

The syntax is as follows to use RRFILE’s owner and group rather than specifying OWNER:GROUP values
chown --reference=RRFILE FILE
chown [options] --reference=RRFILE FILE

Examples: Copy file ownership, but not files

To copy install58.iso file user and group onwership to xenial-server-amd64.iso, enter:
chown --reference=install58.iso xenial-server-amd64.iso
ls -l

Sample outputs:

Fig.01: Linux clone or copy or replicate file permissions, using another file as reference
Fig.01: Linux clone or copy or replicate file permissions, using another file as reference

Posted by: Vivek Gite

The author is the creator of nixCraft and a seasoned sysadmin and a trainer for the Linux operating system/Unix shell scripting. He has worked with global clients and in various industries, including IT, education, defense and space research, and the nonprofit sector. Follow him on Twitter, Facebook, Google+.

6 comment

  1. I had never thought about needing this before and now that I see how it’s done can’t believe I haven’t used chmod/chown in this way before. Thanks!

  2. You can acieve this same result in single command using ACL

    getfacl file1 | setfacl –set-file=- file2

  3. drw-r–r–. 2 emily emily 4096 Mar 18 14:58 z_dir
    -rw-rw-r–. 1 root emily 0 Mar 18 14:56 z_file1
    -rw-rw-r–. 1 emily root 0 Mar 18 14:56 z_file2
    [[email protected]:/home/emily]# ll z_dir
    total 0
    -rw-r–r–. 1 root root 0 Mar 18 14:58 zfile3
    -rw-r–r–. 1 root root 0 Mar 18 14:58 zfile4

    copy permission from file to directory recursively
    —————————————————
    [[email protected]:/home/emily]# chmod -R –reference=z_file2 z_dir
    [[email protected]:/home/emily]# ll z_dir
    total 0
    -rw-rw-r–. 1 root root 0 Mar 18 14:58 zfile3
    -rw-rw-r–. 1 root root 0 Mar 18 14:58 zfile4

    copy ownership from file to directory recursively
    ————————————————–
    [[email protected]:/home/emily]# chown -R –reference=z_file2 z_dir
    [[email protected]:/home/emily]# ll z_dir
    total 0
    -rw-rw-r–. 1 emily root 0 Mar 18 14:58 zfile3
    -rw-rw-r–. 1 emily root 0 Mar 18 14:58 zfile4
    [[email protected]:/home/emily]#

    copy for multiple directory/files
    ———————————-
    [[email protected]:/home/cleri]# chown -R –reference=z_file2 z_dir1 z_dir2 z_dir3
    [[email protected]:/home/cleri]# chmod -R –reference=z_file2 z_dir1 z_dir2 z_dir4

  4. I wonder, can this be used to clone a “home” folder from a failing drive and placed in a new install of the same OS?….will there be UUID conflicts?…what about other unique information?

Comments are closed.