---
title: "Linux File Permissions: A Strategic Guide for Windows Administrators"
description: "Explore our guide on Linux File Permissions, tailored for Windows admins to effortlessly understand and manage Linux user accounts and file security."
canonical: "https://adamtheautomator.com/linux-file-permissions/"
---

# Linux File Permissions: A Strategic Guide for Windows Administrators

> Explore our guide on Linux File Permissions, tailored for Windows admins to effortlessly understand and manage Linux user accounts and file security.

Source: https://adamtheautomator.com/linux-file-permissions/

---

ATA Learning

Tap to hide

[

ATA Learning

](/)

*   [Home](/)
*   [Tutorials](/tutorials/)
*   [Instructors](/author/)
*   [Advertising](/advertising/)
*   [Recommended Resources](/resources/)
*   [About Adam](/about-adam/)

Search for:  

*   [](https://twitter.com/adbertram)
*   [](https://github.com/Adam-the-Automator)
*   [](https://www.linkedin.com/company/adam-the-automator-llc)
*   [](/feed/)

![Linux File Permissions: A Strategic Guide for Windows Administrators](https://adamtheautomator.com/wp-content/uploads/2023/12/linux-file-permissions.jpg)

# Linux File Permissions: A Strategic Guide for Windows Administrators

[![](https://secure.gravatar.com/avatar/d651a7bb1f4308be67d95c5cb50560ed0ee3e700256bd027cb08fbea6655b457?s=192&d=mm&r=g)Christopher Bisset](https://adamtheautomator.com/author/christopher-b/)14 December 20237 min. read

Categories: [IT Ops](/category/it-ops/)

Tags:[Linux](/tag/linux/)

Table of Contents

*   [Working with the File System](#h-working-with-the-file-system)
*   [No More Drive Letters](#h-no-more-drive-letters)
*   [Users and Home Folders](#h-users-and-home-folders)
*   [Capitalization is Everything in Linux](#h-capitalization-is-everything-in-linux)
*   [User Accounts](#h-user-accounts)
*   [Windows SIDs](#h-windows-sids)
*   [Linux User IDs](#h-linux-user-ids)
*   [Linux File Permissions](#h-linux-file-permissions)
*   [File Ownership](#h-file-ownership)
*   [Numeric Notation for File Permissions](#h-numeric-notation-for-file-permissions)
*   [Wrap Up](#h-wrap-up)

If you’ve managed [Windows](https://adamtheautomator.com/tag/windows-10/) for some time, you probably have experience with user account management, the NTFS file system, and setting permissions. If so, prepare yourself for a different world with Linux file permissions! In Linux, the file system is a different animal you must learn to be a proficient Linux admin.

> _This is Part II of our four-part series on learning Linux from a Windows admin perspective! Be sure to read [Part I](https://adamtheautomator.com/yast/) if you haven’t already._

## Working with the File System

Let’s first jump into how Linux stores and manages files via the file system.

> _Note: All examples will be using OpenSUSE Linux._

### No More Drive Letters

Unlike Windows, removable drives and other devices _don’t_ automatically get a drive letter and open up on reboot. In Windows, every drive gets mounted as a drive letter: _C:\\_, _D:\\_, etc. How do drive letters in Linux work? There are none!

In Linux, there is a folder called the _root_ folder. This folder is located in the root of the file system or simply _`/`_. The forward slash is the first forward slash before every other file in the system comes from. This forward slash is _kind_ of like the base _C:\\_, though only if the other drive letters _only_ existed as a subfolder of _C:\\_.

The root folder is where the core system files lie. Everything else, including other devices, are a subfolder of this central folder.

Linux blurs the line between folders and filesystems. The Linux directory _/home_ is the root of all users’ “profiles” similar to the _C:\\Users_ folder in Windows. In this case, _/home_ is a directory. However, “directories” in Linux don’t have to actually be directories. They can also be storage partitions or even a separate hard disk altogether. This concept is analogous to [Windows mount points](https://docs.microsoft.com/en-us/windows-server/storage/disk-management/assign-a-mount-point-folder-path-to-a-drive).

> _You can learn more about root folders in [this article](https://averagelinuxuser.com/linux-root-folders-explained/)._

### Users and Home Folders

If you’re using OpenSUSE, you might notice a **Home** folder on your desktop as shown below. This folder is the Linux version of the _C:\\users\\<username>_ folder or “profile”. The Linux “users” folder lives under _/home_ on your installation disk by default.

In the example below, the user is called _homelab_ with a “profile” located in _/home/homelab._

![Your own User (Home) Folder](https://adamtheautomator.com/wp-content/uploads/2020/11/Untitled-2020-11-21T123655.666.png)

Your own User (Home) Folder

> _In Linux (and Windows), the home folder (or user profile in Windows) has a shorthand notation of a tilde (_~)_. If you see something like `"~/Documents/blah.txt`, it’s actually referring to your `/home/<username>/Documents/blah.txt` file._

### Capitalization is Everything in Linux

_Everything_ in Linux is case sensitive. This concept is the complete opposite of Windows where almost nothing is case sensitive.

For example, if you have a directory called _/home/homelab,_ a completely different directory can be called _/home/Homelab._ This concept also extends to commands. Running `cd /home/homelab` is different from `CD /home/homelab` (which should fail).

As a Windows person, this concept _will_ trip you up at some point. Be very careful about your capitalization! You can see an example of two separate folders below. The only difference between the two is capitalization: In a Windows environment, this is not possible.

![Being able to create two separate folders just by capitalization is not possible on Windows](https://adamtheautomator.com/wp-content/uploads/2020/11/Untitled-2020-11-21T123806.819.png)

Being able to create two separate folders just by capitalization is not possible on Windows

### User Accounts

Like Windows, Linux has the concept of user accounts but they behave a little differently. First start off by thinking of Linux user accounts in terms of your familiar Windows user accounts.

Windows has a few built-in user accounts such as _Administrator_, the hidden SYSTEM account, _Guest_, etc. Windows also have various built-in security groups like _Administrators_, _Guests_, etc.

You can view all of all Windows users and groups via the Local Users and Groups MMC by running the_lusrmgr.msc_ MMC snapin.

![The Windows Local User Control Panel](https://adamtheautomator.com/wp-content/uploads/2020/11/Untitled-2020-11-21T130126.091.png)

The Windows Local User Control Panel

#### Windows SIDs

To uniquely identify users and groups, Windows refers to users and groups by something called the SID. In Windows, you can find each user and groups’ SID by running a couple of PowerShell commands below.

```powershell
Get-LocalUser | select name, sid
Get-LocalGroup | select name,sid
```

![The list of users and groups on a Windows computer](https://adamtheautomator.com/wp-content/uploads/2020/11/Untitled-2020-11-21T130209.768.png)

The list of users and groups on a Windows computer

Each Windows group SID is the same across all Windows computers. The built-in _user_ `SID`_s_ for Windows are unique. That _Administrator SID_ you see in the above screenshot should be different on every Windows computer. Any future user or group created in Windows will be unique. Notice below the _test_ group. If you would create a _test_ group on your Windows computer, the SID would be different.

![A new "test" group at the top has a unique SID](https://adamtheautomator.com/wp-content/uploads/2020/11/Untitled-2020-11-21T130247.568.png)

A new “test” group at the top has a unique SID

#### Linux User IDs

On the flip side, Linux handles users and groups similarly only this time Linux doesn’t use SIDs but user IDs (UIDs) and group IDs (GIDs). Also unlike Windows, Users and groups are unique to the computer but not unique across _all_ computers. This means that your UID on Computer A might be the exact same _UID_ on Computer B, even if it isn’t the same user.

> _Both UIDs and GIDs follow a simple, numeric convention; each UID and GUID start at 0 and increment by one ranging from 1-999 for internal system accounts and 1000+ for custom user accounts._

The built-in root user _always_ has a UID of 0 and a GID of 0. Also, like the Windows hidden SYSTEM account, this root account is _generally_ (depending on Linux distribution) prevented from logging in.

> _The built-in root user is similar to Windows SYSTEM and Administrator built-in accounts, kind of rolled into one. Even if you are working as an Administrator in Windows, there are still some built-in safeguards to prevent you completely destroying Windows._
> 
> _The root user, on the other hand, is an absolute authority. If you purposely drop into the root user (you can do this on the command line using the command `sudo su`) and try to delete your whole operating system, root will happily do so until the system dies._

Let’s say you’ve created a user called _homelab_. The UID for _homelab_ could then be referenced either by 1000 or by _homelab_. The user will automatically become a member of the internal group _users_ which you can reference with the group ID of 100. You can find a list of these mappings by running the `getent passwd` command as seen below:

![running getent passwd inside the terminal](https://adamtheautomator.com/wp-content/uploads/2020/11/Untitled-2020-11-21T131142.415.png)

running `getent passwd` inside the terminal

You can also find the same information as above for groups with the `getent group` command.

![running getent group inside the terminal](https://adamtheautomator.com/wp-content/uploads/2020/11/Untitled-2020-11-21T131233.651.png)

running `getent group` inside the terminal

### Linux File Permissions

In a Windows world, filesystem permissions are not fun. Setting and managing permissions in NTFS can sometimes turn into a nightmare with ACE, ACLs, inheritance, propagation, etc. Luckily, in Linux filesystem permission are much simpler.

In Linux, you have three types of rights you can assign to a file: read, write, and execute with three categories of access: owner, group, others.

*   owner is the user who owns the file/folder. Every file or folder has a designated owner.
*   group is the group that owns the file/folder. This does not have to be the same group the owner belongs to. Every file or folder can only belong to one group.
*   others is… well… others. It’s people who aren’t part of the owning group or is not the designated owner.

You can allow or deny every option for every category. As an example: you can give read, write, execute options for the owner, and read/execute options for the group and others. You can see that in the screenshot below. This means that anybody _besides_ the user who is the owner of the folder cannot modify it.

Just like Windows explorer, in Ubuntu, you can see this information by doing the following:

1.  Open up your Home folder on your desktop.
2.  Navigate to the file/folder in question.
3.  Right click on the file/folder and click on **Properties**.
4.  Click on the **Permissions** tab.
5.  Click on **Advanced Permissions**.

Once you’re in the **Advanced Permissions** box, you can graphically see all permissions assigned to that file or folder.

![Demonstration of the advanced permissions menu in OpenSUSE](https://adamtheautomator.com/wp-content/uploads/2020/11/2diD8oS68S.gif)

Demonstration of the advanced permissions menu in OpenSUSE

Below is what the **Advanced Permissions** table represents.

![How the file permissions look visually](https://adamtheautomator.com/wp-content/uploads/2020/11/Untitled-2020-11-21T131819.350.png)

How the file permissions look visually

#### File Ownership

Like Windows, each file and folder has an owner. In Windows, you can take ownership of a file in the GUI or via the _takeown_ command. In Linux, you take ownership by running `chown <user>:<group> <file/folder>` on the command line.

> _Like Windows, you generally need administrative permission to change ownership of files using sudo. sudo is the Linux equivalent of Windows’ User Account Control (UAC). Instead of opening an administrative command line window, you preface commands with sudo to make it run as an administrator._

Let’s create a folder that’s _only_ owned by root to demonstrate some of these concepts.

1.  Open up your home folder and navigate to Documents
2.  Open up a command prompt by **right click —> Actions —> Open Terminal Here**, and run the following:

```powershell
sudo mkdir owned-by-root
sudo chmod 700 owned-by-root
```

![Creating a root only folder](https://adamtheautomator.com/wp-content/uploads/2020/11/jaRe6ZqgyJ-3.gif)

Creating a root only folder

This folder only has read/write/execute permissions for the owner. Because you created the folder with admin rights, that owner is currently root.

You also changed the permissions so _only_ the owner has access. The owning group and other users cannot access this folder at all. In fact, you’ll notice that the folder has a big lock on it indicating you don’t have access.

Below you can see how to take ownership of this folder.

1.  Open up another terminal in that same folder (or use the one you already had)
2.  Run `sudo chown homelab:users ./owned-by-root`

![Demonstration of the change ownership command in OpenSUSE](https://adamtheautomator.com/wp-content/uploads/2020/11/dY7JzureoV.gif)

Demonstration of the change ownership command in OpenSUSE

Now that you have ownership, you can also change the file permissions inside the explorer GUI using the properties window.

![File permissions inside the explorer GUI](https://adamtheautomator.com/wp-content/uploads/2020/11/Y0XPmB5iRI.gif)

File permissions inside the explorer GUI

> _You (usually) only want to change ownerships, not file permissions. Linux is pretty good at knowing what permissions things are supposed to have by default. You can really screw things up by ‘chmoding’ without knowing the implications._

#### Numeric Notation for File Permissions

If you have done _any_ Linux troubleshooting, you may have seen people online explain file permissions using a number scheme. You can see that highlighted in the screenshot below:

![The permissions menu, as viewed remotely from a Windows machine using WinSCP](https://adamtheautomator.com/wp-content/uploads/2020/11/Untitled-2020-11-21T132059.926.png)

The permissions menu, as viewed remotely from a Windows machine using WinSCP

Linux uses a shorthand notation for this access system using numbers, like _0600_. The first number is for some special properties you can add, which people _generally_ ignore. In fact, most people only use three digits for the notation and ignore the leading fourth.

For more information about numeric notation for file permissions, check out [this article](https://www.cyberciti.biz/faq/unix-linux-bsd-chmod-numeric-permissions-notation-command/).

## Wrap Up

That’s it for Part II of our A Windows Guy in a Linux World blog post series! Be sure to keep up the momentum with [Part III](https://adamtheautomator.com/midnight-commander-linux/) !

Share this article

[Share on X](https://twitter.com/intent/tweet?url=https%3A%2F%2Fadamtheautomator.com%2Flinux-file-permissions%2F&text=Linux%20File%20Permissions%3A%20A%20Strategic%20Guide%20for%20Windows%20Administrators)[Share on Facebook](https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fadamtheautomator.com%2Flinux-file-permissions%2F)[Share on LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fadamtheautomator.com%2Flinux-file-permissions%2F)

## Related Posts

![](https://adamtheautomator.com/wp-content/uploads/2022/09/Practical-Linux-Unix-Tee-Commands-for-the-Linux-Admin.jpg)

### [Master Unix tee Commands for Real-World Linux Admin Tasks](/unix-tee/)

Simplify Linux output management and streamline your workflow with the “Unix tee” command. This tutorial guides you through its practical applications.

![](https://adamtheautomator.com/wp-content/uploads/2024/03/openldap-4.jpg)

### [How to Install and Configure an OpenLDAP Ubuntu Server](/openldap/)

Unlock the power of OpenLDAP on Ubuntu for centralized user authentication, seamless access control management, and enhanced directory services!

![](https://adamtheautomator.com/wp-content/uploads/2024/03/pipe-command-in-linux-1.jpg)

### [Unleashing the Power of the Pipe Command in Linux](/pipe-command-in-linux/)

Unlock the prowess of the pipe command in Linux to streamline tasks, boost productivity, and simplify complex operations effortlessly!

## Categories

*   [IT Ops](/category/it-ops/)
*   [Cloud](/category/cloud/)
*   [DevOps](/category/devops/)
*   [Home Ops](/category/home-ops/)
*   [Information Security](/category/infosec/)
*   [Software Development](/category/software-development/)

## Site

*   [Home](/)
*   [Tutorials](/tutorials/)
*   [Instructors](/author/)
*   [Advertising](/advertising/)
*   [Recommended Resources](/resources/)
*   [About Adam](/about-adam/)

Copyright 2026© ATA Learning | [Privacy Policy](/privacy/)
