How do I change permissions for a folder and its subfolders/files?

Viewed 4787945

How do I change the permissions of a folder and all its subfolders and files?

This only applies to the /opt/lampp/htdocs folder, not its contents:

chmod 775 /opt/lampp/htdocs

How do I set chmod 755 for all of the /opt/lampp/htdocs folder's current contents, as well as automatically in the future for new folders/files created under it?

Related: How can I set a default 'chmod' in a Linux terminal?

21 Answers

Here's another way to set directories to 775 and files to 664.

find /opt/lampp/htdocs \
\( -type f -exec chmod ug+rw,o+r {} \; \) , \
\( -type d -exec chmod ug+rwxs,o+rx {} \; \)

It may look long, but it's pretty cool for three reasons:

  1. Scans through the file system only once rather than twice.
  2. Provides better control over how files are handled vs. how directories are handled. This is useful when working with special modes such as the sticky bit, which you probably want to apply to directories but not files.
  3. Uses a technique straight out of the man pages (see below).

Note that I have not confirmed the performance difference (if any) between this solution and that of simply using two find commands (as in Peter Mortensen's solution). However, seeing a similar example in the manual is encouraging.

Example from man find page:

find / \
\( -perm -4000 -fprintf /root/suid.txt %#m %u %p\n \) , \
\( -size +100M -fprintf /root/big.txt %-10s %p\n \)

Traverse the filesystem just once, listing setuid files and direct‐
tories into /root/suid.txt and large files into /root/big.txt.

Cheers

For anyone still struggling with permission issues, navigate up one directory level cd .. from the root directory of your project, add yourself (user) to the directory and give permission to edit everything inside (tested on macOS).

To do that you would run this command (preferred):

sudo chown -R username: foldername .*

Note: for currently unsaved changes, one might need to restart the code editor first to be able to save without being asked for a password.

Also, please remember you can press Tab to see the options while typing the username and folder to make it easier for yourself.


Or simply:

sudo chmod -R 755 foldername

but as mentioned above, you need to be careful with the second method.

You can change permissions by using the following command:

sudo chmod go+rwx /opt/lampp/htdocs

For already created files:

find . \( -type f -exec chmod g=r,o=r {} \; \) , \( -type d -exec chmod g=rx,o=rx {} \; \)

For future created files:

sudo nano /etc/profile

And set:

umask 022

Common modes are:

  • 077: u=rw,g=,o=
  • 007: u=rw,g=rw,o=
  • 022: u=rw,g=r,o=r
  • 002: u=rw,g=rw,o=r

Use :

chmod 775 -R /folder-name

in your case, it would be :

chmod 775 -R /opt/lampp/htdocs

Use:

sudo chmod -R a=-x,u=rwX,g=,o= folder

Owner rw, others no access, and directory with rwx. This will clear the existing 'x' on files.

The symbolic chmod calculation is explained in Chmod 744.

Related