176

Я установил apache2 на Ubuntu только сейчас и заметил, что папка /var /www защищена. Я могу просто sudo все, но я бы предпочел просто дать ему доступ для записи.

Как я могу это сделать?

Я попробовал sudo chmod 7777 /var/www но это не сработало.

8 ответов8

306

Чтобы лучше поделиться с несколькими пользователями, которые должны иметь возможность писать в /var/www , ему должна быть назначена общая группа. Например, группой по умолчанию для веб-контента в Ubuntu и Debian является www-data . Убедитесь, что все пользователи, которым нужен доступ для записи в /var/www входят в эту группу.

sudo usermod -a -G www-data <some_user>

Затем установите правильные разрешения на /var /www.

sudo chgrp -R www-data /var/www
sudo chmod -R g+w /var/www

Кроме того, вы должны сделать каталог и все каталоги под ним "установить GID", чтобы все новые файлы и каталоги, созданные в /var/www , принадлежали группе www-data .

sudo find /var/www -type d -exec chmod 2775 {} \;    

Найдите все файлы в /var/www и добавьте права на чтение и запись для владельца и группы:

sudo find /var/www -type f -exec chmod ug+rw {} \;

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

30

Есть более простой способ сделать это, попробуйте выполнить эту команду.

sudo chmod -R 757 /var/www

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

24

Чтение + запись:

sudo chmod -R a+rw /var/www

Чтение + запись + Execute:

sudo chmod -R a+rwx /var/www
7

Вы также можете повторить то, что предложил jtimberman, используя списки контроля доступа. Команда setfacl принимает -s для замены существующего ACL или -m для его изменения; -R сделать рекурсивные списки ACL; и -d сделать указанные настройки настройками по умолчанию, что полезно, если вы ожидаете появления новых учетных записей пользователей.

Они просто устанавливают права доступа, как и для пользователя, группы, других и маски, используя chmod:

setfacl -m u::rwx, g::r-x, o::---, m:rwx DIRECTORY

И это может быть, как вы сделали бы это для указанного пользователя или его / ее группы:

setfacl -m u:USERNAME:rwx, g:USERNAME:r-x DIRECTORY

И, конечно, сила в том, что вы можете назначить любого конкретного пользователя, нескольких пользователей и т.д., И все это без необходимости изменять настройки вашей группы. И в отличие от chmod, если вы хотите, чтобы некоторые поклонники имели доступ к одному каталогу, а другие поклонники имели доступ только к другому, это фактически возможно с помощью setfacl. Наконец, чтобы просмотреть ACL каталога, запустите getfacl:

getfacl DIRECTORY

И вы можете указать -R, чтобы увидеть ACL для подкаталогов, или -d, чтобы увидеть значения по умолчанию.

2

Быстрый и простой ответ -

а. Добавьте (-a) вашего пользователя (user_name) в группу (-G) www-data.

sudo usermod -a -G www-data user_name

б. Дайте Группе (g) те же (=) разрешения, что и для Пользователя-пользователя (u) из /var/www Recursive (-R).

sudo chmod -R g=u /var/www

Объяснение: Apache 2 в Debian/Ubuntu устанавливает www-данные пользователя и группы как владельца /var/www. Разрешения по умолчанию для пользователя - "Просмотр и изменение содержимого", однако Группа может только "Просмотр содержимого". Поэтому добавление себя в группу www-data и предоставление ей тех же прав, что и для пользователя wwww-data, - это быстрый и простой способ начать разработку. Я делаю это для всех моих локальных (ПК / ноутбуков) сред веб-разработки.

1

Я обычно использую

chmod g+w /folder/ -R

Это почти самоочевидно.

Он добавляет все в g Роапе из /folder/ иметь w обрядовую доступа +w -R для рекурсии для вложенных папок.

-3

Вы можете просто попробовать chmod 0777 /var/www ?

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

-4

Сначала вы вводите конкретный путь к папке, затем с помощью этой команды ...

chmod -R 777 foldername
chown username:username foldername 

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .