Que configurações CHMOD para impedir que os usuários visualizem o diretório?

3

Eu tenho um diretório "includes" com o qual meu servidor da Web deve interagir totalmente, mas não quero que os usuários possam ver seu conteúdo.

    
por 3 revs, 2 users 67%anon 02.07.2009 / 22:21

9 respostas

4

Permissões no linux (que é o que eu suponho que você está usando) estão na ordem:

uuu|ggg|ooo
rwx|rwx|rwx

U sendo usuário, o proprietário do arquivo. Sendo o acesso de grupo para um grupo específico, e O é outro.

Se os usuários não estiverem em um grupo que possa acessá-lo e eles não forem os proprietários do diretório, eles ficarão na categoria outros, portanto, você só precisará modificar os três últimos campos.

maneira mais simples de fazer isso:

chmod dir o-r

ou

chmod dir 770

O 770 dará ao proprietário e ao grupo acesso total, mas terá acesso a partir dos "outros". É inútil dar-lhes acesso de escrita e execução, embora se eles não podem lê-lo (necessário para ver o conteúdo), assim você pode também usar 770 chmod em oposição a 776 ou algo semelhante.

    
por 03.07.2009 / 01:38
1

Você precisará localizar o usuário ou grupo do seu servidor da Web como e, em seguida, chown do diretório para esse usuário e / ou grupo e, em seguida,

chmod -R 660 directory

ou algo similar.

Isso pressupõe que você quer dizer usuários locais :) se você quer dizer usuários da web, então você deve ter em mente que usuários anônimos da web têm exatamente as mesmas permissões que seu servidor web, necessariamente.

    
por 02.07.2009 / 21:30
1

Você provavelmente deseja usar um arquivo htaccess para limitar a permissão de visualização dessa pasta, mas leia a documentação do Apache sobre o assunto para outras alternativas melhores.

    
por 02.07.2009 / 21:31
0

Coloque o diretório includes fora do diretório-raiz do seu site. Você não o deseja em seu diretório de conteúdo, pois o servidor da Web pode, então, veiculá-lo para os usuários do site. Portanto, se a raiz do seu site for /var/www/html , crie um diretório paralelo /var/www/includes .

chmod não fará o que você deseja, pois o processo httpd é o que acessará todos os seus arquivos, não as contas reais do shell. Você pode restringir o acesso usando .htaccess , mas essa é uma solução inferior para simplesmente mover seu diretório includes para fora da área de conteúdo.

    
por 02.07.2009 / 21:34
0

@jeremy (já que não tenho o representante para comentar sua resposta): Você não quer chmod 660 um diretório, porque isso dará ao proprietário e ao grupo permissão negada erros e / ou saída estranha.

por exemplo, '

ls -l testingjunk
ls: cannot access testingjunk/something: Permission denied

total 0

-????????? ? ? ? ? ? something

Esqueci de mostrar essa parte.

ls -ld testingjunk [16:32]
drw-rw---- 2 wjenkin2 itstaff 4096 2009-07-02 16:30 testingjunk/

'

    
por 02.07.2009 / 22:34
0

Supondo que você deseja que os processos do servidor da Web possam ler e gravar arquivos no (mas não disponibilizar conteúdo) o diretório, você deseja

  • crie um diretório fora da raiz do documento
  • altere a propriedade desse diretório para o usuário e agrupe seu servidor da Web como
  • altere o modo deste diretório para 0700

Se o seu servidor da Web for executado como ninguém (um usuário não privilegiado em que algumas distribuições executam vários processos do servidor), lembre-se de que outros processos executados como esse usuário também podem ser obtidos no diretório. Se isso for um problema, você pode querer criar um usuário dedicado para o seu servidor web. Isso implicará a alteração da configuração do servidor da web e / ou dos scripts de inicialização, além da criação do usuário e do grupo.

Como estou recomendando o modo 0700, o grupo tecnicamente não é importante, mas é preciso lembrar que o servidor da Web pode criar arquivos com permissões mais amplas (664 ou 775) dentro desse diretório se o umask do usuário do servidor da Web é definido como 002 em vez do 022 mais comum. Um grupo dedicado garantirá que tais arquivos não sejam inadvertidamente abertos para gravações de outros membros de um grupo compartilhado nos quais você possa colocar o usuário do servidor da Web.

    
por 02.07.2009 / 23:14
0

Verifique se o seu servidor da web é executado como um usuário com permissões limitadas e com um grupo restrito como seu grupo. Em seguida, certifique-se de que os arquivos sejam acessíveis apenas pelo usuário e / ou grupo, removendo o acesso público de leitura e execução (acesso de gravação público quase nunca deve ser concedido).

Aqueles que mantêm o site também precisam de acesso ao material - de preferência, não exercendo privilégios de superusuário. Isso pode alterar a maneira como você faz as coisas.

Considere se as ACLs são apropriadas - elas permitiriam que você fornecesse ao grupo de servidores da Web acesso de leitura aos arquivos, o grupo de manutenção com acesso de leitura e gravação e ainda negasse o acesso público geral. Sem as ACLs, você só pode ter um conjunto de privilégios de grupo.

    
por 03.07.2009 / 07:25
0

Se você remover os privilégios de leitura, eles não poderão ver quais arquivos estão lá. (Se você remover privilégios execute , eles não poderão fazer o cd para isso.)

    
por 03.07.2009 / 07:54
-3

O bit 'x' (executar) em um diretório no Linux / Unix é aquele que controla se você pode listar o conteúdo dele.

    
por 02.07.2009 / 21:29

Tags