Команда Wget Linux загружает файлы с разрешениями на чтение только для пользователей sudo - как дать разрешения на чтение всем пользователям? - PullRequest
0 голосов
/ 06 октября 2018

Я использую Ubuntu 16.04 и программирую на PHP.Вот моя проблема:

У меня есть необходимость использовать команду wget linux для загрузки всех файлов с веб-сайта.Поэтому для выполнения команды я использую функцию PHP shell_exec():

$wgetCommand = "wget  --recursive  --page-requisites  --convert-links  $url  2>&1";
$wgetCommandOutput = shell_exec($wgetCommand);

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

Но если я сделаю что-то вроде sudo chmod 777 -R path/to/downloaded/website/directory после того, как они загружены с помощью команды wget и до того, как они будут прочитаны программно, они будут прочитаны просто отлично, и все работает.

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

1 Ответ

0 голосов
/ 06 октября 2018

Это звучит как проблема с umask для пользователя, выполняющего скрипт PHP.

Обычно Ubuntu имеет значение umask по умолчанию 0002. Это создаст файл с (-rw-rw-r--).

С консоли вы можете проверить и установить umask для пользователя PHP с помощью:

$umask

А внутри сценария PHP выполните

<?php
    umask()

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

<?php
    chmod()

Причина в том, что umask обрабатывает создание файлов для всех файлов, а не тольковаш сценарий.

...