24

What is a default access mode (e.g. 0755) for users home dirs in Ubuntu (e.g. what is output of ls -ld /home/*)? In other major linux distribs (Debian, RedHat, Gentoo, Arch)?

How can I change this default?

PS: Sorry, but I can't find an ubuntu now and test this myself.

3
  • I'm not asking about umask, but about skel and home-dirs
    – osgx
    Jun 29, 2011 at 16:42
  • Please don't add new information in the comments, but include it in the original question
    – bbaja42
    Jun 29, 2011 at 17:14
  • it is not a new info, it is comments about wrong understanding of my question
    – osgx
    Jun 29, 2011 at 19:05

6 Answers 6

20

When creating a user using useradd --create-home username, the skeleton directory (usually /etc/skel) is copied, including its permissions.

The home directory (/home/username) is subject to the UMASK setting in /etc/login.defs. This is set to 022 by default, so the permissions for /home/username becomes 755.

Relevant excerpt from the Ubuntu manual page of useradd:

The following configuration variables in /etc/login.defs change the behavior of this tool:
[..]
UMASK (number)

The file mode creation mask is initialized to this value. If not specified, the mask will be initialized to 022.

useradd and newusers use this mask to set the mode of the home directory they create

3
  • What about redhat/debian?
    – osgx
    Jun 29, 2011 at 16:43
  • AFAIK it's a standard thing of useradd, if it would be Ubuntu-specific, it should have been mentioned in the manual page. A redhat manual page: linux.die.net/man/8/useradd
    – Lekensteyn
    Jun 29, 2011 at 16:49
  • As of Ubuntu 22.04 it seems, HOME_MODE is now set in /etc/login.defs and is used to set the home directory (/home/username) permissions, instead of UMASK. Jan 19 at 20:30
17

Default permission of user home can be controlled in following places.

  • The skeleton directory option (-k, --skel SKEL_DIR) of useradd.
  • SKEL value in /etc/adduser.conf that define default skeleton directory.
  • DIR_MODE value in /etc/adduser.conf that define default permissions.

Home directory of new users are created using /etc/skel as a template (default behavior).
Default permission of /etc/skel is 0755 (drwxr-xr-x).
Using a custom skeleton directory with correct permissions will allow new home directories to have desired permissions.

Defaults for adduser are defined in /etc/adduser.conf.
Default value of DIR_MODE in /etc/adduser.conf is 0755.
Changing DIR_MODE to correct permissions (DIR_MODE=0750 or similar) will allow new home directories to have desired permissions.
According to Ubuntu documentation, this seems to be the best option.

Already existing user home directories will need to be manually changed.

sudo chmod 0750 /home/username

So its a good idea to change /etc/adduser.conf right after the installation to avoid new users getting 0755 (drwxr-xr-x) type permissions.
Still the very first user created during installation will have 0755 set to its home directory, which should be manually changed.

UMASK in /etc/login.defs is a general setting for files/directories/etc created by users (not only in their home directories). and could get changed depending on USERGROUPS_ENAB in /etc/login.defs.

The official explanation: User Management - User Profile Security
Check other sections of User Management as well.

Related: https://askubuntu.com/questions/46501/why-can-other-users-see-the-files-in-my-home-folder

4
  • 3
    Link-only answers are a no-no due to possible future link-rot. Please include pertinent information in your answers. Jul 5, 2013 at 17:16
  • @techie007 I know. Would have used a comment if I had enough reps.
    – Sithsu
    Jul 6, 2013 at 2:43
  • 1
    @techie007 Added more content to the answer
    – Sithsu
    Jul 6, 2013 at 4:02
  • Setting DIR_MODE in /etc/adduser.conf is definitely the right way to go. Dec 9, 2016 at 5:02
4

Note : Don't change the UMASK value in /etc/login.defs if you want to change the home directory permissions only. Cause changing the UMASK will affect everything.

I once followed the same and when i installed any package system wide using pip it was not accessible to other users and was constantly throwing permission denied. Since the default UMASK affected the permission of all the package directories that got created after the changes were applied.

The correct way is to modify DIR_MODE in /etc/adduser.conf. Since the /etc/adduser.conf is used in most linux distros so this solution works for most.

1

The default permissions for /home in ubuntu is rwxr-xr-x or 755. For /home/user it is also rwxr-xr-x or 755. At least it is on my installation.

To change the file permissions of the home directory, open a terminal and run something like:

chmod 700 /home/user

Remember to change the 700 to the chmod value that you actually want to set.

If you do not own the directory, you need root privileges to change the permissions. Ubuntu uses sudo for that:

sudo chmod 700 /home/user

When you run this command it will ask for the administrator password.

3
  • 2
    Your second part is incorrect, the home directory is owned by yourself, so you won't need superuser right for that.
    – Lekensteyn
    Jun 29, 2011 at 16:01
  • Your assuming he only wants to change the rights on his own home dir. I did say "If you do not own the directory." My code will work on the home dir of any user. Jun 30, 2011 at 3:25
  • I edited your post to make it more correct (hopefully you like it), your original post did not include that at all: superuser.com/revisions/303995/1
    – Lekensteyn
    Jun 30, 2011 at 6:58
0

Check the umask man page.

The default umask setting is

0022

Allows group and others read and execute access.

1
  • No, My question is not about an umask, but about default permissions of user's folder itself (just after user a is created, what will be an output of ls -ld /home/a)
    – osgx
    Jun 29, 2011 at 14:48
0

Change DIR_MODE=0755 to any other mode you want in /etc/adduser.conf eg. DIR_MODE=0700.

1
  • Your answer could be improved with additional supporting information. Please edit to add further details, such as citations or documentation, so that others can confirm that your answer is correct. You can find more information on how to write good answers in the help center.
    – Community Bot
    Oct 26, 2022 at 16:45

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .