2

Я не очень в Linux, и у меня есть следующая проблема.

Я установил среду LAMP системы Ubuntu Linux, предназначенной для разработки (она установлена на моем ПК и не является рабочим сервером).

Поэтому я пытаюсь установить /var /www в качестве рабочей области Aptana (IDE, которую я использую для разработки PHP), но я не могу этого сделать, потому что у меня нет разрешения на запись в этот каталог (я думаю, что это мой зарегистрированный пользователь, у которого нет этого разрешения).

Итак, я сделал:

sudo chown -R andrea:www-data /var/www/
sudo chmod -R g+s /var/www/

Так:

  1. Сначала я устанавливаю своего пользователя (с именем andrea) в качестве владельца каталога /var/www/ (так что я имею в виду, что он может писать в этот каталог) и назначаю группу www-data .

  2. Затем я устанавливаю этот каталог с помощью g+s, чтобы во всех новых файлах, созданных в указанном каталоге, их группа была установлена в группу каталога.

Проблема в том, что когда я сейчас пытаюсь получить доступ к этому каталогу /var/www/, я получаю сообщение об ошибке отказа в доступе, что-то вроде этого:

andrea@andrea-virtual-machine:/var$ cd www/
andrea@andrea-virtual-machine:/var/www$ ls
ls: impossibile aprire la directory .: Permesso negato

Текст на итальянском языке и означает: невозможно открыть каталог: доступ запрещен

Зачем? Что мне не хватает? Как я могу решить эту проблему?

РЕДАКТИРОВАТЬ-1: Это вывод команды sudo ls -al /var /www :

andrea@andrea-virtual-machine:/var/www$ sudo ls -al /var/www
[sudo] password for andrea: 
totale 16
d-wx--s--x  4 andrea www-data 4096 apr 27 15:19 .
drwxr-xr-x 14 root   root     4096 apr 27 11:53 ..
drwxr-sr-x  2 andrea www-data 4096 apr 27 12:08 html
drwxrwsr-x  3 andrea www-data 4096 apr 27 15:20 .metadata

3 ответа3

3

Если вы выполняли без разрешения на чтение в каталоге, вы можете включить его в путь, но вы не можете увидеть его содержимое, поэтому, если вы находитесь в /var/www вы можете, например, просмотреть содержимое подкаталога html с помощью ls html , даже если вы не можете увидеть html с простым ls . Вам нужно запустить:

sudo chmod uga+r /var/www

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

2

Это не различие Ubuntu, это то, как работают разрешения Linux. Разрешение Execute (x) - доступ к каталогу, разрешение Read (r) - просмотр его содержимого.

Из этой статьи в Википедии, которую я рекомендую вам прочитать всем:

Когда установлено для каталога, это разрешение [выполняет] предоставляет возможность доступа к содержимому файла и мета-информации, если известно его имя, но не к списку файлов внутри каталога, если также не установлено чтение.

также

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

1
andrea@andrea-virtual-machine:/var/www$ sudo ls -al /var/www
d-wx--s--x  4 andrea www-data 4096 apr 27 15:19 .

Для пользователя andrea:
(w) Права на запись
(х) разрешено перейти к папке.
В текущей папке не было задано (r), поэтому вы не можете просматривать ее содержимое. Вот почему LS потерпит неудачу.

Те же самые права установлены для группы и для других (тоже нет)

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