Как я могу chmod 777 все подпапки / var / www?

Я использую веб-сервер и FTP-сервер, где /var/www связан с /home/user/www.

Я установил обе директории на chmod 777 (что хорошо, так как только для тестирования).

Я могу загружать файлы в /home/user/www, но всякий раз, когда я создаю новый каталог, мне всегда нужно запустить chmod 777 для этой папки.

В противном случае, когда я пытаюсь просмотреть его, я получаю сообщение об ошибке

У вас нет прав доступа / test / на этом сервере.

Можно ли как-нибудь сделать все подпапки внутри /var/www доступными для всех? Или их разрешения могут быть автоматически установлены на 777? Раздражает, что мне приходится каждый раз печатать chmod 777.

70
задан 17 July 2015 в 15:48

6 ответов

Если вы хотите скопировать разрешения и / или права собственности из другого файла, который вас устраивает, вы можете сделать это с помощью sudo chmod --reference = path / to / file / to / reference путь / к / файлу / вы / хотите / к / изменить / разрешение / на

И вы можете сделать то же самое для владения файлом.

1
ответ дан 17 July 2015 в 15:48

Это плохая практика, но, надеюсь, вы просто используете это для разработки, или у вас есть другая веская причина. Вы можете указать разрешения при создании каталога с помощью параметра -m :

mkdir -m 777 dirname

Или вы можете установить разрешения рекурсивно.

sudo chmod -R 777 /var/www

Перед тем, как использовать любой из них, действительно подумайте, хотите ли вы, чтобы ваша файловая система будь таким доступным.


Изменить: Как упоминал Ринзвинд, это лучший способ добиться того, чего вы хотите.

Проверьте, какой группе принадлежит ваш каталог / var / www , и добавьте своего пользователя в эту группу.

sudo adduser yourusername group

Вероятно, это www-data .

Тогда вы будете согласитесь, установив для ваших разрешений значение 775.

106
ответ дан 17 July 2015 в 15:48

Объявление общественной службы:


Никогда не используйте chmod 777 для исправления проблем


  • Это серьезная угроза безопасности, если вы запускаете какие-либо общедоступные службы, особенно веб-приложения (например, PHP).

    Модель безопасности ОС предполагает, что многие службы (например, ваш веб-сервер) работают с ограниченными привилегиями, чтобы они не могли изменять файлы. Установка 777 для файлов нарушает эту схему.

    Удаленный пользователь может записывать или загружать файлы, а затем обманом заставить сервер (или какой-либо другой процесс в вашей системе) прочитать или выполнить их. Скрипты или программное обеспечение могут иметь недостатки, позволяющие это сделать. Очень сложно заблокировать каждый способ, которым это могло произойти, если есть каталоги с доступом для записи всем.

  • Используется в определенных системных каталогах (/ usr, / etc, / var и т.д.), он может неожиданно сломать вашу систему.

    Некоторым важным системным файлам для запуска требуются специальные разрешения, такие как разрешения setuid / setgid. Например, sudo. Избегайте изменения каких-либо разрешений на файлы для каталогов и файлов, настроенных самой системой.

  • Невозможно отменить это и вернуть все старые разрешения.

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

  • Всегда есть более подходящий способ достижения того, что он

В этом случае, похоже, вы хотите, чтобы ваш веб-сервер мог только читать каталог. Предоставление разрешения на запись во всем мире - это гораздо больше, чем вам нужно.

Выясните, почему веб-сервер не может прочитать этот каталог (подсказка: вероятно, это потому, что ваш домашний каталог не доступен для чтения всем. Доступность для чтения намного безопаснее, чем доступ для записи для всего мира - установите для своего домашнего каталога что-то вроде 755, или переместите этот www-каталог за пределы вашего дома в другое место, например / var / www или /srv).

5
ответ дан 17 July 2015 в 15:48
cd /var/www
find -type d ! -perm 777 -exec chmod 777 {} \;

для ftp, создающего все файлы с разными разрешениями, вы можете посмотреть umask ftpd, как запускается этот демон

Взгляните на этот сайт https://linuxaria.com/article/linux-shell-understanding-umask-with-примеры

4
ответ дан 17 July 2015 в 15:48

Это не работает для меня.

sudo chmod -f 777 /path/to/your/file/or/directory

Я также должен использовать -f .

sudo chmod -R -f 777 /path/to/your/file/or/directory
0
ответ дан 17 July 2015 в 15:48

Файлы и каталоги в Unix могут иметь три типа разрешений: чтение ( r ), запись ( w ) и выполнение ( x ). Каждое разрешение может быть на или отключено для каждой из трех категорий пользователей: владелец файла или каталога; другие люди в той же группе, что и владелец; и все остальные. Чтобы изменить режим файла, используйте команду chmod. Общая форма chmod X @ Y file1 file2 ...

chmod a-w file (removes all writing permissions)
chmod o+x file (sets execute permissions for other (public permissions))
chmod u=rx file        (Give the owner rx permissions, not w)
chmod go-rwx file      (Deny rwx permission for group, others)
chmod g+w file         (Give write permission to the group)
chmod a+x file1 file2  (Give execute permission to everybody)
chmod g+rx,o+x file    (OK to combine like this with a comma)

u = user that owns the file
g = group that owns the file
o = other (everyone else)
a = all (everybody)

r = read aces to the file
w = write access
x = execute (run) access 
9
ответ дан 17 July 2015 в 15:48

Другие вопросы по тегам:

Похожие вопросы: