Я хочу прекратить использовать sudo каждый раз, когда я работаю в /var/www. Как я могу это сделать? Я просто хочу поместить все мои сайты в этот каталог и работать с ними без особых проблем.
Большинство ответов здесь не написаны с учетом безопасности. Приятно чувствовать, что запуск 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 нуждается в разрешениях на запись, - это каталоги, хранящие закачки и другие места, которые необходимо записать.
Добавьте себя в группу 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, которые должны быть доступны для записи на веб-сервере)
Создайте символическую ссылку для каждого проекта в свой домашний каталог. Скажите, что ваш проект находится в ~/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.
Большинство ответов здесь не написаны с учетом безопасности. Приятно чувствовать, что запуск 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 нуждается в разрешениях на запись, - это каталоги, хранящие закачки и другие места, которые необходимо записать.
Добавьте себя в группу 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, которые должны быть доступны для записи на веб-сервере)
Создайте символическую ссылку для каждого проекта в свой домашний каталог. Скажите, что ваш проект находится в ~/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.
Большинство ответов здесь не написаны с учетом безопасности. Приятно чувствовать, что запуск 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.
blockquote>По возможности не предоставляйте разрешения на запись в группу
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
.См. также
Большинство ответов здесь не написаны с учетом безопасности. Приятно чувствовать, что запуск 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.
blockquote>По возможности не предоставляйте разрешения на запись в группу
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
.См. также
Большинство ответов здесь не написаны с учетом безопасности. Приятно чувствовать, что запуск 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.
blockquote>По возможности не предоставляйте разрешения на запись в группу
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
.См. также
Большинство ответов здесь не написаны с учетом безопасности. Приятно чувствовать, что запуск 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.
blockquote>По возможности не предоставляйте разрешения на запись в группу
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
.См. также
Большинство ответов здесь не написаны с учетом безопасности. Приятно чувствовать, что запуск 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.
blockquote>По возможности не предоставляйте разрешения на запись в группу
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
.См. также
Большинство ответов здесь не написаны с учетом безопасности. Приятно чувствовать, что запуск 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.
blockquote>По возможности не предоставляйте разрешения на запись в группу
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
.См. также
Большинство ответов здесь не написаны с учетом безопасности. Приятно чувствовать, что запуск 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.
blockquote>По возможности не предоставляйте разрешения на запись в группу
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
.См. также
sudo su www-data
? В сочетании с по-разному цветным приглашением, чтобы сделать его более очевидным, что это оболочка другого пользователя, и политика всегда ставить соответствующий xterm на - например - виртуальный рабочий стол 4, чтобы вы привыкли к нему, чтобы Во избежание путаницы?
– user unknown
1 June 2011 в 20:18
gedit
. Я никогда не исследовал, безопасен ли запуск программы GUI под другим пользователем в текущем сеансе или нет, это был бы интересный вопрос.
– Lekensteyn
1 June 2011 в 20:26
setfacl -d u :: rwX, g :: rX / var / www
имеет забавный эффект, что режим по умолчанию становится 0750 (или 0640), даже если umask равен нулю. Это может быть хорошей идеей, если вы хотите избежать файлов, доступных в мире, но если / var / www
уже недоступен миру, он не нужен.
– Lekensteyn
16 February 2016 в 14:38
chmod в / var на www, чтобы позволить владельцу доступа, и chown, чтобы убедиться, что вы владеете им. Вероятно, глупая идея, но это определенно сработает.
Вместо того, чтобы хранить мои веб-сайты в / var / www, я размещаю ссылки на сайты, которые находятся в моей домашней папке. Я могу свободно редактировать или добавлять страницы на свои сайты. Когда я доволен изменениями, я передаю FTP хостинговой компании, где мое доменное имя связывается.
Если вы создаете / 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.
Это просто. Вам не нужно включать 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:)
Не устанавливать права доступа к файлам 777 (world- доступно для записи)
Если /var/www не имеет смысла, вы можете разместить их в другом месте. Если они специфичны для вашей собственной разработки или тестирования, вы можете разместить их в своем домашнем каталоге. Или вы можете настроить некоторые каталоги в /srv. Не добавляйте себя как член группы www-data и дайте ему права на запись. Цель этой группы заключается в том, что она является непривилегированной группой, которую сервер обрабатывает как. Они должны иметь доступ только к файлам веб-сайта, где это возможно, по тем же причинам, что и выше.Вы можете запустить 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.
На этой странице моего сайта я описываю команды для изменения разрешения в /var/www между apache и пользователем pi, но его существенное
sudo chown -R pi /var/www
, а затем перезапуск apache
sudo service apache2 restart
chmod в / var на www, чтобы позволить владельцу доступа, и chown, чтобы убедиться, что вы владеете им. Вероятно, глупая идея, но это определенно сработает.
Вместо того, чтобы хранить мои веб-сайты в / var / www, я размещаю ссылки на сайты, которые находятся в моей домашней папке. Я могу свободно редактировать или добавлять страницы на свои сайты. Когда я доволен изменениями, я передаю FTP хостинговой компании, где мое доменное имя связывается.
Если вы создаете / 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.
Это просто. Вам не нужно включать 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:)
Не устанавливать права доступа к файлам 777 (world- доступно для записи)
Если /var/www не имеет смысла, вы можете разместить их в другом месте. Если они специфичны для вашей собственной разработки или тестирования, вы можете разместить их в своем домашнем каталоге. Или вы можете настроить некоторые каталоги в /srv. Не добавляйте себя как член группы www-data и дайте ему права на запись. Цель этой группы заключается в том, что она является непривилегированной группой, которую сервер обрабатывает как. Они должны иметь доступ только к файлам веб-сайта, где это возможно, по тем же причинам, что и выше.Вы можете запустить 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.
На этой странице моего сайта я описываю команды для изменения разрешения в /var/www между apache и пользователем pi, но его существенное
sudo chown -R pi /var/www
, а затем перезапуск apache
sudo service apache2 restart
chmod в / var на www, чтобы позволить владельцу доступа, и chown, чтобы убедиться, что вы владеете им. Вероятно, глупая идея, но это определенно сработает.
На этой странице моего сайта Я описываю команды для изменения разрешения в / var / www
между apache и пользователем pi, но его существенное
sudo chown -R pi / var / www
, затем перезапуск apache
sudo service apache2 restart
Вы можете запустить www-сеанс в терминале с помощью
sudo su www-data
В сочетании с приглашением по-разному цвета *, чтобы сделать более очевидно, что это оболочка другого пользователя, и политика всегда ставит соответствующий xterm (и редактор и т. д.) на, например, - виртуальный рабочий стол 4, чтобы вы привыкли к нему, чтобы избежать путаницы.
*) Для разного цвета приглашения с отличающимся символом создайте файл / etc / prompt следующим образом:
# PROMPTING # При интерактивном запуске bash отображает основной подскажите PS1, когда он готов прочитать команду, и второе приглашение PS2, когда ему нужно больше ввода для завершения команды. Bash позволяет настраивать эти строки для приглашений #, вставляя несколько специальных символов с обратным слэшем, которые декодируются следующим образом: # \ a символ колокола ASCII (07) # \ d дата в формате «День недели» (например, «В мае 26») # \ D {format} # формат передается в strftime (3), и результат вставляется в строку приглашения; пустой формат # приводит к представлению времени, специфичному для локали. Скобки необходимы # \ e ASCII escape-символ (033) # \ h имя хоста до первого `. ' # \ H имя хоста # \ j количество заданий, которыми в настоящее время управляет оболочка # \ l базовое имя имени терминального устройства оболочки # \n newline # \r return return # \ s имя оболочки, базовое имя $ 0 (часть после последней косой черты) # \ t текущее время в 24-часовом формате HH: MM: SS # \ T текущее время в 12-часовом формате HH: MM: SS # \ @ текущее время в 12-часовом формате am / pm format # \ A текущее время в 24-часовом формате HH: MM # \ u имя пользователя текущего пользователя # \ v версия bash (например, 2.00) # \ V выпуск bash, версия + patchelvel (например, 2.00.0) # \ w текущий рабочий каталог # \ W базовое имя текущего рабочего каталога # \! номер истории этой команды # \ # номер команды этой команды # \ $, если эффективный UID равен 0, a #, в противном случае $ # \nnn символ, соответствующий восьмеричному номеру nnn # \\ a обратная косая черта # \ [ начните последовательность непечатаемых символов, которые могут быть использованы для встраивания последовательности управления терминалом # в приглашение # \] для завершения последовательности непечатаемых символов # # Номер команды и номер истории обычно различаются: номер истории команды - это его позиция в # списке истории, которая может включать в себя команды, восстановленные из файла истории (см. ИСТОРИЯ ниже), а номер команды # - это позиция в последовательности команд, выполняемых во время текущего сеанса оболочки. После строки # # 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: сообщение об ошибке или ошибке RED = "\ [[1; 31m \]" # GREEN: сообщение об успешном завершении GREEN = "\ [[1; 32m \]" # ЖЕЛТЫЙ: Описания YELLOW = "\ [[1; 33m \]" # BLUE: Системные сообщения BLUE = "\ [[1; 34m \]" # MAGENTA: найдены устройства или драйверы MAGENTA = "\ [[1; 35m \]" # CYAN: Вопросы CYAN = "\ [[1; 36m \]" # BOLD WHITE: Hint WHITE = "\ [[1; 37m \]" # # по умолчанию : # postgres, oracle, www-data # # PS1 = $ BLUE "machine] - & gt;" $ NORMAL \\ w "$ BLUE ø $ NORMAL" PS1 = $ BLUE "машина]:" $ NORMAL \\ w "$ BLUE & gt; $ NORMAL "# # root, stefan: # case" $ UID "в '0') PS1 = $ RED" machine: "$ NORMAL \\ w" $ RED # $ NORMAL ";; '1000') PS1 = $ GREEN "machine:" $ BLUE \\ w $ ЖЕЛТЫЙ "& gt;" $ NORMAL ;; # по умолчанию) # ;; esac
и, например, источник из /etc/bash.bashrc
.
В качестве дополнительного инструмента, помогающего разграничить, вы всегда можете редактировать свои файлы с помощью псевдонима «edit» или символической ссылки, которая указывает, в зависимости от вашей личности (taylor / www-data) на gedit или mousepad, vim или pico. Или вы можете использовать разные профили редактора, по крайней мере, в gedit вы можете настроить свои предпочтения на черный текст на белом фоне или белом тексте на черном фоне, например.
У меня есть такая политика для работы с правами root, поэтому я не уверен, насколько она хороша для работы с www-данными. В сочетании с ssh-сессиями для разных хостов, у которых есть свои собственные подсказки, это не мешало мне иногда ошибаться, но если это происходит, я быстро понимаю, что не так, и это происходит редко.
note: скрипт-запрос частично является копией man-страницы bash.
Все просто. Вам также не нужно включать 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:)
www-data
пользователь и группа по умолчанию, и это не должно изменяться. Это всего лишь способ не дать им права на запись в файловую систему. В определенных обстоятельствах вы хотите, чтобы ваши серверные скрипты могли записывать файлы, и в этом случае только эти файлы должны быть доступны для записи через www-data
, а уход должен & lt; ваше имя пользователя & gt;
. Вам не нужно изменять разрешения сервера для этого, так как сервер будет продолжать получать доступ только для чтения, даже если ваши файлы принадлежат вам. / var / www
не имеет смысла, вы можете разместить их в другом месте. Если они специфичны для вашей собственной разработки или тестирования, вы можете разместить их в своем домашнем каталоге. Или вы можете настроить некоторые каталоги в / srv
. Вместо того, чтобы хранить мои веб-сайты в / var / www, я размещаю ссылки на сайты, которые находятся в моей домашней папке. Я могу свободно редактировать или добавлять страницы на свои сайты. Когда я доволен изменениями, я передаю FTP хостинговой компании, где мое доменное имя связывается.
Если вы делаете / var / www записываемым по своей группе и добавляете себя в группу, вам не придется использовать sudo, будучи еще достаточно безопасным. Попробуйте следующее:
sudo adduser & lt; имя пользователя & gt; 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
.