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

54

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

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

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

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

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

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

user1645034
источник
12
Просто собираюсь оставить это здесь, ПОЖАЛУЙСТА, НЕ ИСПОЛЬЗУЙТЕ 777 НА ВЕБ-СЕРВЕРЕ . Лучший вопрос: как я могу заставить мой веб-сервер работать без использования разрешений 777?
Марко Чеппи
12
извините, что это плохая практика, и я отказываюсь отвечать на это :) Надеюсь, что каждый согласится :)
Rinzwind

Ответы:

90

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

mkdir -m 777 dirname

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

sudo chmod -R 777 /var/www

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


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

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

sudo adduser yourusername group

Группа вероятно www-data.

Тогда вы будете в порядке с настройкой разрешений на 775.

Дэн
источник
4
Это делает то, о чем вы просили, но, пожалуйста, прочтите это в первую очередь. Почему / var / www не должен содержать chmod 777 ? Это действительно не рекомендуемая практика.
Уоррен Хилл
8
Пожалуйста, не помогайте людям с методом, который является плохой практикой. Я бы предпочел, если бы вы объяснили, как это сделать: добавив своего пользователя в группу www-data или apache;)
Rinzwind
4
Образование на первом месте. Помочь людям испортить их машину - это не путь Linux. Поэтому я категорически не согласен с вами.
Rinzwind
2
Аскер сказал, что это только для тестирования. Я точно понимаю, что хочу, чтобы ваша сторона разработки была легко доступна, чтобы вы могли работать быстрее. Я собираюсь дать ему преимущество сомнения, что он не настолько глуп, чтобы делать это с рабочим сервером.
Дан
1
@ dan08 Есть более эффективные способы тестирования, в том числе с использованием домашнего каталога. См. Askubuntu.com/questions/46331/… и kimbriggs.com/computers/computer-notes/linux-notes/… . Есть безопасные способы для достижения этих целей;)
Пантера
7

Файлы и каталоги в Unix могут иметь три типа разрешений: read ( r), write ( w) и execute ( x). Каждое разрешение может быть onили offдля каждой из трех категорий пользователей: владелец файла или каталога; другие люди в той же группе, что и владелец; и все остальные. Чтобы изменить режим файла, используйте команду 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 
Локеш Кумар Банди
источник
4
cd /var/www
find -type d ! -perm 777 -exec chmod 777 {} \;

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

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

Хосе Пла
источник
1
+1 за это единственный ответ, который обновляет ТОЛЬКО папки, а не файлы
janmyszkier
3

Объявление о государственной службе:


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


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

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

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

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

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

  • Там нет никакого способа отменить это и вернуть все старые разрешения.

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

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

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

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

thomasrutter
источник
0

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

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

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

sudo chmod -R -f 777 /path/to/your/file/or/directory
Джанака Пушпакумара
источник
0

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

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

Амир Халил
источник