Я хотел бы изменить права доступа к папке и всем ее вложенным папкам и файлам за один шаг (команду) в Linux.
Я уже пробовал использовать приведенную ниже команду, но она работает только для указанной папки:
chmod 775 /opt/lampp/htdocs
Есть ли способ установить chmod 755
для /opt/lampp/htdocs
и всего ее содержимого, включая подпапки и файлы?
Кроме того, в будущем, если я создам новую папку или файл внутри htdocs
, как можно автоматически установить для них права доступа на 755
?
Я также просмотрел эту ссылку:
https://stackoverflow.com/questions/3740187/how-to-set-default-chmod-in-linux-terminal
Другие ответы верны, так как 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 {} \;
Проверьте опцию -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, поскольку это зависит от установки LAMP текущим пользователем или другим пользователем:
sudo chmod 755 -R /opt/lampp/htdocs
Правильная рекурсивная команда:
sudo chmod 755 -R /opt/lampp/htdocs
-R
: измените каждую подпапку, включая текущую папку
chmod 755 -R / opt / lampp / htdocs
рекурсивно установит разрешения. Невозможно автоматически установить разрешения для файлов только в этом каталоге, который создается после установки разрешений, но вы можете изменить свои общесистемные разрешения для файлов по умолчанию, установив umask 022
.
Возможно, вы захотите рассмотреть этот ответ, данный nik на суперпользователе и использовать «один chmod» для всех файлов / папок, как это:
chmod 755 $(find /path/to/base/dir -type d)
chmod 644 $(find /path/to/base/dir -type f)
Вот еще один способ установить каталоги на 775 и файлы на 664.
find /opt/lampp/htdocs \
\( -type f -exec chmod ug+rw,o+r {} \; \) , \
\( -type d -exec chmod ug+rwxs,o+rx {} \; \)
Это может выглядеть долго, но это довольно круто по трем причинам:
Обратите внимание, что я не подтвердил разницу в производительности (если таковая имеется) между этим решением и простым использованием двух команд поиска (как в решении Питера Мортенсена). Однако видеть подобный пример в руководстве обнадеживает.
Пример из страницы 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.
Приветствия
Использование:
sudo chmod 755 -R /whatever/your/directory/is
Однако будьте осторожны с этим. Если вы измените права доступа к неправильным файлам/папкам, это может очень сильно навредить вам.
chmod -R 755 directory_name
работает, но как бы вы сохранили новые файлы до 755?? Разрешения файла становятся разрешением по умолчанию.
Вы хотите убедиться, что соответствующие файлы и каталоги являются chmod-ed / permissions для них являются подходящими. Для всех каталогов вы хотите
find /opt/lampp/htdocs -type d -exec chmod 711 {} \;
И для всех изображений, JavaScript, CSS, HTML ...ну, вы не должны их выполнять. Так что используйте
chmod 644 img/* js/* html/*
Но для всего логического кода (например, кода PHP) вы должны установить разрешения так, чтобы пользователь не мог видеть этот код:
chmod 600 file
Я думаю, что Адам спрашивал, как изменить значение umask для всех процессов, которые привязывают к работе в каталоге / opt / lampp / htdocs
.
Маска пользовательского режима создания файлов (маска) используется для определения разрешения файла для вновь созданных файлов. Его можно использовать для управления разрешением файла по умолчанию для новых файлов.
поэтому, если вы будете использовать какую-то программу ftp для загрузки файлов в / opt / lampp / htdocs
, вам нужно настроить свой FTP-сервер так, чтобы он использовал нужную вам umask.
Если файлы / каталоги создаются, например, с помощью php, вам необходимо изменить код php
<?php
umask(0022);
// other code
?>
если вы создадите новые файлы / папки из сеанса bash, вы можете установить значение umask в своем профиле оболочки ~/.bashrc
Или вы можете настроить umask в файле / etc / bashrc
или / etc / profile
для всех пользователей.
добавить в файл следующее:
Умаск 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
И чтобы изменить разрешения для уже созданных файлов, вы можете использовать поиск. Надеюсь, это поможет.
Есть два ответа на поиск файлов и применение к ним chmod
. Первый - «найти» файл и применить «chmod», как он находит (как предложено @WombleGoneBad).
find /opt/lampp/htdocs -type d -exec chmod 755 {} \;
Второе решение - создать список всех файлов с помощью команды find
и предоставить этот список команде chmod
(как предложено @lamgesh).
chmod 755 $(find /path/to/base/dir -type d)
Обе эти версии работают хорошо, если количество файлов, возвращаемых командой find
, невелико. Второе решение выглядит великолепно и более читабельно, чем первое. Если имеется большое количество файлов, второе решение возвращает ошибку: Список постановлений слишком длинный.
Так что мое предложение есть
chmod -R 755 / opt / lampp / htdocs
, если вы хотите изменить разрешения всех файлов и каталогов одновременно.find / opt / lampp / htdocs -type d -exec chmod 755 {{{}}} \;
, если количество файлов, которые вы используете, очень велико. Параметр -type x
ищет только файл определенного типа, где d используется для поиска каталога, f для файла и l для ссылки.chmod 755 $ (найти / path / to / base / dir -type d)
в противном случаеЭто очень просто.
В Терминале перейдите к файловому менеджеру. пример: sudo nemo
. Перейдите / opt /
, затем нажмите Свойства → Разрешение . а потом Другое . Наконец, измените, чтобы создать и удалить, и подайте в файл процесс чтения, записи и нажатия кнопки... И работа.