Como posso chmod 777 todas as subpastas de / var / www?

45

Estou executando um servidor da Web e um servidor FTP, em que /var/www está vinculado a /home/user/www .

Eu defini os dois diretórios como chmod 777 (o que é bom, pois é somente para testes).

Eu posso fazer upload de arquivos para /home/user/www , mas sempre que eu criar um novo diretório, sempre tenho que executar chmod 777 nessa pasta.

Caso contrário, quando tento navegar, recebo a mensagem de erro

You don't have permission to access /test/ on this server.

Existe alguma maneira de tornar acessíveis todas as subpastas dentro de /var/www ? Ou suas permissões podem ser automaticamente definidas como 777 ? É chato ter que digitar chmod 777 todas as vezes.

    
por user1645034 03.06.2013 / 16:32

6 respostas

67

Esta é uma prática ruim, mas esperamos que você esteja apenas usando isso para o desenvolvimento, ou você tenha outro bom motivo. Você pode especificar as permissões ao criar um diretório usando a opção -m :

mkdir -m 777 dirname

Ou você pode definir as permissões recursivamente.

sudo chmod -R 777 /var/www

Antes de usar qualquer um desses, realmente considere se você quer que seu sistema de arquivos seja tão acessível.

Editar: Como mencionado por Rinzwind, aqui está uma maneira melhor de realizar o que você quer.

Verifique qual grupo possui seu diretório /var/www e adicione seu usuário a esse grupo.

sudo adduser yourusername group

O grupo provavelmente é www-data .

Então você ficará bem ao definir suas permissões para 775.

    
por dan08 03.06.2013 / 16:45
8

Arquivos e diretórios no Unix podem ter três tipos de permissões: leitura ( r ), gravação ( w ) e execução ( x ). Cada permissão pode ser on ou off para cada uma das três categorias de usuários: o proprietário do arquivo ou diretório; outras pessoas no mesmo grupo que o proprietário; e todos os outros.     Para alterar o modo de um arquivo, use o comando chmod. A forma geral é         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 
    
por Lokesh Kumar Bandi 09.08.2016 / 08:19
1
cd /var/www
find -type d ! -perm 777 -exec chmod 777 {} \;

para o ftp criar todos os arquivos com permissões diferentes, você pode querer procurar o umask do ftpd, como esse daemon é iniciado

Dê uma olhada neste site link

    
por Jose Pla 03.11.2017 / 00:46
1

Anúncio do serviço público:

Nunca use o chmod 777 para corrigir problemas

  • É um grande risco à segurança se você executar qualquer serviço disponível ao público, especialmente aplicativos da Web (por exemplo, PHP).

    O modelo de segurança do sistema operacional pressupõe que muitos serviços (como o servidor da Web) sejam executados com privilégios reduzidos, para impedir que eles modifiquem arquivos. Definir o 777 em arquivos quebra esse design.

    Um usuário remoto pode gravar ou fazer upload de arquivos e enganar o servidor (ou algum outro processo no sistema) para lê-los ou executá-los. Scripts ou software podem ter falhas que permitem isso. É muito difícil bloquear de todas as maneiras possíveis isso se houver diretórios graváveis pelo mundo.

  • Usado em certos diretórios do sistema (/ usr, / etc, / var e assim por diante), ele pode quebrar seu sistema de maneiras surpreendentes.

    Alguns arquivos de sistema essenciais precisam de permissões especiais, como as permissões setuid / setgid, para serem executadas. Por exemplo, sudo. Evite alterar qualquer permissão de arquivo nos diretórios e arquivos configurados pelo próprio sistema.

  • Não há como desfazer e recuperar todas as permissões antigas.

    Ou seja, se você tinha arquivos e pastas com várias permissões diferentes antes, não há como voltar a essas permissões específicas, apenas para alterá-las para a mesma coisa, o que pode perder as configurações de permissão específicas necessárias arquivos específicos.

  • Existe sempre uma maneira mais apropriada de alcançar o que você deseja alcançar.

Nesse caso, parece que você deseja que seu servidor da Web seja capaz de ler um diretório. Dar permissão gravável ao mundo é muito mais do que você precisa fazer.

Veja porque o servidor web não pode ler esse diretório (sugestão: é provavelmente porque o seu diretório pessoal não é legível pelo mundo. O mundo legível é muito mais seguro que o mundo gravável - configure seu diretório home para algo como 755, ou mova o www dir fora de sua casa para algum lugar como / var / www ou / srv).

    
por thomasrutter 03.11.2017 / 01:09
0

Isso não funciona para mim.

sudo chmod -f 777 /path/to/your/file/or/directory

Eu tenho que usar -f também.

sudo chmod -R -f 777 /path/to/your/file/or/directory
    
por Janaka Pushpakumara 21.12.2017 / 13:10
0

Se você deseja copiar permissões e / ou propriedade de outro arquivo com o qual está satisfeito, pode fazê-lo usando sudo chmod --reference = path / para / file / to / caminho de referência / para / file / you / want / to / change / permissino / to

E você também pode fazer o mesmo com a propriedade de arquivos.

    
por 02.07.2018 / 21:01