Por que não consigo acessar este diretório depois que eu uso o comando chown?

2

Eu não sou assim no Linux e tenho o seguinte problema.

Instalei um ambiente LAMP de um sistema Ubuntu Linux dedicado ao desenvolvimento (ele está no meu PC e não é um servidor de produção).

Então, eu estou tentando definir o / var / www como o espaço de trabalho do Aptana (o IDE que eu uso para desenvolvimento PHP), mas não posso fazê-lo porque não tenho permissão para escrever neste diretório (acho que é meu usuário logado que não tem essa permissão).

Então eu fiz:

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

Então:

  1. Primeiro, defino meu usuário (chamado andrea ) como o proprietário do diretório / var / www / (para que ele possa escrever para este diretório) e atribui o grupo www-data .

  2. Em seguida, defino esse diretório com g + s para que todos os novos arquivos criados no diretório tenham seu grupo configurado para o grupo do diretório.

O problema é que, quando tento acessar o diretório / var / www / , obtenho uma mensagem de erro permissão negada , algo assim:

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

O texto está em italiano e significa: impossível abrir o diretório: acesso negado

Por quê? o que estou perdendo? Como posso resolver este problema?

EDIT-1: Esta é a saída do comando 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
    
por AndreaNobili 27.04.2015 / 15:32

3 respostas

3

Se você tiver a permissão executar sem ler em um diretório, poderá incluí-lo em um caminho, mas não poderá ver seu conteúdo, portanto, se estiver em /var/www você pode, por exemplo, ver o conteúdo do subdiretório html com ls html , mesmo que você não consiga ver html com um simples ls . Você precisa executar:

sudo chmod uga+r /var/www

É possível que você não precise de sudo : você certamente pode experimentar sem antes.

    
por 27.04.2015 / 16:22
2

Não é uma diferença do Ubuntu, é como funcionam as permissões do Linux. A permissão Execute (x) é para acessar o diretório, a permissão Read (r) é para listar seu conteúdo.

De este artigo na Wikipedia , que eu recomendo que você leia tudo:

When set for a directory, this permission [executes] grants the ability to access file contents and meta-information if its name is known, but not list files inside the directory, unless read is set also.

também

When set for a directory, this permission [read] grants the ability to read the names of files in the directory, but not to find out any further information about them such as contents, file type, size, ownership, permissions.

    
por 27.04.2015 / 16:46
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 .

Para o usuário andrea:
    (w) Escrever direitos
    (x) permitido para cd para a pasta.
    Não (r) foi definido na pasta atual, portanto você não tem permissão para listar seu conteúdo. É por isso que o ls irá falhar.

Os mesmos direitos são definidos no grupo e em outros (não é possível)

    
por 27.04.2015 / 16:26