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

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

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

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

 chmod 775 /opt/lampp/htdocs
 
вопрос задан 18.09.2010
Adam
19781 репутация

16 ответов


  • 2320 рейтинг

    Другие ответы правильны, поскольку 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 {} \;
     
    ответ дан WombleGoneBad, с репутацией 23256, 16.07.2012
  • 655 рейтинг

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

    chmod -R <permissionsettings> <dirname>

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

     man <command name>
     

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

     man chmod
     
    ответ дан Steve Robillard, с репутацией 10491, 18.09.2010
  • 297 рейтинг

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

     chmod -R a+rX *
     

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

    ответ дан Pete, с репутацией 2987, 31.01.2013
  • 109 рейтинг

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

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

     sudo chmod 755 -R /opt/lampp/htdocs
     
    ответ дан ravi ranjan, с репутацией 3703, 19.04.2014
  • 67 рейтинг

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

     chmod 755 /folder -R
     

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

    ответ дан Topera, с репутацией 8208, 18.09.2010
  • 47 рейтинг

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

    ответ дан sleepynate, с репутацией 6029, 18.09.2010
  • 44 рейтинг

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

     sudo chmod 755 -R /opt/lampp/htdocs
     

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

    ответ дан Pramendra Gupta, с репутацией 11196, 18.09.2010
  • 22 рейтинг

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

     chmod 755 $(find /path/to/base/dir -type d)
    chmod 644 $(find /path/to/base/dir -type f)
     
    ответ дан Iam Zesh, с репутацией 922, 27.02.2013
  • 20 рейтинг

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

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

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

    ответ дан Nate Starner, с репутацией 431, 18.09.2010
  • 19 рейтинг

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

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

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

    1. Сканирует файловую систему только один раз, а не дважды.
    2. Обеспечивает лучший контроль над тем, как обрабатываются файлы , и как обрабатываются каталоги . Это полезно при работе со специальными режимами, такими как липкий бит , который, вероятно, вы хотите применить к каталогам, но не к файлам.
    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.
     

    ура

    ответ дан chrisfargen, с репутацией 1317, 17.11.2013
  • 11 рейтинг

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

    ответ дан Sanchit Gupta, с репутацией 578, 30.04.2014
  • 9 рейтинг

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

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

    И для всех изображений, JavaScript, CSS, HTML ... ну, вы не должны их исполнять. Поэтому используйте

     chmod 644 img/* js/* html/*
     

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

     chmod 600 file
     
    ответ дан NikolaiDante, с репутацией 109, 12.01.2014
  • 7 рейтинг

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

     chmod -R 755 /directory
     

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

    ответ дан wmartin, с репутацией 110, 10.07.2012
  • 5 рейтинг

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

    Маска режима создания файла пользователя (umask) используется для определения разрешения файла для вновь созданных файлов. Он может использоваться для управления разрешением файла по умолчанию для новых файлов.

    поэтому, если вы будете использовать какую-то программу ftp для загрузки файлов в /opt/lampp/htdocs вам нужно настроить ftp-сервер на использование umask, который вы хотите.

    Если файлы /каталоги создаются, например, php, вам необходимо изменить php-код

     <?php
    umask(0022);
    // other code
    ?>
     

    если вы создадите новые файлы /папки из своего сеанса bash, вы можете установить значение umask в свой профиль оболочки ~ /.bashrc. Или вы можете настроить umask в /etc/bashrc или /etc/profile файла для всех пользователей. добавьте в файл следующее: umask 022

     Sample umask Values and File Creation Permissions
    If umask value set to   User permission     Group permission     Others permission
    000                         all              all                   all
    007                         all              all                   none
    027                         all          read / execute            none
     

    И чтобы изменить разрешения для уже созданных файлов, вы можете использовать find. Надеюсь это поможет.

    ответ дан Viktor, с репутацией 161, 7.01.2014
  • 4 рейтинг

    Существует два ответа на поиск файлов и применение к ним 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)
     

    Обе эти версии работают хорошо, пока количество файлов, возвращаемых командой find невелико. Второе решение выглядит великолепно и гладко, чем первое. Если имеется большое количество файлов, второе решение возвращает ошибку: 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 для файла и l для ссылки.
    3. Используйте chmod 755 $(find /path/to/base/dir -type d) противном случае
    4. Лучше использовать первую в любой ситуации
    ответ дан Prabhu, с репутацией 2602, 29.07.2013
  • 2 рейтинг

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

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

    ответ дан Debian., с репутацией 37, 16.06.2014