Why is /usr/local/ owned by root?
Solution 1
There is nothing that stops you from installing and running applications locally, without sudo privileges. Locally, meaning: in your own home directory. That is how it is supposed to be.
You shouldn't have the same permissions on directories you are sharing with possible other users on your system.
About /usr
The explanation on what usr
literally stands for varies from unix system resources, to user system resources. The latter however should not be interpreted as owned by users, but as serving users, opposite to serving the system. Here we read about /usr
:
Secondary hierarchy for read-only user data; contains the majority of (multi-)user utilities and applications.
The bottom line is that all (modern) explanations mention that it is about "shareabble, read- only data", and: "should not be written to"
Solution 2
The directory name "usr" already implies that (normal) user based programs are supposed to be there.
Not since the Dark Ages of Unix history, if it ever was. What do the abbreviations "etc" and "usr" mean?
Now, the /usr
directory is for the administrator to handle. However, almost all content in /usr
is handled by packages, and /usr/local
is where the administrator can install local software, outside of the package management system. Let's consult the Filesystem Hierarchy Standard:
/usr/local : Local hierarchy
Purpose
The
/usr/local
hierarchy is for use by the system administrator when installing software locally. It needs to be safe from being overwritten when the system software is updated. It may be used for programs and data that are shareable amongst a group of hosts, but not found in/usr
.Locally installed software must be placed within
/usr/local
rather than/usr
unless it is being installed to replace or upgrade software in/usr
.
For both /usr
and /usr/local
in a modern Linux system, normal users shouldn't have write permissions. On a single-user system, sure, you could give write access to /usr/local
, but you have sudo
privileges anyway (how often do you have to write to these directories?).
Related videos on Youtube
Comments
-
null over 1 year
I am wondering why directories such as
/usr
and/usr/local/
are owned and created by root. Usually I am logged in as a normal user and I want to store programs that I personally use in these dirs. For example the Android Studio are stored there. Whenever, I need to make an update or to make any kind of change, permission are not granted because I am not logged in as root.The directory name "usr" already implies that (normal) user based programs are supposed to be there.
Didn't I get the concept behind this directory?
-
Admin about 8 yearsusr = unix system resources... nothing to do with user :)
-
Admin about 8 years@JacobVlijm thats actually a backronym, it seems, look at pages 13,14 (paginated as 8,9) of bitsavers.trailing-edge.com/pdf/bellLabs/unix/…, they used /user.
-
Admin about 8 years@guntbert WOW, looking around, there are many different explanations to what
/usr
literally stands for. The bottom line is that all (modern) explanations mention that it is about "shareabble, read- only data", and: "should not be written to".
-
-
Rinzwind about 3 yearsNo never put files in /usr/bin/ and aways use the "/ocal" version (all bin directories also have a local/bin version). The 1st will delete what is there when you install software that uses your version, and /local never is changed by the system itself
-
Zanna about 3 yearshow would having the file owned by you and not root restrict access?