How to clone permission of a directory of file onto another file or directory in Linux

In my day job I recently came across a much easier was to deal with file and/or directory permissions on Linux based systems. Typically, to determine the permissions of a file or directory you would use the ls command with various potions appended to the end of the command and to change the same file or directory’s permissions you would use the chmod command. As I recently discovered the chmod is also able to clone or copy permissions as well as manually set them.

To lustrate what I ma talking about let’s create a hypothetically example where we have two files with the following permissions.

$ ls -l file*
-rwxr-xr--. 1 lrendek lrendek 0 Apr  7 14:39 file1
-rw-rw-r--. 1 lrendek lrendek 0 Apr  7 14:40 file2

If we wanted to copy the permissions from file 1 onto file2 we would run the following option appended to the chmod command.

$ chmod --reference=file1 file2

As we can see the permissions for file2 have been cloned from file1.

$ ls -l file*
-rwxr-xr--. 1 lrendek lrendek 0 Apr  7 14:39 file1
-rwxr-xr--. 1 lrendek lrendek 0 Apr  7 14:40 file2

If we extend this example further we can also clone the permissions of a directory as well!

$ ls -ld dir*
d--x--x--x. 2 lrendek lrendek 40 Apr  7 14:52 dir1
drwxrwxr-x. 2 lrendek lrendek 40 Apr  7 14:52 dir2
$ chmod --reference=dir1 dir2
$ ls -ld dir*
d--x--x--x. 2 lrendek lrendek 40 Apr  7 14:52 dir1
d--x--x--x. 2 lrendek lrendek 40 Apr  7 14:52 dir2

I had a little bit of an issue finding this but stubbled across this site that provided me with the syntax and examples. Although, I am making this entry mainly for myself but I also hoping that this post will make another Sys. Admin. Job easier. Uf you have any questions, comments, etc. please feel free to contact me on my Contact page or on Twitter.

Views: 5

Similar Posts

  • Recreating discontinued menu items from Cracker Barrel

    My family dines at this restaurant semi regularly and sometime during the COVID “end times” the chain discontinued two of our favorite breakfast items, the Uncle Herschel’s Favorite and the Sunrise Sampler. The staff of course does not know why menu items are changed as this is a decision made at the corporate level so there is no point in complaining to them about the missing items. I did find a thread on the Cracker Barrel Subreddit (yes that is a thing) where I was able to recreate my personal favorite, the Uncle Herschel’s Favorite and my Brother found a random review on Trip Advisor that provided his favorite, the Sunrise Sampler. In the off chance that someone else is wanting to dine on these two lost menu items I thought that providing the workaround we discovered might be helpful to others out there.

    The Uncle Herschel’s Favorate (modified)

    • Two Eggs (scrambled with cheese)
    • Grits
    • Farm-Raised Catfish
    • Fried eggs
    • Biscuits & Gravy

    In order to recreate this item on today’s menu you will need to choose the Build Your Own Homestyle Breakfast option from the menu. Fortunately, this comes with Biscuits & Gravy and two eggs already! For myself I would ask to have them scrambled with cheese but you choose your eggs however you wish. Now we will need to make the following selections:

    • Choose catfish as the meat (grilled).
    • Choose fried apples as the side.
    • Add gets as an additional side.

    If you are not a catfish fan you can choose whatever other meat option that you wish.

    The Sunrise Sampler

    • Two eggs (scrambled with cheese)
    • Grits
    • Fried Apples
    • Hashbrown Casserole
    • Meat sampler (Bacon, Sausage, and Country Ham)
    • Biscuits & Gravy

    Much like the prior item you will need to choose the Build Your Own Homestyle Breakfast option from the menu. Fortunately, this will come with Biscuits & Gravy and two eggs already! My Brother would also ask to have them scrambled with cheese but you choose your eggs however you wish. Now we will need to make the following selections:

    • Choose meat sampler as the meat.
    • Choose fried apples as the side.
    • Add hash brown casserole as an additional side.
    • Add grits as an additional side.

    This is as close to the original items as we have been able to determine. Unfortunately, these now cost more than the original items but it replicates everything else that you want from Breakfast! Feel free to contact me on Mastodon if you know of a cheaper way to do this or lament other list menu items from this Midwestern stable!

    Views: 23
  • A nice Windows Task Manager tip I stumbled across this weekend

    A screenshot of the Windows 10/11 Task manager application.

    I stumbled across this interesting article this week from The Verge from my beloved NetNewsWire feeds. The article is titled Today I learned you can easily pause the Windows Task Manager to stop apps moving around. The gist of the article is the below quote for those in a hurry. 😝

    I can’t believe I’ve been struggling with apps in the Task Manager randomly moving around without realizing there’s a simple keyboard shortcut to pause the Task Manager and stop its contents in their tracks. Yup, all you have to do is hold down the CTRL key and it will pause the Task Manager on both Windows 10 and Windows 11, and perhaps even older versions of Windows, too.

    Tom Warren via The Verge

    This tip only applies to Windows 10 and 11 and I wish I had known this years ago! At any rate as you can see in the original article at your leisure and I hope it helps out others out there in this wide world.

    Views: 8
  • How to correct a WSL VM so that it can use a VPN

    This is a really weird edge case that I came across at work. After an update to Windows subsystem for Linux (WSL) I was no longer able to use my Cisco AnyConnect VPN connection to connect to any of the infrastructure I manage.

    WSL (112) ERROR: CreateProcessParseCommon:782: Failed to translate

    Currently, the only method that I have to use a WSL Virtual Machine (VM) is to use this great third party script so that my VM knows how to actually use a network. I do with Microsoft had an easier way to do this, WSL has no network connectivity once connected to a VPN. 🤦🏻‍♂️

    At any rate, all of these weird tech issues aside with how I choose to SSH into the systems I manage at work, this is how you correct the error WSL (112) ERROR: CreateProcessParseCommon:782: Failed to translate when attempting to use a WSL VM on a VPN Connection. You will need to edit the .profile folder in your home directory (/home/your_userneame_here) and add the following line to the end of the file.

    wsl.exe -d wsl-vpnkit --cd /app service wsl-vpnkit start

    To apply the fix, power cycle your WSL VM with your method of choice. I hope this helps and same you time having to search all over the Internet or watch a Youtube “tutorial” what wastes your time. If you have any questions, etc. hit me up via one of the methods on my contact page. Thanks for stopping by! 🙂

    Views: 14
  • Auto update your brew casks and formulas

    If you use the popular Homebrew package manager on MacOS you are very familar with running something similar to this command on a regular basis.

    brew update && brew upgrade && brew cleanup

    this type of command informs Homebrew to update it’s list of package versions, locate any that need to be updated, and clean up any left over files generated by there processes. If you remember to run this all the time then it is a pretty quick command, but if like me, you forget to do this for weeks or months at a time it can start to take quite some time to finish it’s maintenance.

    Yesterday, I was looking into ways to automate this process through adding the command to Cron or to have Cron run a shell script or apple script file with the commands in it. After some quick searching on my search engine of choice, Kagi, I found a great Github project called Homebrew Autoupdate.

    The project describes itself thusly.

    An easy, convenient way to automatically update Homebrew.

    This script will run brew update in the background once every 24 hours (by default) until explicitly told to stop, utilising launchd.

    brew upgrade and brew cleanup can also be handled automatically, but are optional flags.

    Notifications are enabled by default using a new, code-signed, universal AppleScript applet.

    https://github.com/DomT4/homebrew-autoupdate

    If you decide to install this project every morning you can look forward to notifications like this.

    Screenshot 2024 07 14 At 8.44.13 am

    Do you already use this project? If you tried it, what did you think? Hit me up on Mastodon or my Contact page so we can discuss it or you can ask me any questions you might have.

    Views: 62
  • How to Find Out What Version of Linux You Are Running

    ---------- On Red Hat Linux ---------- 
    $ cat /etc/redhat-release
    
    ---------- On CentOS Linux ---------- 
    $ cat /etc/centos-release
    
    ---------- On Fedora Linux ---------- 
    $ cat /etc/fedora-release
    
    ---------- On Debian Linux ---------- 
    $ cat /etc/debian_version
    
    ---------- On Ubuntu and Linux Mint ---------- 
    $ cat /etc/lsb-release
    
    ---------- On Gentoo Linux ---------- 
    $ cat /etc/gentoo-release
    
    ---------- On SuSE Linux ---------- 
    $ cat /etc/SuSE-release

    AS you can see this various depending on on which form of the original Linux Operating System so I usually end up searching for this as it is not something that I use day to day in my professional or work life. I hope it makes somees’s day that much easier. 🙂

    Views: 6
  • Increase the Docker image size for UNRAID

    I keep having to look this up so I might as well save myself some time. 😉

    • From the UNRAID Web UI stop the RAID array under Main > Array Options > Stop Array.
    • When the UI reloaded go to Settings > Docker.
      • You should now be able to change the size of the array in GB.
    • Click the Save button.
    • Start the RAID array back up.

    Views: 56