Как я могу дать права на запись в папку всем пользователям Linux?

534174
Carson Myers

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

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

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

171
Это общедоступный сервер или он не имеет прямого подключения к Интернету? Если в первом случае важно учитывать решения по обеспечению безопасности, серверы в Интернете постоянно подвергаются атакам (посмотрите в / var / log / messages или в аналогичном сообщении). kwutchak 15 лет назад 0
это просто мой ноутбук, он не доступен из интернета. Carson Myers 15 лет назад 0

8 ответов на вопрос

297
jtimberman

Чтобы лучше обмениваться информацией с несколькими пользователями, у которых должна быть возможность записи /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 {} \; 

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

это довольно утомительно ... Я не могу просто предоставить пользователям доступ к нему, как если бы это была какая-то другая папка? Carson Myers 15 лет назад 2
Это * как * вы даете доступ к нему. Команды копировать и вставлять быстрее, чем пытаться перемещаться по диалоговым окнам диспетчера файлов графического интерфейса, чтобы сделать то же самое. В долгосрочной перспективе это поможет вам, если вы прочитаете страницы руководства для chmod и chgrp, по крайней мере ("man chmod"). jtimberman 15 лет назад 9
возможно, я не понял команды при первом прочтении, и ваши изменения делают это намного более понятным. Carson Myers 15 лет назад 0
+1 за гид, чтобы заставить разрешения Apache. хорошо работает с umask 027. Если что-то требует доступа для записи, это так же просто, как chmod g + w dir / LiraNuna 15 лет назад 1
Просто хотел присоединиться и сказать, что это потрясающий совет, который очень лаконичен и прост, чтобы следовать, объясняя все, что вам нужно знать. Хорошо сказано. Проголосовал и пометил для будущего использования. :) Michael B 12 лет назад 0
@jtimberman Похоже, что последние 2 cmds должны выполняться только один раз. Как сделать это идемпотентом у шеф-повара? На самом деле я использую эти шаги в шеф-повара! Autodidact 12 лет назад 0
Помог мне больше всего на свете. Благодарю. Brad F Jacobs 11 лет назад 0
Вы можете добавить, что для того, чтобы изменения вступили в силу, вам необходимо перезагрузить назначения групп пользователей, возможно, лучше перезагрузить систему, если это удобно для вас. JorgeArtware 10 лет назад 0
Почему ваша группа разрешает команду `sudo chmod -R g + w`, а не` g + rw` или `g + rwX`? detly 10 лет назад 1
+1 для выхода и входа снова; это сработало сразу после того, как я это сделал. Спасибо Filip Luchianenco 7 лет назад 0
26
Krishna Modi

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

sudo chmod -R 757 /var/www 

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

Не могли бы вы дать некоторое представление о том, что команда делает для OP? n0pe 13 лет назад 3
-1 из-за отсутствия объяснения. Кроме того, `chmod $ permissions -R $ file` недействителен… Blacklight Shining 11 лет назад 10
это параметры, то разрешения, а не наоборот Moataz Elmasry 10 лет назад 1
`sudo chmod -R 757 / var / www` Bwyss 8 лет назад 2
Пожалуйста, кто-нибудь опытный предложить редактирование с кратким объяснением об этом Adi Prasetyo 6 лет назад 0
Будьте осторожны: это действительно предоставляет доступ * всем * в системе, что может быть опасно. (Я знаю, что об этом спрашивали, но в большинстве случаев это не то, что вы действительно хотите.) Marian 6 лет назад 0
23
paivaric

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

sudo chmod -R a+rw /var/www 

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

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

Вы также можете повторить то, что предложил 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, чтобы увидеть значения по умолчанию.

Это лучший ответ! Жаль, что я не мог проголосовать больше, чем один раз. Tim Duncklee 7 лет назад 0
2
user1138

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

а. Добавьте ( -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
Arda

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

chmod g+w /folder/ -R 

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

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

-3
stalepretzel

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

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

так зачем предлагать это как решение, а потом сразу дискредитировать? -1 голос Tisch 8 лет назад 0
-4
marimuthu

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

chmod -R 777 foldername chown username:username foldername  
Вау, это плохо! Вы не даете 777 с -R - особенно если человек, задающий вопрос, является новичком и не понимает рисков. recluze 12 лет назад 7
Достаточно верно @recluze. vgoff 11 лет назад 0

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