Как установить chmod для папки и всех ее подпапок и файлов в Linux Ubuntu Terminal?
Есть ли способ установить chmod 755
для /opt/lampp/htdocs
и все его содержимое, включая подпапки и файлы?
Кроме того, в будущем, если я создам новую папку или файл внутри htdocs
, как разрешить это автоматически установить на 755
?
Это работает, но только для этой папки:
chmod 775 /opt/lampp/htdocs
Ответы
Ответ 1
Другие ответы верны, поскольку 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 {} \;
Ответ 2
Проверьте параметр -R
chmod -R <permissionsettings> <dirname>
В будущем вы можете сэкономить много времени, сначала проверив страницу man:
man <command name>
Итак, в этом случае:
man chmod
Ответ 3
Если вы хотите установить разрешения для всех файлов на a+r
и все каталоги на a+x
и сделать это рекурсивно через полное дерево подкаталогов, используйте:
chmod -R a+rX *
X
(то есть капитал X
, не маленький X
!) игнорируется для файлов (если они уже не исполняются для кого-то), но используется для каталогов.
Ответ 4
Вы можете использовать -R
с chmod
для рекурсивного обхода всех файлов и подпапок.
Вам может потребоваться sudo, поскольку он зависит от LAMP, который устанавливается текущим пользователем или другим:
sudo chmod 755 -R /opt/lampp/htdocs
Ответ 5
Чтобы установить для всех подпапок (рекурсивно), используйте -R
chmod 755 /folder -R
И используйте umask для установки по умолчанию новых папок/файлов cd/folder umask 755
Забастовкa >
Ответ 6
chmod 755 -R /opt/lampp/htdocs
будет рекурсивно устанавливать разрешения. Невозможно установить разрешения для файлов автоматически только в этом каталоге, который создается после того, как вы установите разрешения, но вы можете изменить права доступа по умолчанию для всей системы, установив umask 022
.
Ответ 7
Возможно, вы захотите рассмотреть этот ответ nik на суперпользователе и использовать "один chmod" для всех файлов/папок, таких как:
chmod 755 $(find /path/to/base/dir -type d)
chmod 644 $(find /path/to/base/dir -type f)
Ответ 8
Вот еще один способ установить каталоги на 775 и файлы на 664.
find /opt/lampp/htdocs \
\( -type f -exec chmod ug+rw,o+r {} \; \) , \
\( -type d -exec chmod ug+rwxs,o+rx {} \; \)
Это может выглядеть долго, но это довольно круто по трем причинам:
- Проверяет файловую систему только один раз, а не дважды.
- Обеспечивает лучший контроль над тем, как обрабатываются файлы, и как обрабатываются каталоги. Это полезно при работе с специальными режимами, такими как липкий бит, которые вы, вероятно, захотите применить к каталогам, но не к файлам.
- Использует технику прямо из страниц
man
(см. ниже).
Обратите внимание, что я не подтвердил разницу в производительности (если она есть) между этим решением и просто с помощью двух команд поиска (как в решении Питера Мортенсена). Однако, видя аналогичный пример в руководстве, обнадеживает.
Пример из 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.
Приветствия
Ответ 9
Правильная рекурсивная команда:
sudo chmod 755 -R /opt/lampp/htdocs
-R
: измените каждую подпапку, включая текущую папку
Ответ 10
Использование:
sudo chmod 755 -R /whatever/your/directory/is
Однако будьте осторожны с этим. Это может повредить вам, если вы измените права доступа к неправильным файлам/папкам.
Ответ 11
chmod -R 755 directory_name
работает, но как бы вы сохранили новые файлы на 755? Разрешения для файлов становятся разрешением по умолчанию.
Ответ 12
Вы хотите, чтобы соответствующие файлы и каталоги были chmod-ed/permissions для них подходящими. Для всех каталогов, которые вы хотите
find /opt/lampp/htdocs -type d -exec chmod 711 {} \;
И для всех изображений, JavaScript, CSS, HTML... ну, вы не должны их исполнять. Поэтому используйте
chmod 644 img/* js/* html/*
Но для всего кода логики (например, кода PHP) вы должны установить разрешения, чтобы пользователь не мог видеть этот код:
chmod 600 file
Ответ 13
Для Mac X 10.7 (Lion) это:
chmod -R 755 /directory
И да, как говорят другие, будьте осторожны при этом.
Ответ 14
Я думаю, что Адам спрашивал, как изменить значение 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.
Надеюсь, это поможет.
Ответ 15
Существует два ответа на поиск файлов и применение к ним 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.
Итак, мое предложение
- Используйте
chmod -R 755 /opt/lampp/htdocs
, если вы хотите сразу изменить разрешения для всех файлов и каталогов.
- Используйте
find /opt/lampp/htdocs -type d -exec chmod 755 {} \;
, если количество файлов, которые вы используете, очень велико. Опция -type x
ищет только определенный тип файла, где d используется для поиска каталога, f для файла и l для ссылки.
- Используйте
chmod 755 $(find /path/to/base/dir -type d)
иначе
- Лучше использовать первую в любой ситуации
Ответ 16
Это очень просто.
В терминале перейдите в диспетчер файлов. Пример: sudo nemo
. Нажмите /opt/
, затем нажмите Свойства → Разрешение. а затем Другое. Наконец, измените создание и удаление и файл acess для чтения и записи и нажмите кнопку применить... И работайте.