Files on Linux vs. Windows

When you come from Windows, files on Linux may feel a little unusual at first.
On the surface, a file is just a place to store information in both systems. But Linux was designed from the very beginning with security and multi-user environments in mind, while Windows (originally built on top of MS-DOS) treated files mostly as containers you could open freely.

Ownership

On Linux, every file belongs to someone:

  • A user (the owner).

  • A group (a collection of users).

This means each file isn’t just “on the disk” — it has a built-in identity. Even if you created it, you don’t automatically have every possible permission unless they are explicitly set.

Permissions

Every file also has three types of access rights:

  • Read (r) – you can view the contents.

  • Write (w) – you can modify it.

  • Execute (x) – you can run it (for programs, scripts, or binaries).

These rights are applied separately for:

  • The owner (you).

  • The group (your teammates, colleagues, or other users).

  • Others (everyone else).

Overall, you’ll often see file permissions written in a shorthand like rw-rw-r--.

  • The first three characters (rw-) show the rights of the owner.

  • The next three (rw-) belong to the group.

  • The last three (r--) apply to others (everyone else).

Each position can either be a letter (r, w, x) if that permission is granted, or a dash (-) if it’s missing.

Why it matters

This system prevents chaos:

  • A read-only file stays safe even if you open it accidentally.

  • An executable won’t run unless it’s explicitly marked as runnable — double-clicking alone doesn’t work like on Windows. Without the x permission, it’s just an inert chunk of data.

The takeaway

On Linux, every file has an owner and a set of rights. This simple model makes the whole system more secure, predictable, and cooperative — especially when multiple users share the same computer.

File Types

On Windows, a file’s extension defines what it is:

  • .avi for video,

  • .mp3 for audio,

  • .exe for programs, etc.

Linux works differently. At a fundamental level, it doesn’t rely on extensions — it looks at the file’s content (the data inside) to determine its type. That means a file can have no extension at all and still work as intended.

That said, most desktop environments (GNOME, KDE, XFCE, etc.) do still use extensions for convenience — mainly to decide which application should open a file by default. But unlike Windows, extensions aren’t the defining factor in Linux.

Linux Executables

On Windows, programs are almost always packaged as .exe files.

Linux is different. Because executability is controlled by the execute (x) permission, a file doesn’t need an extension at all. If the permission is set, the system treats it as runnable.

That’s why you’ll often see executables on Linux with plain names like game, bash, or application — no .exe or .bin required. The name is just a label; the permission bit is what makes it come alive.

Hidden Files

In Windows, whether a file is hidden is a property. You right-click, open Properties, and tick the Hidden box.

Linux takes a simpler approach:

  • Any file or directory whose name starts with a dot (.) is automatically hidden.

  • No extra property is stored — the naming convention itself controls visibility.

So .config, .bashrc, or .git directories are hidden by default.

From a Windows mindset, it makes sense to treat “hidden” as a property of a file. But Linux relies on naming conventions instead — straightforward, but different.