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


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

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

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

chmod 775 /opt/lampp/htdocs
16 1350

16 ответов:

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

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

изменить все директорий 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 {} \;

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

chmod -R <permissionsettings> <dirname>

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

man <command name>

таким образом:

man chmod

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

chmod -R a+rX *

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

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

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

sudo chmod 755 -R /opt/lampp/htdocs

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

chmod 755 /folder -R

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

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

правильная рекурсивная команда:

sudo chmod 755 -R /opt/lampp/htdocs

-R: изменить каждую подпапку, включая текущую папку

вы можете рассмотреть этот ответ дал ник на суперпользователе и использовать "один chmod" для всех файлов / папок, как это:

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

использование:

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

однако, будьте осторожны с этим. Это действительно может повредить вам, если вы измените разрешения для файлов/папок.

вот еще один способ установить каталоги на 775 и файлы на 664.

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

это может выглядеть долго, но это довольно круто по трем причинам:

  1. просматривает файловую систему только один раз, а не дважды.
  2. обеспечивает лучший контроль над тем, как файлы обрабатываются против how каталоги обрабатываются. Это полезно при работе с специальные режимы например Sticky бит, который вы вероятно, вы хотите применить к каталогам, но не к файлам.
  3. использует технику прямо из man "страницы" (см. ниже).

обратите внимание, что я не подтвердил разницу в производительности (если таковая имеется) между этим решением и простым использованием двух команд find (как в решении Питера Мортенсена). Однако видеть подобный пример в руководстве обнадеживает.

пример man find страницы:

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.

Ура

chmod -R 755 directory_name работает, но как бы вы сохранили новые файлы до 755 также? Разрешения файла становятся разрешениями по умолчанию.

вы хотите убедиться, что соответствующие файлы и каталоги являются chmod-ed/разрешения для тех, кто подходит. Для всех каталогов, которые вы хотите

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

и для всех изображений, JavaScript, CSS, HTML...ну, вы не должны их казнить. Так что используйте

chmod 644 img/* js/* html/*

но для всего логического кода (например, PHP-кода) Вы должны установить такие разрешения, чтобы пользователь не мог видеть этот код:

chmod 600 file

для Mac OS X 10.7 (Lion), это:

chmod -R 755 /directory

и да, как говорят все остальные, будьте осторожны при этом.

Я думаю, что Адам спрашивал, как изменить значение umask для всех процессов, которые привязывают к работе

есть два ответа на поиск файлов и применение chmod к ним. Первый-это find файл и применить chmod как он находит (как предложено @WombleGoneBad).

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

второе решение-создать список всех файлов с помощью find команда и предоставить этот список в chmod команда (как предложено @lamgesh).

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

обе эти версии работают хорошо, пока количество файлов, возвращаемых мал. Второй решение отлично смотрится на глаз и более читаемо, чем первый. Если есть большое количество файлов, второе решение возвращает ошибку : Argument list too long.

так что мое предложение

  1. использовать chmod -R 755 /opt/lampp/htdocs если вы хотите изменить разрешения для всех файлов и каталогов одновременно.
  2. использовать find /opt/lampp/htdocs -type d -exec chmod 755 {} \; если количество используемых файлов очень велико. Элемент -type x опция ищет только определенный тип файла, где d используется для поиска каталога, f для файла и я по ссылке.
  3. использовать chmod 755 $(find /path/to/base/dir -type d) иначе
  4. лучше использовать первый в любой ситуации

Это очень просто.

в терминале перейдите в файловый менеджер. пример: sudo nemo. Иди /opt/ нажмите кнопку Разрешение → Свойства. а потом другое. Наконец, изменить, чтобы создать и удалить и файл acess для чтения и записи и нажмите на кнопку Применить... И работать.