this post was submitted on 26 Jul 2025
10 points (100.0% liked)

Linux

58235 readers
755 users here now

From Wikipedia, the free encyclopedia

Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).

Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.

Rules

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 6 years ago
MODERATORS
 

I learned the hard way that the "x" permission on directories doesn't mean "execute" but "traverse". And setting permissions on directories get's them inherited by newly created/added files in there, right?

So how can i remove the ability from my homedir to execute current and new files but keep the traverse permission?

top 4 comments
sorted by: hot top controversial new old
[–] just_another_person@lemmy.world 9 points 1 month ago

Permissions are NOT inherited to files contained within directories. You can still have a world readable directory, with every file within being root-owned and inaccessible to other users, and that's not unusual (look through your /etc dirs).

You're looking for something explained like this maybe: https://superuser.com/questions/264383/how-to-set-file-permissions-so-that-new-files-inherit-same-permissions#264406

The gist is that there is no default way of achieving what you want, but you should be able to achieve something you want one way or another.

If you get more specific about your use-case, there is probably a solution.

[–] IsoKiero@sopuli.xyz 3 points 1 month ago

And setting permissions on directories get’s them inherited by newly created/added files in there, right?

No. They're created based on 'umask' and changing directory permissions doesn't automatically change permissions on underlying files (unless you set privileges recursively) nor new files in the directory.

So how can i remove the ability from my homedir to execute current and new files but keep the traverse permission?

For new files set your umask on what you want. By default it's usually either 0002 or 0022. For existing files you can use find: find ~ -type f -exec echo chmod a-x {} \; (remove echo once you've confirmed that it does what you want).

[–] gomp@lemmy.ml 2 points 1 month ago

You got some great answers already :)

Let me just add that, in general, it's expected to have executable files inside your home directory.

For example, ~/.local/bin is intended for user executables and usually added to the $PATH, and a lot of package managers (such as cargo, go, pip,...) will install applications under ~ (Steam also does that).

[–] oshu@lemmy.world 1 points 1 month ago

Not sure what your goal is but to make it so nothing can be exexuted in there you can put /home on its own filesystem and mount it with the "noexec" option.