Как установить chmod для папки и всех ее вложенных папок и файлов? [закрытый]
есть ли способ установить chmod 755
на /opt/lampp/htdocs
и все ее содержимое, включая подпапки и файлы?
кроме того, в будущем, если я создам новую папку или файл внутри htdocs
, как можно автоматически установить разрешения на 755
?
это работает, но только для этой папки:
chmod 775 /opt/lampp/htdocs
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 {} \; \)
это может выглядеть долго, но это довольно круто по трем причинам:
- просматривает файловую систему только один раз, а не дважды.
- обеспечивает лучший контроль над тем, как файлы обрабатываются против how каталоги обрабатываются. Это полезно при работе с специальные режимы например Sticky бит, который вы вероятно, вы хотите применить к каталогам, но не к файлам.
- использует технику прямо из
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.
так что мое предложение
- использовать
chmod -R 755 /opt/lampp/htdocs
если вы хотите изменить разрешения для всех файлов и каталогов одновременно.- использовать
find /opt/lampp/htdocs -type d -exec chmod 755 {} \;
если количество используемых файлов очень велико. Элемент-type x
опция ищет только определенный тип файла, где d используется для поиска каталога, f для файла и я по ссылке.- использовать
chmod 755 $(find /path/to/base/dir -type d)
иначе- лучше использовать первый в любой ситуации