Вопрос: Как установить chmod для папки и всех ее подпапок и файлов? [закрыто]


Есть ли способ установить chmod 755для /opt/lampp/htdocsи все его содержимое, включая подпапки и файлы?

Кроме того, в будущем, если я создам новую папку или файл внутри htdocs, как разрешений, которые автоматически устанавливаются на 755?

Это работает, но только для этой папки:

chmod 775 /opt/lampp/htdocs

1253


источник


Ответы:


Другие ответы верны, поскольку chmod -R 755 будет устанавливать это как разрешения для всех файлов и папок в дереве. Но почему бы вам не захотеть ? Это может иметь смысл для каталогов, но зачем устанавливать бит выполнения во всех файлах?

Я подозреваю, что вы действительно хотите сделать, это установить каталоги на 755 и либо оставить файлы в покое, либо установить их на 644. Для этого вы можете использовать findкоманда. Например:

Чтобы изменить все каталоги до 755 ( drwxr-xr-x):

find /opt/lampp/htdocs -type d -exec chmod 755 {} \;

Чтобы изменить все файлы на 644 ( -rw-r--r--):

find /opt/lampp/htdocs -type f -exec chmod 644 {} \;

2203



Проверьте опцию -R

chmod -R <permissionsettings> <dirname>

В будущем вы можете сэкономить много времени, сначала проверив страницу man:

man <command name>

Итак, в этом случае:

man chmod

626



Если вы хотите установить разрешения для всех файлов на a+r, и все каталоги a+x, и сделать это рекурсивно через полное дерево подкаталогов, используйте:

chmod -R a+rX *

X(то есть капитала X, не маленький x!) игнорируется для файлов (если они уже не исполняются для кого-то), но используется для каталогов.


284



Вы можете использовать -Rс chmodдля рекурсивного обхода всех файлов и подпапок.

Возможно, вам понадобится sudo, поскольку это зависит от ЛАМПА устанавливаемый текущим пользователем или другим:

sudo chmod 755 -R /opt/lampp/htdocs

99



Для установки во все подпапки (рекурсивно) используйте -R

chmod 755 /folder -R

И используйте umask, чтобы установить по умолчанию новые папки / файлы     cd / folder     umask 755


64



chmod 755 -R /opt/lampp/htdocsбудет рекурсивно устанавливать разрешения. Невозможно установить разрешения для файлов автоматически только в этом каталоге, который создается после того, как вы установите разрешения, но вы можете изменить права доступа к файлу по умолчанию для всей системы, установив umask 022,


44



The correct recursive command is:

sudo chmod 755 -R /opt/lampp/htdocs

-R: change every sub folder including the current folder


35



You might want to consider this answer given by nik on superuser and use "one chmod" for all files/folders like this:

chmod 755 $(find /path/to/base/dir -type d)
chmod 644 $(find /path/to/base/dir -type f)

21



Use:

sudo chmod 755 -R /whatever/your/directory/is

However, be careful with that. It can really hurt you if you change the permissions of the wrong files/folders.


18



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  direc‐
tories into /root/suid.txt and large files into /root/big.txt.

Cheers


18



chmod -R 755 directory_name works, but how would you keep new files to 755 also? The file's permissions becomes the default permission.


11



You want to make sure that appropriate files and directories are chmod-ed/permissions for those are appropriate. For all directories you want

find /opt/lampp/htdocs -type d -exec chmod 711 {} \;

And for all the images, JavaScript, CSS, HTML...well, you shouldn't execute them. So use

chmod 644 img/* js/* html/*

But for all the logic code (for instance PHP code), you should set permissions such that the user can't see that code:

chmod 600 file

9