Я использую веб-сервер и FTP-сервер, где /var/www
связан с /home/user/www
.
Я установил обе директории на chmod 777
(что хорошо, так как только для тестирования).
Я могу загружать файлы в /home/user/www
, но всякий раз, когда я создаю новый каталог, мне всегда нужно запустить chmod 777
для этой папки.
В противном случае, когда я пытаюсь просмотреть его, я получаю сообщение об ошибке
У вас нет прав доступа / test / на этом сервере.
blockquote>Можно ли как-нибудь сделать все подпапки внутри
/var/www
доступными для всех? Или их разрешения могут быть автоматически установлены на777
? Раздражает, что мне приходится каждый раз печататьchmod 777
.
Если вы хотите скопировать разрешения и / или права собственности из другого файла, который вас устраивает, вы можете сделать это с помощью sudo chmod --reference = path / to / file / to / reference путь / к / файлу / вы / хотите / к / изменить / разрешение / на
И вы можете сделать то же самое для владения файлом.
Это плохая практика, но, надеюсь, вы просто используете это для разработки, или у вас есть другая веская причина. Вы можете указать разрешения при создании каталога с помощью параметра -m
:
mkdir -m 777 dirname
Или вы можете установить разрешения рекурсивно.
sudo chmod -R 777 /var/www
Перед тем, как использовать любой из них, действительно подумайте, хотите ли вы, чтобы ваша файловая система будь таким доступным.
Изменить: Как упоминал Ринзвинд, это лучший способ добиться того, чего вы хотите.
Проверьте, какой группе принадлежит ваш каталог / var / www
, и добавьте своего пользователя в эту группу.
sudo adduser yourusername group
Вероятно, это www-data
.
Тогда вы будете согласитесь, установив для ваших разрешений значение 775.
Объявление общественной службы:
Это серьезная угроза безопасности, если вы запускаете какие-либо общедоступные службы, особенно веб-приложения (например, PHP).
Модель безопасности ОС предполагает, что многие службы (например, ваш веб-сервер) работают с ограниченными привилегиями, чтобы они не могли изменять файлы. Установка 777 для файлов нарушает эту схему.
Удаленный пользователь может записывать или загружать файлы, а затем обманом заставить сервер (или какой-либо другой процесс в вашей системе) прочитать или выполнить их. Скрипты или программное обеспечение могут иметь недостатки, позволяющие это сделать. Очень сложно заблокировать каждый способ, которым это могло произойти, если есть каталоги с доступом для записи всем.
Используется в определенных системных каталогах (/ usr, / etc, / var и т.д.), он может неожиданно сломать вашу систему.
Некоторым важным системным файлам для запуска требуются специальные разрешения, такие как разрешения setuid / setgid. Например, sudo. Избегайте изменения каких-либо разрешений на файлы для каталогов и файлов, настроенных самой системой.
Невозможно отменить это и вернуть все старые разрешения.
То есть, если у вас были файлы и папки с различными разрешениями до , нет способа вернуться к этим конкретным разрешениям - только для того, чтобы изменить их все на одно и то же, что может привести к потере любых определенных настроек разрешений, которые были необходимы для определенных файлов.
Всегда есть более подходящий способ достижения того, что он
В этом случае, похоже, вы хотите, чтобы ваш веб-сервер мог только читать каталог. Предоставление разрешения на запись во всем мире - это гораздо больше, чем вам нужно.
Выясните, почему веб-сервер не может прочитать этот каталог (подсказка: вероятно, это потому, что ваш домашний каталог не доступен для чтения всем. Доступность для чтения намного безопаснее, чем доступ для записи для всего мира - установите для своего домашнего каталога что-то вроде 755, или переместите этот www-каталог за пределы вашего дома в другое место, например / var / www или /srv).
cd /var/www
find -type d ! -perm 777 -exec chmod 777 {} \;
для ftp, создающего все файлы с разными разрешениями, вы можете посмотреть umask ftpd, как запускается этот демон
Взгляните на этот сайт https://linuxaria.com/article/linux-shell-understanding-umask-with-примеры
Это не работает для меня.
sudo chmod -f 777 /path/to/your/file/or/directory
Я также должен использовать -f
.
sudo chmod -R -f 777 /path/to/your/file/or/directory
Файлы и каталоги в Unix могут иметь три типа разрешений: чтение ( r
), запись ( w
) и выполнение ( x
). Каждое разрешение может быть на
или отключено
для каждой из трех категорий пользователей: владелец файла или каталога; другие люди в той же группе, что и владелец; и все остальные.
Чтобы изменить режим файла, используйте команду chmod. Общая форма
chmod X @ Y file1 file2 ...
chmod a-w file (removes all writing permissions)
chmod o+x file (sets execute permissions for other (public permissions))
chmod u=rx file (Give the owner rx permissions, not w)
chmod go-rwx file (Deny rwx permission for group, others)
chmod g+w file (Give write permission to the group)
chmod a+x file1 file2 (Give execute permission to everybody)
chmod g+rx,o+x file (OK to combine like this with a comma)
u = user that owns the file
g = group that owns the file
o = other (everyone else)
a = all (everybody)
r = read aces to the file
w = write access
x = execute (run) access