root как владелец www-data [duplicate]

Каждый раз, когда вы устанавливаете / удаляете ядро, grub-install-hook настраивает каждое установленное ядро. Это более безопасно и менее подвержено ошибкам, и, как правило, оно не слишком медленнее.

Оффлайн, я бы предположил, что с этим диском что-то не так. Посмотрите на это.

Если запуск grub-реконфигурации и прочее - это то, что занимает все время, возможно, это можно отключить, и только запустить его для последнего пакета ядра или что-то в этом роде. Найдите опции apt.conf (5), DPkg:: для apt и связанных с ними материалов.

162
задан 2 June 2011 в 00:32

56 ответов

Большинство ответов здесь не написаны с учетом безопасности. Приятно чувствовать, что запуск sudo каждый раз не очень мудрый. Если вы делаете опечатку (например, (не выполняйте) sudo rm -rf / var/www/dir), вы можете уничтожить свою систему.

не выполнять Начиная с Apache 2.4.7 / Ubuntu 14.04, /var/www перенесен в /var/www/html. Соответственно отрегулируйте команды в этом ответе.

Смотрите:

Где разместить мой локальный сайт, начиная с версии 2.4.7 apache2? Почему apache2 www dir был перемещен в / var / www / html? Изменение корня документа по умолчанию для HTTP-сервера

Плохие идеи:

Где разместить мой локальный сайт, начиная с версии 2.4.7 apache2? chgrp -R www-data $HOME (cob) - это позволяет www-data читать или записывать любые файлы в домашнем каталоге. Это не соответствует правилу наименьшего привилегий . Почему apache2 www dir был перемещен в / var / www / html?

ПРИМЕЧАНИЕ: в следующих решениях я предоставил www-data права на запись. Однако /usr/share/doc/base-passwd/users-and-groups.txt.gz указывает:

www-data Некоторые веб-серверы работают как www-данные. Веб-контент не должен принадлежать этому пользователю, или скомпрометированный веб-сервер сможет переписать веб-сайт. Данные, выписанные веб-серверами, будут принадлежать www-данным.

По возможности сделайте ПРИМЕЧАНИЕ предоставите права на запись в группу www-data. www-data нужно только читать файлы, чтобы веб-сервер мог его обслуживать. Единственный случай, когда www-data нуждается в разрешениях на запись, - это каталоги, хранящие закачки и другие места, которые необходимо записать.

Решение 1

Добавьте себя в группу www-data и установите бит setgid в каталоге /var/www, так что все вновь созданные файлы наследуют эту группу.

sudo gpasswd -a "$USER" www-data

Исправить ранее созданные файлы (если вы являетесь единственным пользователем /var/www): [ ! d30] sudo chown -R "$USER":www-data /var/www find /var/www -type f -exec chmod 0660 {} \; sudo find /var/www -type d -exec chmod 2770 {} \;

(еще безопаснее: используйте 640 или 2750 и вручную chmod g+w file-or-dir, которые должны быть доступны для записи на веб-сервере)

Решение 2

Создайте символическую ссылку для каждого проекта в свой домашний каталог. Скажите, что ваш проект находится в ~/projects/foo, и вы хотите, чтобы он находился в /var/www/foo, запустите:

sudo ln -sT ~/projects/foo /var/www/foo

Если ваш домашний каталог не имеет бит выполнения (спуска), установленный для other ( по соображениям безопасности), измените его группу на www-data, но прочитайте (нет чтения / записи). Сделайте то же самое для папки ~/projects, поскольку она может содержать другие проекты, кроме www. (Вам не нужно sudo, если вы ранее добавили своего пользователя в группу www-data.)

sudo chgrp www-data ~ ~/projects chmod 710 ~ ~/projects

Установите группу на www-data на ~/projects/foo и разрешите веб-серверу читать и записывать в файлы и файлы + каталоги и спускаться в директории:

sudo chgrp www-data ~/projects/foo find ~/projects/foo -type f -exec chmod 660 {} \; find ~/projects/foo -type d -exec chmod 2770 {} \;

Даже безопаснее: используйте по умолчанию 640 и 2750 и вручную файлы и каталоги chmod, которые должны быть доступны для записи пользователем веб-сервера. Бит setgid должен быть добавлен только в том случае, если вы хотите, чтобы каждый вновь созданный файл в ~/projects/foo был доступен группе.

Теперь вы можете получить доступ к вашему сайту в http://localhost/foo и отредактировать файлы проекта в ~/projects/foo.

См. также

chgrp -R www-data $HOME (cob) - это позволяет www-data читать или записывать любые файлы в домашнем каталоге. Это не соблюдает правило наименьшей привилегии Причины, по которым / var / www не должны иметь chmod 777
226
ответ дан 31 July 2018 в 17:00
  • 1
    Что вы думаете о www-сессии в терминале с помощью sudo su www-data? В сочетании с по-разному цветным приглашением, чтобы сделать его более очевидным, что это оболочка другого пользователя, и политика всегда ставить соответствующий xterm на - например - виртуальный рабочий стол 4, чтобы вы привыкли к нему, чтобы Во избежание путаницы? – user unknown 1 June 2011 в 20:18
  • 2
    @user неизвестен: если вы все делаете на терминале, так как у вас есть четкое разделение между учетными записями пользователей. Но это не сработает, если вы используете программу GUI, например gedit. Я никогда не исследовал, безопасен ли запуск программы GUI под другим пользователем в текущем сеансе или нет, это был бы интересный вопрос. – Lekensteyn 1 June 2011 в 20:26
  • 3
    можете ли вы разделить свои 2 решения на отдельные ответы, чтобы их можно было избирать / выбирать независимо? – ImaginaryRobots 2 June 2011 в 01:25
  • 4
    @imaginaryRobots: если бы я собирался публиковать различные решения для каждого вопроса, Askubuntu был бы заполнен ответами из трех строк. Я сохраню это, как если бы вы не смогли убедить меня разбить его. – Lekensteyn 2 June 2011 в 17:32
  • 5
    @berbt setfacl -d u::rwX,g::rX /var/www имеет забавный эффект, что режим по умолчанию становится 0750 (или 0640), даже если umask равен нулю. Это может быть хорошей идеей, если вы хотите избежать файлов, записываемых в мире, но если /var/www уже недоступен миру, он не нужен. – Lekensteyn 16 February 2016 в 14:38

Большинство ответов здесь не написаны с учетом безопасности. Приятно чувствовать, что запуск sudo каждый раз не очень мудрый. Если вы делаете опечатку (например, (не выполняйте) sudo rm -rf / var/www/dir), вы можете уничтожить свою систему.

не выполнять Начиная с Apache 2.4.7 / Ubuntu 14.04, /var/www перенесен в /var/www/html. Соответственно отрегулируйте команды в этом ответе.

Смотрите:

Где разместить мой локальный сайт, начиная с версии 2.4.7 apache2? Почему apache2 www dir был перемещен в / var / www / html? Изменение корня документа по умолчанию для HTTP-сервера

Плохие идеи:

Где разместить мой локальный сайт, начиная с версии 2.4.7 apache2? chgrp -R www-data $HOME (cob) - это позволяет www-data читать или записывать любые файлы в домашнем каталоге. Это не соответствует правилу наименьшего привилегий . Почему apache2 www dir был перемещен в / var / www / html?

ПРИМЕЧАНИЕ: в следующих решениях я предоставил www-data права на запись. Однако /usr/share/doc/base-passwd/users-and-groups.txt.gz указывает:

www-data Некоторые веб-серверы работают как www-данные. Веб-контент не должен принадлежать этому пользователю, или скомпрометированный веб-сервер сможет переписать веб-сайт. Данные, выписанные веб-серверами, будут принадлежать www-данным.

По возможности сделайте ПРИМЕЧАНИЕ предоставите права на запись в группу www-data. www-data нужно только читать файлы, чтобы веб-сервер мог его обслуживать. Единственный случай, когда www-data нуждается в разрешениях на запись, - это каталоги, хранящие закачки и другие места, которые необходимо записать.

Решение 1

Добавьте себя в группу www-data и установите бит setgid в каталоге /var/www, так что все вновь созданные файлы наследуют эту группу.

sudo gpasswd -a "$USER" www-data

Исправить ранее созданные файлы (если вы являетесь единственным пользователем /var/www): [ ! d30] sudo chown -R "$USER":www-data /var/www find /var/www -type f -exec chmod 0660 {} \; sudo find /var/www -type d -exec chmod 2770 {} \;

(еще безопаснее: используйте 640 или 2750 и вручную chmod g+w file-or-dir, которые должны быть доступны для записи на веб-сервере)

Решение 2

Создайте символическую ссылку для каждого проекта в свой домашний каталог. Скажите, что ваш проект находится в ~/projects/foo, и вы хотите, чтобы он находился в /var/www/foo, запустите:

sudo ln -sT ~/projects/foo /var/www/foo

Если ваш домашний каталог не имеет бит выполнения (спуска), установленный для other ( по соображениям безопасности), измените его группу на www-data, но прочитайте (нет чтения / записи). Сделайте то же самое для папки ~/projects, поскольку она может содержать другие проекты, кроме www. (Вам не нужно sudo, если вы ранее добавили своего пользователя в группу www-data.)

sudo chgrp www-data ~ ~/projects chmod 710 ~ ~/projects

Установите группу на www-data на ~/projects/foo и разрешите веб-серверу читать и записывать в файлы и файлы + каталоги и спускаться в директории:

sudo chgrp www-data ~/projects/foo find ~/projects/foo -type f -exec chmod 660 {} \; find ~/projects/foo -type d -exec chmod 2770 {} \;

Даже безопаснее: используйте по умолчанию 640 и 2750 и вручную файлы и каталоги chmod, которые должны быть доступны для записи пользователем веб-сервера. Бит setgid должен быть добавлен только в том случае, если вы хотите, чтобы каждый вновь созданный файл в ~/projects/foo был доступен группе.

Теперь вы можете получить доступ к вашему сайту в http://localhost/foo и отредактировать файлы проекта в ~/projects/foo.

См. также

chgrp -R www-data $HOME (cob) - это позволяет www-data читать или записывать любые файлы в домашнем каталоге. Это не соблюдает правило наименьшей привилегии Причины, по которым / var / www не должны иметь chmod 777
227
ответ дан 2 August 2018 в 10:02

Большинство ответов здесь не написаны с учетом безопасности. Приятно чувствовать, что запуск sudo каждый раз не очень мудрый. Если вы делаете опечатку (например, (не выполняйте) sudo rm -rf / var/www/dir), вы можете уничтожить свою систему.

не выполнять Начиная с Apache 2.4.7 / Ubuntu 14.04, /var/www перенесен в /var/www/html. Соответственно отрегулируйте команды в этом ответе.

Смотрите:

Где разместить мой локальный сайт, начиная с версии 2.4.7 apache2? Почему apache2 www dir был перемещен в / var / www / html? Изменение корня документа по умолчанию для HTTP-сервера

Плохие идеи:

Где разместить мой локальный сайт, начиная с версии 2.4.7 apache2? chgrp -R www-data $HOME (cob) - это позволяет www-data читать или записывать любые файлы в домашнем каталоге. Это не соответствует правилу наименьшего привилегий . Почему apache2 www dir был перемещен в / var / www / html?

ПРИМЕЧАНИЕ: в следующих решениях я предоставил www-data права на запись. Однако /usr/share/doc/base-passwd/users-and-groups.txt.gz указывает:

www-data Некоторые веб-серверы работают как www-данные. Веб-контент не должен принадлежать этому пользователю, или скомпрометированный веб-сервер сможет переписать веб-сайт. Данные, выписанные веб-серверами, будут принадлежать www-данным.

По возможности сделайте ПРИМЕЧАНИЕ предоставите права на запись в группу www-data. www-data нужно только читать файлы, чтобы веб-сервер мог его обслуживать. Единственный случай, когда www-data нуждается в разрешениях на запись, - это каталоги, хранящие закачки и другие места, которые необходимо записать.

Решение 1

Добавьте себя в группу www-data и установите бит setgid в каталоге /var/www, так что все вновь созданные файлы наследуют эту группу.

sudo gpasswd -a "$USER" www-data

Исправить ранее созданные файлы (если вы являетесь единственным пользователем /var/www): [ ! d30] sudo chown -R "$USER":www-data /var/www find /var/www -type f -exec chmod 0660 {} \; sudo find /var/www -type d -exec chmod 2770 {} \;

(еще безопаснее: используйте 640 или 2750 и вручную chmod g+w file-or-dir, которые должны быть доступны для записи на веб-сервере)

Решение 2

Создайте символическую ссылку для каждого проекта в свой домашний каталог. Скажите, что ваш проект находится в ~/projects/foo, и вы хотите, чтобы он находился в /var/www/foo, запустите:

sudo ln -sT ~/projects/foo /var/www/foo

Если ваш домашний каталог не имеет бит выполнения (спуска), установленный для other ( по соображениям безопасности), измените его группу на www-data, но прочитайте (нет чтения / записи). Сделайте то же самое для папки ~/projects, поскольку она может содержать другие проекты, кроме www. (Вам не нужно sudo, если вы ранее добавили своего пользователя в группу www-data.)

sudo chgrp www-data ~ ~/projects chmod 710 ~ ~/projects

Установите группу на www-data на ~/projects/foo и разрешите веб-серверу читать и записывать в файлы и файлы + каталоги и спускаться в директории:

sudo chgrp www-data ~/projects/foo find ~/projects/foo -type f -exec chmod 660 {} \; find ~/projects/foo -type d -exec chmod 2770 {} \;

Даже безопаснее: используйте по умолчанию 640 и 2750 и вручную файлы и каталоги chmod, которые должны быть доступны для записи пользователем веб-сервера. Бит setgid должен быть добавлен только в том случае, если вы хотите, чтобы каждый вновь созданный файл в ~/projects/foo был доступен группе.

Теперь вы можете получить доступ к вашему сайту в http://localhost/foo и отредактировать файлы проекта в ~/projects/foo.

См. также

chgrp -R www-data $HOME (cob) - это позволяет www-data читать или записывать любые файлы в домашнем каталоге. Это не соблюдает правило наименьшей привилегии Причины, по которым / var / www не должны иметь chmod 777
227
ответ дан 3 August 2018 в 08:48

Большинство ответов здесь не написаны с учетом безопасности. Приятно чувствовать, что запуск sudo каждый раз не очень мудрый. Если вы делаете опечатку (например, (не выполняйте) sudo rm -rf / var/www/dir), вы можете уничтожить свою систему.

не выполнять Начиная с Apache 2.4.7 / Ubuntu 14.04, /var/www перенесен в /var/www/html. Соответственно отрегулируйте команды в этом ответе.

Смотрите:

Где разместить мой локальный сайт, начиная с версии 2.4.7 apache2? Почему apache2 www dir был перемещен в / var / www / html? Изменение корня документа по умолчанию для HTTP-сервера

Плохие идеи:

Где разместить мой локальный сайт, начиная с версии 2.4.7 apache2? chgrp -R www-data $HOME (cob) - это позволяет www-data читать или записывать любые файлы в домашнем каталоге. Это не соответствует правилу наименьшего привилегий . Почему apache2 www dir был перемещен в / var / www / html?

ПРИМЕЧАНИЕ: в следующих решениях я предоставил www-data права на запись. Однако /usr/share/doc/base-passwd/users-and-groups.txt.gz указывает:

www-data Некоторые веб-серверы работают как www-данные. Веб-контент не должен принадлежать этому пользователю, или скомпрометированный веб-сервер сможет переписать веб-сайт. Данные, выписанные веб-серверами, будут принадлежать www-данным.

По возможности сделайте ПРИМЕЧАНИЕ предоставите права на запись в группу www-data. www-data нужно только читать файлы, чтобы веб-сервер мог его обслуживать. Единственный случай, когда www-data нуждается в разрешениях на запись, - это каталоги, хранящие закачки и другие места, которые необходимо записать.

Решение 1

Добавьте себя в группу www-data и установите бит setgid в каталоге /var/www, так что все вновь созданные файлы наследуют эту группу.

sudo gpasswd -a "$USER" www-data

Исправить ранее созданные файлы (если вы являетесь единственным пользователем /var/www): [ ! d30] sudo chown -R "$USER":www-data /var/www find /var/www -type f -exec chmod 0660 {} \; sudo find /var/www -type d -exec chmod 2770 {} \;

(еще безопаснее: используйте 640 или 2750 и вручную chmod g+w file-or-dir, которые должны быть доступны для записи на веб-сервере)

Решение 2

Создайте символическую ссылку для каждого проекта в свой домашний каталог. Скажите, что ваш проект находится в ~/projects/foo, и вы хотите, чтобы он находился в /var/www/foo, запустите:

sudo ln -sT ~/projects/foo /var/www/foo

Если ваш домашний каталог не имеет бит выполнения (спуска), установленный для other ( по соображениям безопасности), измените его группу на www-data, но прочитайте (нет чтения / записи). Сделайте то же самое для папки ~/projects, поскольку она может содержать другие проекты, кроме www. (Вам не нужно sudo, если вы ранее добавили своего пользователя в группу www-data.)

sudo chgrp www-data ~ ~/projects chmod 710 ~ ~/projects

Установите группу на www-data на ~/projects/foo и разрешите веб-серверу читать и записывать в файлы и файлы + каталоги и спускаться в директории:

sudo chgrp www-data ~/projects/foo find ~/projects/foo -type f -exec chmod 660 {} \; find ~/projects/foo -type d -exec chmod 2770 {} \;

Даже безопаснее: используйте по умолчанию 640 и 2750 и вручную файлы и каталоги chmod, которые должны быть доступны для записи пользователем веб-сервера. Бит setgid должен быть добавлен только в том случае, если вы хотите, чтобы каждый вновь созданный файл в ~/projects/foo был доступен группе.

Теперь вы можете получить доступ к вашему сайту в http://localhost/foo и отредактировать файлы проекта в ~/projects/foo.

См. также

chgrp -R www-data $HOME (cob) - это позволяет www-data читать или записывать любые файлы в домашнем каталоге. Это не соблюдает правило наименьшей привилегии Причины, по которым / var / www не должны иметь chmod 777
227
ответ дан 5 August 2018 в 00:06

Большинство ответов здесь не написаны с учетом безопасности. Приятно чувствовать, что запуск sudo каждый раз не очень мудрый. Если вы делаете опечатку (например, (не выполняйте) sudo rm -rf / var / www / dir ), вы можете уничтожить свою систему.

Примечание: Начиная с Apache 2.4 .7 / Ubuntu 14.04, / var / www перенесен в / var / www / html Соответственно отрегулируйте команды в этом ответе.

См. :

Плохие идеи:

  • chmod 777 (sagarchalise) - это позволяет любому, кто имеет доступ к вашей системе, записывать в каталоги и файлы и тем самым позволять злоумышленнику выполнять любой код под www-data user
  • chgrp -R www-data $ HOME (cob) - это позволяет www-data читать или напишите любые файлы в домашнем каталоге. Это не соблюдает правило наименьшей привилегии
  • chown -R $ USER: $ USER / var / www (kv1dr) - если у мира нет разрешений на чтение на / var / www , веб-сервер, работающий под www-data , не сможет читать (обслуживать) файлы. Если файл является общедоступным обычным HTML-документом, это может быть не проблема, если мир может прочитать файл. Но если файл является файлом PHP, содержащим пароли, это.

ПРИМЕЧАНИЕ. В приведенных ниже решениях я предоставил www-data права на запись. Однако в /usr/share/doc/base-passwd/users-and-groups.txt.gz указано:

www-data

Некоторые веб-серверы работают как www-данные. Веб-контент не должен принадлежать этому пользователю, или скомпрометированный веб-сервер сможет переписать веб-сайт. Данные, выписанные веб-серверами, будут принадлежать www-data.

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

Решение 1

Добавьте себя в www-data и установить бит setgid в каталоге / var / www , чтобы все вновь созданные файлы наследовали эту группу.

   sudo gpasswd -a "$ USER" www-data  

Исправить ранее созданные файлы (если вы являетесь единственным пользователем / var / www ) :

  sudo chown -R "$ USER": www-data / var / www find / var / www -type f -exec chmod 0660 {} \;  sudo find / var / www -type d -exec chmod 2770 {} \;   

(даже безопаснее: используйте 640 или 2750 и вручную chmod g + w file-or-dir , который должен быть доступен для записи веб-сервером)

Решение 2

Создайте символическую ссылку для каждого проекта в ваш домашний каталог. Скажите, что ваш проект находится в ~ / projects / foo , и вы хотите, чтобы он находился в / var / www / foo , запустите:

  sudo ln -sT ~ / projects / foo / var / www / foo  

Если ваш домашний каталог не имеет бита выполнения (спуска), установленного для другого ( по соображениям безопасности), измените ее группу на www-data , но установите только бит выполнения (нет чтения / записи). Сделайте то же самое для папки ~ / projects , поскольку она может содержать другие проекты, кроме www. (Вам не нужно sudo , если вы ранее добавили своего пользователя в группу www-data .)

  sudo chgrp www-  data ~ ~ / projects chmod 710 ~ ~ / projects  

Установите группу в www-data на ~ / projects / foo и разрешить веб-серверу читать и записывать файлы и файлы + каталоги и спускаться в директории:

  sudo chgrp www-data ~ / projects / foo find ~ / projects / foo -type f -exec chmod  660 {} \;  find ~ / projects / foo -type d -exec chmod 2770 {} \;   

Даже безопаснее: используйте по умолчанию 640 и 2750 и вручную файлы и каталоги chmod, которые должны быть доступны для записи пользователем веб-сервера. Бит setgid должен быть добавлен только в том случае, если вы хотите, чтобы каждый вновь созданный файл в ~ / projects / foo был доступен группе.

Теперь вы можете получить доступ к своему сайту в http: // localhost / foo и отредактируйте ваши файлы проекта в ~ / projects / foo .

См. также

227
ответ дан 6 August 2018 в 16:27

Большинство ответов здесь не написаны с учетом безопасности. Приятно чувствовать, что запуск sudo каждый раз не очень мудрый. Если вы делаете опечатку (например, (не выполняйте) sudo rm -rf / var / www / dir ), вы можете уничтожить свою систему.

Примечание: Начиная с Apache 2.4 .7 / Ubuntu 14.04, / var / www перенесен в / var / www / html Соответственно отрегулируйте команды в этом ответе.

См. :

Плохие идеи:

  • chmod 777 (sagarchalise) - это позволяет любому, кто имеет доступ к вашей системе, записывать в каталоги и файлы и тем самым позволять злоумышленнику выполнять любой код под www-data user
  • chgrp -R www-data $ HOME (cob) - это позволяет www-data читать или напишите любые файлы в домашнем каталоге. Это не соблюдает правило наименьшей привилегии
  • chown -R $ USER: $ USER / var / www (kv1dr) - если у мира нет разрешений на чтение на / var / www , веб-сервер, работающий под www-data , не сможет читать (обслуживать) файлы. Если файл является общедоступным обычным HTML-документом, это может быть не проблема, если мир может прочитать файл. Но если файл является файлом PHP, содержащим пароли, это.

ПРИМЕЧАНИЕ. В приведенных ниже решениях я предоставил www-data права на запись. Однако в /usr/share/doc/base-passwd/users-and-groups.txt.gz указано:

www-data

Некоторые веб-серверы работают как www-данные. Веб-контент не должен принадлежать этому пользователю, или скомпрометированный веб-сервер сможет переписать веб-сайт. Данные, выписанные веб-серверами, будут принадлежать www-data.

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

Решение 1

Добавьте себя в www-data и установить бит setgid в каталоге / var / www , чтобы все вновь созданные файлы наследовали эту группу.

   sudo gpasswd -a "$ USER" www-data  

Исправить ранее созданные файлы (если вы являетесь единственным пользователем / var / www ) :

  sudo chown -R "$ USER": www-data / var / www find / var / www -type f -exec chmod 0660 {} \;  sudo find / var / www -type d -exec chmod 2770 {} \;   

(даже безопаснее: используйте 640 или 2750 и вручную chmod g + w file-or-dir , который должен быть доступен для записи веб-сервером)

Решение 2

Создайте символическую ссылку для каждого проекта в ваш домашний каталог. Скажите, что ваш проект находится в ~ / projects / foo , и вы хотите, чтобы он находился в / var / www / foo , запустите:

  sudo ln -sT ~ / projects / foo / var / www / foo  

Если ваш домашний каталог не имеет бита выполнения (спуска), установленного для другого ( по соображениям безопасности), измените ее группу на www-data , но установите только бит выполнения (нет чтения / записи). Сделайте то же самое для папки ~ / projects , поскольку она может содержать другие проекты, кроме www. (Вам не нужно sudo , если вы ранее добавили своего пользователя в группу www-data .)

  sudo chgrp www-  data ~ ~ / projects chmod 710 ~ ~ / projects  

Установите группу в www-data на ~ / projects / foo и разрешить веб-серверу читать и записывать файлы и файлы + каталоги и спускаться в директории:

  sudo chgrp www-data ~ / projects / foo find ~ / projects / foo -type f -exec chmod  660 {} \;  find ~ / projects / foo -type d -exec chmod 2770 {} \;   

Даже безопаснее: используйте по умолчанию 640 и 2750 и вручную файлы и каталоги chmod, которые должны быть доступны для записи пользователем веб-сервера. Бит setgid должен быть добавлен только в том случае, если вы хотите, чтобы каждый вновь созданный файл в ~ / projects / foo был доступен группе.

Теперь вы можете получить доступ к своему сайту в http: // localhost / foo и отредактируйте ваши файлы проекта в ~ / projects / foo .

См. также

227
ответ дан 8 August 2018 в 20:38

Большинство ответов здесь не написаны с учетом безопасности. Приятно чувствовать, что запуск sudo каждый раз не очень мудрый. Если вы делаете опечатку (например, (не выполняйте) sudo rm -rf / var / www / dir ), вы можете уничтожить свою систему.

Примечание: Начиная с Apache 2.4 .7 / Ubuntu 14.04, / var / www перенесен в / var / www / html Соответственно отрегулируйте команды в этом ответе.

См. :

Плохие идеи:

  • chmod 777 (sagarchalise) - это позволяет любому, кто имеет доступ к вашей системе, записывать в каталоги и файлы и тем самым позволять злоумышленнику выполнять любой код под www-data user
  • chgrp -R www-data $ HOME (cob) - это позволяет www-data читать или напишите любые файлы в домашнем каталоге. Это не соблюдает правило наименьшей привилегии
  • chown -R $ USER: $ USER / var / www (kv1dr) - если у мира нет разрешений на чтение на / var / www , веб-сервер, работающий под www-data , не сможет читать (обслуживать) файлы. Если файл является общедоступным обычным HTML-документом, это может быть не проблема, если мир может прочитать файл. Но если файл является файлом PHP, содержащим пароли, это.

ПРИМЕЧАНИЕ. В приведенных ниже решениях я предоставил www-data права на запись. Однако в /usr/share/doc/base-passwd/users-and-groups.txt.gz указано:

www-data

Некоторые веб-серверы работают как www-данные. Веб-контент не должен принадлежать этому пользователю, или скомпрометированный веб-сервер сможет переписать веб-сайт. Данные, выписанные веб-серверами, будут принадлежать www-data.

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

Решение 1

Добавьте себя в www-data и установить бит setgid в каталоге / var / www , чтобы все вновь созданные файлы наследовали эту группу.

   sudo gpasswd -a "$ USER" www-data  

Исправить ранее созданные файлы (если вы являетесь единственным пользователем / var / www ) :

  sudo chown -R "$ USER": www-data / var / www find / var / www -type f -exec chmod 0660 {} \;  sudo find / var / www -type d -exec chmod 2770 {} \;   

(даже безопаснее: используйте 640 или 2750 и вручную chmod g + w file-or-dir , который должен быть доступен для записи веб-сервером)

Решение 2

Создайте символическую ссылку для каждого проекта в ваш домашний каталог. Скажите, что ваш проект находится в ~ / projects / foo , и вы хотите, чтобы он находился в / var / www / foo , запустите:

  sudo ln -sT ~ / projects / foo / var / www / foo  

Если ваш домашний каталог не имеет бита выполнения (спуска), установленного для другого ( по соображениям безопасности), измените ее группу на www-data , но установите только бит выполнения (нет чтения / записи). Сделайте то же самое для папки ~ / projects , поскольку она может содержать другие проекты, кроме www. (Вам не нужно sudo , если вы ранее добавили своего пользователя в группу www-data .)

  sudo chgrp www-  data ~ ~ / projects chmod 710 ~ ~ / projects  

Установите группу в www-data на ~ / projects / foo и разрешить веб-серверу читать и записывать файлы и файлы + каталоги и спускаться в директории:

  sudo chgrp www-data ~ / projects / foo find ~ / projects / foo -type f -exec chmod  660 {} \;  find ~ / projects / foo -type d -exec chmod 2770 {} \;   

Даже безопаснее: используйте по умолчанию 640 и 2750 и вручную файлы и каталоги chmod, которые должны быть доступны для записи пользователем веб-сервера. Бит setgid должен быть добавлен только в том случае, если вы хотите, чтобы каждый вновь созданный файл в ~ / projects / foo был доступен группе.

Теперь вы можете получить доступ к своему сайту в http: // localhost / foo и отредактируйте ваши файлы проекта в ~ / projects / foo .

См. также

227
ответ дан 14 August 2018 в 10:26
  • 1
    Что вы думаете о www-сессии в терминале sudo su www-data ? В сочетании с по-разному цветным приглашением, чтобы сделать его более очевидным, что это оболочка другого пользователя, и политика всегда ставить соответствующий xterm на - например - виртуальный рабочий стол 4, чтобы вы привыкли к нему, чтобы Во избежание путаницы? – user unknown 1 June 2011 в 20:18
  • 2
    @user неизвестен: если вы все делаете на терминале, так как у вас есть четкое разделение между учетными записями пользователей. Но это не сработает, если вы используете программу GUI, например gedit . Я никогда не исследовал, безопасен ли запуск программы GUI под другим пользователем в текущем сеансе или нет, это был бы интересный вопрос. – Lekensteyn 1 June 2011 в 20:26
  • 3
    можете ли вы разделить свои 2 решения на отдельные ответы, чтобы их можно было избирать / выбирать независимо? – ImaginaryRobots 2 June 2011 в 01:25
  • 4
    @imaginaryRobots: если бы я собирался публиковать различные решения для каждого вопроса, Askubuntu был бы заполнен ответами из трех строк. Я сохраню это, как если бы вы не смогли убедить меня разбить его. – Lekensteyn 2 June 2011 в 17:32
  • 5
    @berbt setfacl -d u :: rwX, g :: rX / var / www имеет забавный эффект, что режим по умолчанию становится 0750 (или 0640), даже если umask равен нулю. Это может быть хорошей идеей, если вы хотите избежать файлов, доступных в мире, но если / var / www уже недоступен миру, он не нужен. – Lekensteyn 16 February 2016 в 14:38
  • 6
    – Jack_Hu 31 May 2018 в 21:07

chmod в / var на www, чтобы позволить владельцу доступа, и chown, чтобы убедиться, что вы владеете им. Вероятно, глупая идея, но это определенно сработает.

1
ответ дан 31 July 2018 в 17:00
  • 1
    Не глупая идея, это разумная идея безопасности. Примечание. Вам не нужно (и не должно) изменять разрешения /var, просто /var/www и / или его содержимое. – thomasrutter 24 November 2016 в 03:43

Вместо того, чтобы хранить мои веб-сайты в / var / www, я размещаю ссылки на сайты, которые находятся в моей домашней папке. Я могу свободно редактировать или добавлять страницы на свои сайты. Когда я доволен изменениями, я передаю FTP хостинговой компании, где мое доменное имя связывается.

6
ответ дан 31 July 2018 в 17:00

Если вы создаете / var / www, который можно записать в свою группу, и добавьте себя в группу, вам не придется использовать sudo, будучи еще достаточно безопасным. Попробуйте следующее:

sudo adduser <username> www-data sudo chown -R www-data:www-data /var/www sudo chmod -R g+rw /var/www

После этого вы сможете редактировать /var/www/ файлы без проблем.

Первая строка добавляет вас в группу www-data, вторая строка очищается и все третьи делают так, чтобы все пользователи, входящие в группу www-data, могли читать и записывать все файлы в /var/www.

6
ответ дан 31 July 2018 в 17:00
  • 1
    Это очень плохая идея для безопасности, и этот совет не следует соблюдать по причинам, объясняемым в других ответах. Предполагается, что www-данные будут непривилегированной группой без доступа на запись. – thomasrutter 24 November 2016 в 03:45

Это просто. Вам не нужно включать apache 'UserDir' (не рекомендуется) и не вмешиваться в группы 'www-data' (группа apache в случае с Fedora)

Просто создайте каталог проекта внутри /var/www/html

cd /var/www/html sudo mkdir my_project

Затем просто запустите каталог проекта для своего пользователя.

sudo chown your_username my_project

Теперь вы можете приступить к работе над папкой проекта в качестве обычного пользователя с любым редактором, IDE по вашему выбору. Нет больше sudos:)

5
ответ дан 31 July 2018 в 17:00
  • 1
    +1 Это то, что я делаю: изменить собственность не на /var/www, а на подкаталоги. – fkraiem 20 October 2016 в 18:33

Don'ts

Не устанавливайте права доступа к файлам на 777 (доступно для записи в мире). Это существенный недостаток безопасности, особенно если вы включаете серверные скрипты, такие как PHP. Непривилегированные процессы не должны записываться в файлы, которые могут повлиять на веб-сайт, или, в случае использования скриптов на стороне сервера, выполнить произвольный код. Не добавляйте себя в качестве члена группы www-data и дайте ему права на запись. Цель этой группы состоит в том, что она является непривилегированной группой, которую серверные процессы выполняют как. Они должны иметь доступ только к файлам веб-сайта, где это возможно, по тем же причинам, что и выше. Не изменяйте разрешения процессов Apache. По умолчанию дочерние процессы Apache выполняются как пользователь и группа www-data, и это не должно изменяться. Это всего лишь способ не дать им права на запись в файловую систему. В определенных обстоятельствах вы хотите, чтобы ваши серверные сценарии могли записывать файлы, и в этом случае только файлы должны быть доступны для записи в www-data, и для обеспечения безопасности необходимо принять меры по обеспечению безопасности.

Dos

Не устанавливайте права доступа к файлам на 777 (доступно для записи в мире). Это существенный недостаток безопасности, особенно если вы включаете серверные скрипты, такие как PHP. Непривилегированные процессы не должны записываться в файлы, которые могут повлиять на веб-сайт, или, в случае использования сценариев на стороне сервера, выполнить произвольный код.

Не устанавливать права доступа к файлам 777 (world- доступно для записи)

Если /var/www не имеет смысла, вы можете разместить их в другом месте. Если они специфичны для вашей собственной разработки или тестирования, вы можете разместить их в своем домашнем каталоге. Или вы можете настроить некоторые каталоги в /srv. Не добавляйте себя как член группы www-data и дайте ему права на запись. Цель этой группы заключается в том, что она является непривилегированной группой, которую сервер обрабатывает как. Они должны иметь доступ только к файлам веб-сайта, где это возможно, по тем же причинам, что и выше.
5
ответ дан 31 July 2018 в 17:00

Вы можете запустить www-сеанс в терминале с помощью

sudo su www-data

В сочетании с приглашением по-разному цвета *, чтобы сделать его более очевидным, что это оболочка другого пользователя и политика всегда помещать соответствующий xterm (и редактор и т. д.) на, например, - виртуальный рабочий стол 4, чтобы вы привыкли к нему, чтобы избежать путаницы.

*) Для разного цвета приглашения с differnt, создайте файл / etc / prompt следующим образом:

# PROMPTING # When executing interactively, bash displays the primary prompt PS1 when it is ready to read a command, and the sec- # ondary prompt PS2 when it needs more input to complete a command. Bash allows these prompt strings to be customized # by inserting a number of backslash-escaped special characters that are decoded as follows: # \a an ASCII bell character (07) # \d the date in "Weekday Month Date" format (e.g., "Tue May 26") # \D{format} # the format is passed to strftime(3) and the result is inserted into the prompt string; an empty format # results in a locale-specific time representation. The braces are required # \e an ASCII escape character (033) # \h the hostname up to the first `.' # \H the hostname # \j the number of jobs currently managed by the shell # \l the basename of the shell's terminal device name # \n newline # \r carriage return # \s the name of the shell, the basename of $0 (the portion following the final slash) # \t the current time in 24-hour HH:MM:SS format # \T the current time in 12-hour HH:MM:SS format # \@ the current time in 12-hour am/pm format # \A the current time in 24-hour HH:MM format # \u the username of the current user # \v the version of bash (e.g., 2.00) # \V the release of bash, version + patchelvel (e.g., 2.00.0) # \w the current working directory # \W the basename of the current working directory # \! the history number of this command # \# the command number of this command # \$ if the effective UID is 0, a #, otherwise a $ # \nnn the character corresponding to the octal number nnn # \\ a backslash # \[ begin a sequence of non-printing characters, which could be used to embed a terminal control sequence # into the prompt # \] end a sequence of non-printing characters # # The command number and the history number are usually different: the history number of a command is its position in # the history list, which may include commands restored from the history file (see HISTORY below), while the command # number is the position in the sequence of commands executed during the current shell session. After the string is # # colors: # \[...\] wird benötigt, damit die shell weiß, daß hier kein printable output ist, und die Umbrüche richtig plaziert. # # ANSI COLORS CRE="\[ [K\]" NORMAL="\[[0;39m\]" # RED: Failure or error message RED="\[[1;31m\]" # GREEN: Success message GREEN="\[[1;32m\]" # YELLOW: Descriptions YELLOW="\[[1;33m\]" # BLUE: System messages BLUE="\[[1;34m\]" # MAGENTA: Found devices or drivers MAGENTA="\[[1;35m\]" # CYAN: Questions CYAN="\[[1;36m\]" # BOLD WHITE: Hint WHITE="\[[1;37m\]" # # default: # postgres, oracle, www-data # # PS1=$BLUE"machine]->"$NORMAL\\w"$BLUE ø $NORMAL" PS1=$BLUE"machine]:"$NORMAL\\w"$BLUE > $NORMAL" # # root, stefan: # case "$UID" in '0') PS1=$RED"machine:"$NORMAL\\w"$RED # $NORMAL" ;; '1000') PS1=$GREEN"machine:"$BLUE\\w$YELLOW" > "$NORMAL ;; # default) # ;; esac

и, например, введите его из /etc/bash.bashrc.

В качестве дополнительного инструмента для разграничения вы всегда можете редактировать свои файлы с помощью псевдонима «edit» или символической ссылки, которая указывает, в зависимости от вашей личности (taylor / www-data), на gedit или mousepad, vim или pico. Или вы можете использовать разные профили редактора, по крайней мере, в gedit вы можете настроить свои предпочтения на черный текст на белом фоне или белом тексте на черном фоне, например.

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

note: скрипт-запрос частично является копией справочной страницы bash.

1
ответ дан 31 July 2018 в 17:00
  • 1
    Это будет работать и не будет (если будет использоваться осторожно) негативно повлиять на безопасность, но не может быть самым простым решением. Это действительно приемлемое решение для некоторых людей. – thomasrutter 24 November 2016 в 03:47

На этой странице моего сайта я описываю команды для изменения разрешения в /var/www между apache и пользователем pi, но его существенное

sudo chown -R pi /var/www

, а затем перезапуск apache

sudo service apache2 restart
-1
ответ дан 31 July 2018 в 17:00

chmod в / var на www, чтобы позволить владельцу доступа, и chown, чтобы убедиться, что вы владеете им. Вероятно, глупая идея, но это определенно сработает.

1
ответ дан 2 August 2018 в 10:02
  • 1
    Не глупая идея, это разумная идея безопасности. Примечание. Вам не нужно (и не должно) изменять разрешения /var, просто /var/www и / или его содержимое. – thomasrutter 24 November 2016 в 03:43

Вместо того, чтобы хранить мои веб-сайты в / var / www, я размещаю ссылки на сайты, которые находятся в моей домашней папке. Я могу свободно редактировать или добавлять страницы на свои сайты. Когда я доволен изменениями, я передаю FTP хостинговой компании, где мое доменное имя связывается.

6
ответ дан 2 August 2018 в 10:02

Если вы создаете / var / www, который можно записать в свою группу, и добавьте себя в группу, вам не придется использовать sudo, будучи еще достаточно безопасным. Попробуйте следующее:

sudo adduser <username> www-data sudo chown -R www-data:www-data /var/www sudo chmod -R g+rw /var/www

После этого вы сможете редактировать /var/www/ файлы без проблем.

Первая строка добавляет вас в группу www-data, вторая строка очищается и все третьи делают так, чтобы все пользователи, входящие в группу www-data, могли читать и записывать все файлы в /var/www.

6
ответ дан 2 August 2018 в 10:02
  • 1
    Это очень плохая идея для безопасности, и этот совет не следует соблюдать по причинам, объясняемым в других ответах. Предполагается, что www-данные будут непривилегированной группой без доступа на запись. – thomasrutter 24 November 2016 в 03:45

Это просто. Вам не нужно включать apache 'UserDir' (не рекомендуется) и не вмешиваться в группы 'www-data' (группа apache в случае с Fedora)

Просто создайте каталог проекта внутри /var/www/html

cd /var/www/html sudo mkdir my_project

Затем просто запустите каталог проекта для своего пользователя.

sudo chown your_username my_project

Теперь вы можете приступить к работе над папкой проекта в качестве обычного пользователя с любым редактором, IDE по вашему выбору. Нет больше sudos:)

5
ответ дан 2 August 2018 в 10:02
  • 1
    +1 Это то, что я делаю: изменить собственность не на /var/www, а на подкаталоги. – fkraiem 20 October 2016 в 18:33

Don'ts

Не устанавливайте права доступа к файлам на 777 (доступно для записи в мире). Это существенный недостаток безопасности, особенно если вы включаете серверные скрипты, такие как PHP. Непривилегированные процессы не должны записываться в файлы, которые могут повлиять на веб-сайт, или, в случае использования скриптов на стороне сервера, выполнить произвольный код. Не добавляйте себя в качестве члена группы www-data и дайте ему права на запись. Цель этой группы состоит в том, что она является непривилегированной группой, которую серверные процессы выполняют как. Они должны иметь доступ только к файлам веб-сайта, где это возможно, по тем же причинам, что и выше. Не изменяйте разрешения процессов Apache. По умолчанию дочерние процессы Apache выполняются как пользователь и группа www-data, и это не должно изменяться. Это всего лишь способ не дать им права на запись в файловую систему. В определенных обстоятельствах вы хотите, чтобы ваши серверные сценарии могли записывать файлы, и в этом случае только файлы должны быть доступны для записи в www-data, и для обеспечения безопасности необходимо принять меры по обеспечению безопасности.

Dos

Не устанавливайте права доступа к файлам на 777 (доступно для записи в мире). Это существенный недостаток безопасности, особенно если вы включаете серверные скрипты, такие как PHP. Непривилегированные процессы не должны записываться в файлы, которые могут повлиять на веб-сайт, или, в случае использования сценариев на стороне сервера, выполнить произвольный код.

Не устанавливать права доступа к файлам 777 (world- доступно для записи)

Если /var/www не имеет смысла, вы можете разместить их в другом месте. Если они специфичны для вашей собственной разработки или тестирования, вы можете разместить их в своем домашнем каталоге. Или вы можете настроить некоторые каталоги в /srv. Не добавляйте себя как член группы www-data и дайте ему права на запись. Цель этой группы заключается в том, что она является непривилегированной группой, которую сервер обрабатывает как. Они должны иметь доступ только к файлам веб-сайта, где это возможно, по тем же причинам, что и выше.
5
ответ дан 2 August 2018 в 10:02

Вы можете запустить www-сеанс в терминале с помощью

sudo su www-data

В сочетании с приглашением по-разному цвета *, чтобы сделать его более очевидным, что это оболочка другого пользователя и политика всегда помещать соответствующий xterm (и редактор и т. д.) на, например, - виртуальный рабочий стол 4, чтобы вы привыкли к нему, чтобы избежать путаницы.

*) Для разного цвета приглашения с differnt, создайте файл / etc / prompt следующим образом:

# PROMPTING # When executing interactively, bash displays the primary prompt PS1 when it is ready to read a command, and the sec- # ondary prompt PS2 when it needs more input to complete a command. Bash allows these prompt strings to be customized # by inserting a number of backslash-escaped special characters that are decoded as follows: # \a an ASCII bell character (07) # \d the date in "Weekday Month Date" format (e.g., "Tue May 26") # \D{format} # the format is passed to strftime(3) and the result is inserted into the prompt string; an empty format # results in a locale-specific time representation. The braces are required # \e an ASCII escape character (033) # \h the hostname up to the first `.' # \H the hostname # \j the number of jobs currently managed by the shell # \l the basename of the shell's terminal device name # \n newline # \r carriage return # \s the name of the shell, the basename of $0 (the portion following the final slash) # \t the current time in 24-hour HH:MM:SS format # \T the current time in 12-hour HH:MM:SS format # \@ the current time in 12-hour am/pm format # \A the current time in 24-hour HH:MM format # \u the username of the current user # \v the version of bash (e.g., 2.00) # \V the release of bash, version + patchelvel (e.g., 2.00.0) # \w the current working directory # \W the basename of the current working directory # \! the history number of this command # \# the command number of this command # \$ if the effective UID is 0, a #, otherwise a $ # \nnn the character corresponding to the octal number nnn # \\ a backslash # \[ begin a sequence of non-printing characters, which could be used to embed a terminal control sequence # into the prompt # \] end a sequence of non-printing characters # # The command number and the history number are usually different: the history number of a command is its position in # the history list, which may include commands restored from the history file (see HISTORY below), while the command # number is the position in the sequence of commands executed during the current shell session. After the string is # # colors: # \[...\] wird benötigt, damit die shell weiß, daß hier kein printable output ist, und die Umbrüche richtig plaziert. # # ANSI COLORS CRE="\[ [K\]" NORMAL="\[[0;39m\]" # RED: Failure or error message RED="\[[1;31m\]" # GREEN: Success message GREEN="\[[1;32m\]" # YELLOW: Descriptions YELLOW="\[[1;33m\]" # BLUE: System messages BLUE="\[[1;34m\]" # MAGENTA: Found devices or drivers MAGENTA="\[[1;35m\]" # CYAN: Questions CYAN="\[[1;36m\]" # BOLD WHITE: Hint WHITE="\[[1;37m\]" # # default: # postgres, oracle, www-data # # PS1=$BLUE"machine]->"$NORMAL\\w"$BLUE ø $NORMAL" PS1=$BLUE"machine]:"$NORMAL\\w"$BLUE > $NORMAL" # # root, stefan: # case "$UID" in '0') PS1=$RED"machine:"$NORMAL\\w"$RED # $NORMAL" ;; '1000') PS1=$GREEN"machine:"$BLUE\\w$YELLOW" > "$NORMAL ;; # default) # ;; esac

и, например, введите его из /etc/bash.bashrc.

В качестве дополнительного инструмента для разграничения вы всегда можете редактировать свои файлы с помощью псевдонима «edit» или символической ссылки, которая указывает, в зависимости от вашей личности (taylor / www-data), на gedit или mousepad, vim или pico. Или вы можете использовать разные профили редактора, по крайней мере, в gedit вы можете настроить свои предпочтения на черный текст на белом фоне или белом тексте на черном фоне, например.

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

note: скрипт-запрос частично является копией справочной страницы bash.

1
ответ дан 2 August 2018 в 10:02
  • 1
    Это будет работать и не будет (если будет использоваться осторожно) негативно повлиять на безопасность, но не может быть самым простым решением. Это действительно приемлемое решение для некоторых людей. – thomasrutter 24 November 2016 в 03:47

На этой странице моего сайта я описываю команды для изменения разрешения в /var/www между apache и пользователем pi, но его существенное

sudo chown -R pi /var/www

, а затем перезапуск apache

sudo service apache2 restart
-1
ответ дан 2 August 2018 в 10:02

chmod в / var на www, чтобы позволить владельцу доступа, и chown, чтобы убедиться, что вы владеете им. Вероятно, глупая идея, но это определенно сработает.

1
ответ дан 3 August 2018 в 08:48
  • 1
    Не глупая идея, это разумная идея безопасности. Примечание. Вам не нужно (и не должно) изменять разрешения /var, просто /var/www и / или его содержимое. – thomasrutter 24 November 2016 в 03:43

Вместо того, чтобы хранить мои веб-сайты в / var / www, я размещаю ссылки на сайты, которые находятся в моей домашней папке. Я могу свободно редактировать или добавлять страницы на свои сайты. Когда я доволен изменениями, я передаю FTP хостинговой компании, где мое доменное имя связывается.

6
ответ дан 3 August 2018 в 08:48

Если вы создаете / var / www, который можно записать в свою группу, и добавьте себя в группу, вам не придется использовать sudo, будучи еще достаточно безопасным. Попробуйте следующее:

sudo adduser <username> www-data sudo chown -R www-data:www-data /var/www sudo chmod -R g+rw /var/www

После этого вы сможете редактировать /var/www/ файлы без проблем.

Первая строка добавляет вас в группу www-data, вторая строка очищается и все третьи делают так, чтобы все пользователи, входящие в группу www-data, могли читать и записывать все файлы в /var/www.

6
ответ дан 3 August 2018 в 08:48
  • 1
    Это очень плохая идея для безопасности, и этот совет не следует соблюдать по причинам, объясняемым в других ответах. Предполагается, что www-данные будут непривилегированной группой без доступа на запись. – thomasrutter 24 November 2016 в 03:45

Это просто. Вам не нужно включать apache 'UserDir' (не рекомендуется) и не вмешиваться в группы 'www-data' (группа apache в случае с Fedora)

Просто создайте каталог проекта внутри /var/www/html

cd /var/www/html sudo mkdir my_project

Затем просто запустите каталог проекта для своего пользователя.

sudo chown your_username my_project

Теперь вы можете приступить к работе над папкой проекта в качестве обычного пользователя с любым редактором, IDE по вашему выбору. Нет больше sudos:)

5
ответ дан 3 August 2018 в 08:48
  • 1
    +1 Это то, что я делаю: изменить собственность не на /var/www, а на подкаталоги. – fkraiem 20 October 2016 в 18:33

Don'ts

Не устанавливайте права доступа к файлам на 777 (доступно для записи в мире). Это существенный недостаток безопасности, особенно если вы включаете серверные скрипты, такие как PHP. Непривилегированные процессы не должны записываться в файлы, которые могут повлиять на веб-сайт, или, в случае использования скриптов на стороне сервера, выполнить произвольный код. Не добавляйте себя в качестве члена группы www-data и дайте ему права на запись. Цель этой группы состоит в том, что она является непривилегированной группой, которую серверные процессы выполняют как. Они должны иметь доступ только к файлам веб-сайта, где это возможно, по тем же причинам, что и выше. Не изменяйте разрешения процессов Apache. По умолчанию дочерние процессы Apache выполняются как пользователь и группа www-data, и это не должно изменяться. Это всего лишь способ не дать им права на запись в файловую систему. В определенных обстоятельствах вы хотите, чтобы ваши серверные сценарии могли записывать файлы, и в этом случае только файлы должны быть доступны для записи в www-data, и для обеспечения безопасности необходимо принять меры по обеспечению безопасности.

Dos

Не устанавливайте права доступа к файлам на 777 (доступно для записи в мире). Это существенный недостаток безопасности, особенно если вы включаете серверные скрипты, такие как PHP. Непривилегированные процессы не должны записываться в файлы, которые могут повлиять на веб-сайт, или, в случае использования сценариев на стороне сервера, выполнить произвольный код.

Не устанавливать права доступа к файлам 777 (world- доступно для записи)

Если /var/www не имеет смысла, вы можете разместить их в другом месте. Если они специфичны для вашей собственной разработки или тестирования, вы можете разместить их в своем домашнем каталоге. Или вы можете настроить некоторые каталоги в /srv. Не добавляйте себя как член группы www-data и дайте ему права на запись. Цель этой группы заключается в том, что она является непривилегированной группой, которую сервер обрабатывает как. Они должны иметь доступ только к файлам веб-сайта, где это возможно, по тем же причинам, что и выше.
5
ответ дан 3 August 2018 в 08:48

Вы можете запустить www-сеанс в терминале с помощью

sudo su www-data

В сочетании с приглашением по-разному цвета *, чтобы сделать его более очевидным, что это оболочка другого пользователя и политика всегда помещать соответствующий xterm (и редактор и т. д.) на, например, - виртуальный рабочий стол 4, чтобы вы привыкли к нему, чтобы избежать путаницы.

*) Для разного цвета приглашения с differnt, создайте файл / etc / prompt следующим образом:

# PROMPTING # When executing interactively, bash displays the primary prompt PS1 when it is ready to read a command, and the sec- # ondary prompt PS2 when it needs more input to complete a command. Bash allows these prompt strings to be customized # by inserting a number of backslash-escaped special characters that are decoded as follows: # \a an ASCII bell character (07) # \d the date in "Weekday Month Date" format (e.g., "Tue May 26") # \D{format} # the format is passed to strftime(3) and the result is inserted into the prompt string; an empty format # results in a locale-specific time representation. The braces are required # \e an ASCII escape character (033) # \h the hostname up to the first `.' # \H the hostname # \j the number of jobs currently managed by the shell # \l the basename of the shell's terminal device name # \n newline # \r carriage return # \s the name of the shell, the basename of $0 (the portion following the final slash) # \t the current time in 24-hour HH:MM:SS format # \T the current time in 12-hour HH:MM:SS format # \@ the current time in 12-hour am/pm format # \A the current time in 24-hour HH:MM format # \u the username of the current user # \v the version of bash (e.g., 2.00) # \V the release of bash, version + patchelvel (e.g., 2.00.0) # \w the current working directory # \W the basename of the current working directory # \! the history number of this command # \# the command number of this command # \$ if the effective UID is 0, a #, otherwise a $ # \nnn the character corresponding to the octal number nnn # \\ a backslash # \[ begin a sequence of non-printing characters, which could be used to embed a terminal control sequence # into the prompt # \] end a sequence of non-printing characters # # The command number and the history number are usually different: the history number of a command is its position in # the history list, which may include commands restored from the history file (see HISTORY below), while the command # number is the position in the sequence of commands executed during the current shell session. After the string is # # colors: # \[...\] wird benötigt, damit die shell weiß, daß hier kein printable output ist, und die Umbrüche richtig plaziert. # # ANSI COLORS CRE="\[ [K\]" NORMAL="\[[0;39m\]" # RED: Failure or error message RED="\[[1;31m\]" # GREEN: Success message GREEN="\[[1;32m\]" # YELLOW: Descriptions YELLOW="\[[1;33m\]" # BLUE: System messages BLUE="\[[1;34m\]" # MAGENTA: Found devices or drivers MAGENTA="\[[1;35m\]" # CYAN: Questions CYAN="\[[1;36m\]" # BOLD WHITE: Hint WHITE="\[[1;37m\]" # # default: # postgres, oracle, www-data # # PS1=$BLUE"machine]->"$NORMAL\\w"$BLUE ø $NORMAL" PS1=$BLUE"machine]:"$NORMAL\\w"$BLUE > $NORMAL" # # root, stefan: # case "$UID" in '0') PS1=$RED"machine:"$NORMAL\\w"$RED # $NORMAL" ;; '1000') PS1=$GREEN"machine:"$BLUE\\w$YELLOW" > "$NORMAL ;; # default) # ;; esac

и, например, введите его из /etc/bash.bashrc.

В качестве дополнительного инструмента для разграничения вы всегда можете редактировать свои файлы с помощью псевдонима «edit» или символической ссылки, которая указывает, в зависимости от вашей личности (taylor / www-data), на gedit или mousepad, vim или pico. Или вы можете использовать разные профили редактора, по крайней мере, в gedit вы можете настроить свои предпочтения на черный текст на белом фоне или белом тексте на черном фоне, например.

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

note: скрипт-запрос частично является копией справочной страницы bash.

1
ответ дан 3 August 2018 в 08:48
  • 1
    Это будет работать и не будет (если будет использоваться осторожно) негативно повлиять на безопасность, но не может быть самым простым решением. Это действительно приемлемое решение для некоторых людей. – thomasrutter 24 November 2016 в 03:47

На этой странице моего сайта я описываю команды для изменения разрешения в /var/www между apache и пользователем pi, но его существенное

sudo chown -R pi /var/www

, а затем перезапуск apache

sudo service apache2 restart
-1
ответ дан 3 August 2018 в 08:48

chmod в / var на www, чтобы позволить владельцу доступа, и chown, чтобы убедиться, что вы владеете им. Вероятно, глупая идея, но это определенно сработает.

1
ответ дан 5 August 2018 в 00:06
  • 1
    Не глупая идея, это разумная идея безопасности. Примечание. Вам не нужно (и не должно) изменять разрешения /var, просто /var/www и / или его содержимое. – thomasrutter 24 November 2016 в 03:43

Вместо того, чтобы хранить мои веб-сайты в / var / www, я размещаю ссылки на сайты, которые находятся в моей домашней папке. Я могу свободно редактировать или добавлять страницы на свои сайты. Когда я доволен изменениями, я передаю FTP хостинговой компании, где мое доменное имя связывается.

6
ответ дан 5 August 2018 в 00:06

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

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