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

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

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

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

chmod 775 /opt/lampp/htdocs

16 ответов


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

Я подозреваю, что вы действительно хотите установить каталоги в 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 *

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


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

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

sudo chmod 755 -R /opt/lampp/htdocs

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

chmod 755 /folder -R

и используйте umask для установки по умолчанию новых папок / файлов cd / папка umask 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 {} \; если количество файлов, которые вы используете, очень велико. The -type x опция ищет только определенный тип файла, где d используется для поиска каталога, f для файла и я по ссылке.
  3. использовать chmod 755 $(find /path/to/base/dir -type d) иначе
  4. лучше использовать первый в любой ситуации

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

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