How to Create a Shared Directory for All Users in Linux

As a system administrator, you may have a certain directory that you want to give read/write access to every user on a Linux server. In this guide, we will review how to enable write access to all users on a particular directory (shared directory) in Linux.

This calls for setting the appropriate access permissions, and the most effective as well as reliable method to allocating a common group for all the users who will share or have write access to the specific directory.

So, start by creating the directory and common group in case it doesn’t already exist on the system as follows:

$ sudo mkdir -p /var/www/reports/
$ sudo groupadd project 

Then add an existing user who will have write access to the directory: /var/www/reports/ to the group project as below.

$ sudo usermod -a -G project tecmint 
Create Common Directory Group
Create Common Directory Group

The flags and arguments used in the above command are:

  1. -a – which adds the user to the supplementary group.
  2. -G – specifies the group name.
  3. project – group name.
  4. tecmint – existing username.

Afterwards, proceed to configure the appropriate permissions on the directory, where the option -R enables recursive operations into subdirectories:

$ sudo chgrp -R project /var/www/reports/
$ sudo chmod -R 2775 /var/www/reports/

Explaining the permissions 2775 in the chmod command above:

  1. 2 – turns on the setGID bit, implying–newly created subfiles inherit the same group as the directory, and newly created subdirectories inherit the set GID bit of the parent directory.
  2. 7 – gives rwx permissions for owner.
  3. 7 – gives rwx permissions for group.
  4. 5 – gives rx permissions for others.

You can create more system users and add them to the directory group as follows:

$ sudo useradd -m -c "Aaron Kili" -s/bin/bash -G project aaronkilik
$ sudo useradd -m -c "John Doo" -s/bin/bash -G project john
$ sudo useradd -m -c "Ravi Saive" -s/bin/bash -G project ravi

Then create subdirectories where the new users above will store their project reports:

$ sudo mkdir -p /var/www/reports/aaronkilik_reports
$ sudo mkdir -p /var/www/reports/johndoo_reports
$ sudo mkdir -p /var/www/reports/ravi_reports

Now you can create files/folders and share with other users on the same group.

That’s it! In this tutorial, we reviewed how to enable write access to all users on a particular directory. To understand more about users/groups in Linux, read How to Manage Users/Groups File Permissions and Attributes.

Remember to offer us your thoughts about this article via the feedback form below.

If you liked this article, then do subscribe to email alerts for Linux tutorials. If you have any questions or doubts? do ask for help in the comments section.

If You Appreciate What We Do Here On TecMint, You Should Consider:

TecMint is the fastest growing and most trusted community site for any kind of Linux Articles, Guides and Books on the web. Millions of people visit TecMint! to search or browse the thousands of published articles available FREELY to all.

If you like what you are reading, please consider buying us a coffee ( or 2 ) as a token of appreciation.

Support Us

We are thankful for your never ending support.

14 thoughts on “How to Create a Shared Directory for All Users in Linux”

  1. “The standard behavior for new files and sub-directories is to ALWAYS receive the creator’s GROUP” – RHCSA RHEL 8, A. Ghori, 1st edition. In the example of this tutorial, I do not understand why we enabled setgid for the directory SINCE all the system users created (aaronkilik, john, and ravi) belong to the same group (called “project“) as the group of the parent directory “reports” (sudo chgrp -R project /var/www/reports/).

    I mean if the user aaronkilik or any other of the two users create a file or sub-directory in “reports“, since the aaronkilik belongs to the group called “project“, the file/sub-directory created receives the creator’s group like stated in the first phase, that is the group “project“.

    Why is it needed to enabled setgid for the “project” directory? Maybe there is a reason but I do not see it now. I could see the reason to enable setgid in case the three system users created belonged to different groups (in this case chmod -R 2777 /var/www/reports/ would be needed too). Thank you.

    Reply
  2. What if a user copies or moves a directory tree from his home directory to the shared one?
    I don’t think the subdirs will magically change their group, let atone recursivelyy because they are not newly created…

    Reply
  3. Hi,

    I think that you do not need 2775. More secure is to use chmod -R 2770. In this case only the desired users/group can access this shared folder, and any others will not have access.

    Reply
    • @lulian

      Yap, your correct, we should have used chmod -R 2770, other system users will be blocked from accessing a shared directory. However, always set permissions depending on your environment needs.

      Reply
      • In my case, i needed the shared folder were shared also with apache. I had to use “chmod -R 2775”. If I used “chmod -R 2770”, apache couldn’t access to the folders.

        Reply
  4. I assume that on your distro Apache has a base directory in /var/www unlike a distro like Fedora that starts in /var/www/html/. This would be good for users that want to build a web site together or share common reports over a web server. Another good option is to use ACL with the facl command.

    Reply
  5. Very helpful for the novice admin.

    You should probably highlight that /var/www isn’t a good place to allow ‘regular users’ to store stuff unless you can guarantee it is on a separate filesystem than /var; should a user decide to fill it up system log files no longer can be written

    Reply

Got something to say? Join the discussion.

Have a question or suggestion? Please leave a comment to start the discussion. Please keep in mind that all comments are moderated and your email address will NOT be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.