Что такое нормальный chmod?

На моем веб-сервере мои права доступа к файлам повсюду, и я хочу «сбросить» все обратно в исходное состояние. Я не хочу, чтобы какие-либо пользователи могли зайти и удалить что-то с моего веб-сервера! Я просто хочу, чтобы они могли просматривать php-страницы и т.д.

Какой chmod мне использовать?


person Community    schedule 29.03.2009    source источник
comment
chmod предназначен только для локальных пользователей системы, однако веб-сервер использует его для проверки того, есть ли у «других» разрешения на чтение (для файлов) или выполнение (для cgi), если у них нет, веб-сервер вернет 403 запрещено.   -  person Zaffy    schedule 09.08.2012


Ответы (6)


Вот сводка, которую я собрал

  • chmod все файлы на 644
  • chmod все файлы .htaccess на 644
  • chmod все файлы robots.txt на 644
  • chmod все каталоги на 711
  • chmod все каталоги с списком каталогов (параметры .htaccess + индексы) на 755
  • chmod все каталоги, в которые пользователи могут загружать файлы, на 755 (например, /uploads/).

Пояснения:

  • 644 means:
    • 6: the owner of the file/directory can read and write, but not execute. Since files are not executable, you don't need to have "x" rights here (6 means r+w. 7 means r+w+x).
    • 44: группа, к которой принадлежит файл/каталог (см. группу с помощью ls -l), и все остальные (общедоступные) могут читать файл, но не выполнять и не записывать в него (разрешение номер 4).
  • 711 means:
    • 7: the owner of the file/directory can read, write, and execute. This is needed for directories! Without "execute" when you try to list the directory you'll get permission denied.
    • 11: группа, к которой принадлежит файл/каталог, и общедоступный имеют только права выполнения. Это подходит для каталогов, в которых вы не хотите, чтобы другие люди просматривали содержимое, но хотите предоставить им доступ к выбранным файлам дальше по каталогу.
  • 755 means:
    • 7: the owner of the file/directory can read, write, and execute.
    • 55: группа, к которой принадлежит файл/каталог, и общедоступная имеют разрешения чтение и выполнение, но не запись . Это позволяет пользователям видеть, какие файлы находятся в каталоге, и читать эти файлы, но не изменять их.

Существует также интерактивный онлайн-калькулятор, с помощью которого можно определить, какие разрешения использовать: https://chmod-calculator.com/< /а>

person Katie    schedule 11.03.2015

Они должны быть максимально ограничительными, но не более того.

Обычно 0644 является хорошим выбором, который дает владельцу права на чтение и запись, но все остальные только читают. 0755 для каталогов. Но это может зависеть от конкретных настроек вашей системы.

person carl    schedule 29.03.2009
comment
Идентификатор 644 будет работать для страниц PHP, упомянутых в вопросе, или им также потребуется установить исполняемый бит? Может ли это зависеть от веб-сервера и его настройки? - person Steve Jessop; 30.03.2009
comment
Нет, если вы не делаете что-то действительно сумасшедшее, вам не нужен исполняемый бит, установленный для страниц PHP. Исполняемый бит позволяет выполнять двоичные файлы, а исходный код PHP не является исполняемым двоичным файлом. - person carl; 30.03.2009

Если вы хотите сбросить все, выполните эту команду и разберитесь с последствиями. Обычно 644 — это хорошее разрешение для файлов, а 711 — для каталогов. Если вы разрешаете списки каталогов, используйте 755.

$ find /var/www/html \( -type f -execdir chmod 644 {} \; \) \
                  -o \( -type d -execdir chmod 711 {} \; \)

Если вы хотите что-то менее инвазивное, просто удалите биты записи для группы и «другого».

$ chmod -R go-w /var/www/html
person ashawley    schedule 29.03.2009

Я думаю, что 644 является стандартным для файлов, а 755 — для каталогов.

person Eric Conner    schedule 29.03.2009
comment
Да, это правильно для пользователей оболочки без прав суперпользователя и их собственных каталогов в /home. - person Chris Reid; 27.06.2019

Если ваш веб-сервер обслуживает только веб-страницы, не разрешая доступ через (например) анонимный FTP, то неправильные права доступа к файлам не позволяют пользователям удалять файлы.

Если другие люди имеют доступ к вашему серверу с помощью других средств (например, SSH), убедитесь, что бит записи не установлен для других пользователей, кроме вас. Выполнять:

find . -exec chmod go-w {} \;

Эта команда ограничит права доступа ко всем файлам и каталогам, в которых она выполняется.

person Stephan202    schedule 29.03.2009
comment
Спасибо за ваш ответ, анонимный FTP не разрешен, но я не был уверен, что люди могут просто войти и удалить страницы без него. - person ; 30.03.2009

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

person Dana the Sane    schedule 29.03.2009